Oppure

Loading
22/06/11 0:06
fusebyte
Devo inserire in un database MDB dei dati che ho salvati in file TXT.
Ho scelto di usare una CommonDialog per poter scegliere il file TXT e subito dopo scegliere il database MDB da usare.

Il primo passo l'ho risolto velocemente
Dim nome As String
With CommonDialog1
  .DialogTitle = "Seleziona il file da caricare"
  .Filter = "File di testo (*.txt) |*.txt| File Documento (*.doc) |*.doc|"
  .FilterIndex = 1 'scelta posizionata su TXT
  .ShowOpen
nome = .FileName
End With


ora cominciano i dolori.
Gibra mi ha consigliato, giustamente di usare ADO, ma vorrei finire il tutto usando DAO, che per questo tipo di lavoro basta e avanza e salvare il tutto
nei miei progetti.

Dopo aver aperto il file TXT, dovrei scegliere il file MDB,posso usare lo stesso codice,sostituendo solo le estensioni?

Una volta fatto questo non riesco ad importare i dati dal TXT al MDB.
Ho cercato in rete, ma devo essere un imbranato cronico,perche' non trovo
esempi di questo tipo per DAO.

Potrei avere qualche dritta o anche qualche esempio ?

x Gibra
tranquillo che usero', in futuro, ADO come mi hai consigliato ma per questo progetto DAO è sufficente.

Grazie
aaa
22/06/11 11:21
gibra

ImportText.exe Importing Text into Access with ADO/RDO/DAO/Filesys/Automation

support.microsoft.com/kb/230265/…

HTH
aaa
22/06/11 13:48
fusebyte
Ieri avevo consultato questa pagina, ho anche preso il codice e provato a farlo girare sulla mia applicazione ma non va.
Ho provato il primo esempio di codice,ma ci sono cose che non capisco ,come quei 2 file.ini e non so cosa fare.
Riguardando,forse,l 'esempio piu' adatto ,nel mio caso, è il secondo esempio?

Ciao
Ultima modifica effettuata da fusebyte 22/06/11 13:52
aaa
22/06/11 14:39
riddick
Teoricamente credo che tu possa inserire questi dati prima in una variabile, e poi reinserirli nel db.
aaa
22/06/11 15:30
gibra
Postato originariamente da fusebyte:
Ieri avevo consultato questa pagina, ho anche preso il codice e provato a farlo girare sulla mia applicazione ma non va.

Capisco...

Postato originariamente da fusebyte:
Ho provato il primo esempio di codice,ma ci sono cose che non capisco ,come quei 2 file.ini e non so cosa fare.

Capisco...

Postato originariamente da fusebyte:
Riguardando,forse,l 'esempio piu' adatto ,nel mio caso, è il secondo esempio?

Chissà... Forse... Chi può dirlo...

aaa
23/06/11 3:10
fusebyte
Basto e avanzo io a non capire:-)
sono tornato sul primo codice, ho creato un form con gli oggetti elencati nel codice stesso,modificato le variabili, cercando di assegnare correttamente il nome del database,la tabella ed i campi.

Incollo il codice da me modificato

Private Sub cmdApriTXTeMDB_Click()
Dim nome As String
Dim dbase As String
With CommonDialog1
  .DialogTitle = "Seleziona il file da caricare"
  .Filter = "File di testo (*.txt) |*.txt| File Documento (*.doc) |*.doc|"
  .FilterIndex = 1 'scelta posizionata su doc
  .ShowOpen
nome = .FileName
End With

With CommonDialog2
  .DialogTitle = "Seleziona il database"
  .Filter = "Database (*.mdb) |*.mdb| File DBF (*.dbf) |*.dbf|"
  .FilterIndex = 1 'scelta posizionata su mdb
  .ShowOpen
dbase = .FileName
End With
End Sub

Private Sub cmdInserisci_Click()
Call DAOOpenTextFileImport
End Sub

Sub DAOOpenTextFileImport()
On Error GoTo ErrHandler

lblAction.Caption = "Import Dati..."

Dim daoDB As DAO.Database
Dim strSQL As String
'dBase = daoDB
If chkCreateTbl.value = 1 Then
    DBEngine.IniPath = APP.Path & "\SchemaHeader.ini"
Else
    DBEngine.IniPath = APP.Path & "\Schema.ini"
End If

Set daoDB = OpenDatabase(APP.Path, False, False, _
                    "nomeTXT;Database=" & dbase & ";table=" & myTable) ' < qui dice var non  definita

If chkCreateTbl.value = 1 Then
    'Use this if you do not already have a table created in Access.
    'Creates and appends the data in one step.
    strSQL = "SELECT * INTO [" & myTable & "] IN '" & _
                   dbase & " '"
    strSQL = strSQL & "FROM " & nomeTXT
    daoDB.Execute strSQL
Else
    'Delete data before importing - use if necessary.
    strSQL = "DELETE FROM [" & dbase & "] IN '" & _
                    dbase & "'"
    daoDB.Execute strSQL
    'Append data to Access table.
    strSQL = "INSERT INTO [" & ECM & "] IN '" & _
                    dbase & "'"
    strSQL = strSQL & "SELECT * FROM " & dbase
    daoDB.Execute strSQL
End If

GoTo ExitSub
   
ErrHandler:
    lblAction.Caption = "DAO Import - Error."
    MsgBox "Error: " & Err.Number & vbCrLf & Err.Description
    
ExitSub:
    lblAction.Caption = "Complete!!!"
    daoDB.Close
    Set daoDB = Nothing
End Sub

Risultato ,non funziona...e come potrebbe, avro ' commesso errori su errori.
Posso avere un aiuto a sistemare il codice e farmi capire gli errori commessi?

Grazie


Ultima modifica effettuata da fusebyte 23/06/11 3:18
aaa
23/06/11 8:25
gibra
Mi spiace, ma se continui ad usare DAO io non posso aiutarti, perchè onestamente sono secoli che non lo uso più e non mi ricordo assolutamente niente.

Però, altrettanto onestamente, devo dirti che non capisco perchè sei intestardito ad usare il vecchissimo DAO quando potresti usare ADO...


aaa
23/06/11 11:30
fusebyte
Volevo tenere la routine CreaMDB cosi' come è,perche' è esattamente quello che mi serviva, non c'entrano DAO o ADO,
e sinceramente non sono capace a convertire il codice di questa routine con ADO.

Avrei una domanda da farti.

Una volta creato il DB,che lo abbia fatto con DAO o altro mi impedisce di continuare con ADO o posso usarlo ?
A me l'aiuto serve e anche molto come è palesemente palese e non vorrei rinunciare al tuo ,quindi ho pensato a questa soluzione,usare ADO per
Insert_TXT_in_MDB
Ricerca_Dati_in_MDB
Salva_Dati_in_TXT

E' possibile o ci sono conflitti?
Considera,per quello che devo fare,che il formato Access 2003 è sufficente,ma
se quello che finora ho fatto funziona senza Access il problema non si dovrebbe porre.

Ciao
Ultima modifica effettuata da fusebyte 23/06/11 12:57
aaa