fusebyte (Normal User)
Expert
Messaggi: 332
Iscritto: 24/12/2008
|
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
Codice sorgente - presumibilmente Delphi |
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
|
|
gibra (Normal User)
Pro
Messaggi: 155
Iscritto: 16/04/2009
|
|
|
fusebyte (Normal User)
Expert
Messaggi: 332
Iscritto: 24/12/2008
|
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 il 22/06/2011 alle 15:52 |
|
riddick (Normal User)
Rookie
Messaggi: 37
Iscritto: 17/06/2011
|
Teoricamente credo che tu possa inserire questi dati prima in una variabile, e poi reinserirli nel db.
|
|
gibra (Normal User)
Pro
Messaggi: 155
Iscritto: 16/04/2009
|
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...
|
|
fusebyte (Normal User)
Expert
Messaggi: 332
Iscritto: 24/12/2008
|
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
Codice sorgente - presumibilmente VB.NET |
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 il 23/06/2011 alle 5:18 |
|
gibra (Normal User)
Pro
Messaggi: 155
Iscritto: 16/04/2009
|
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...
|
|
fusebyte (Normal User)
Expert
Messaggi: 332
Iscritto: 24/12/2008
|
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 il 23/06/2011 alle 14:57 |
|
gibra (Normal User)
Pro
Messaggi: 155
Iscritto: 16/04/2009
|
Per quanto ne so su DAO (poco o niente) non mi risulta che possa leggere un database Access formato 2002/2003.
Al massimo, con il driver 3.60 di DAO puoi leggere il formato 2000.
Con ADO ed il Jet 4.0, invece, puoi leggere qualsiasi versione dalla '97 fino alla 2007/2010.
Vedi tu cosa ti conviene fare.
Fare un calderone con ADO + DAO presto o tardi la paghi (più presto che tardi), te ne accorgerai.
Tra l'altro che senso ha imparare entrambe le sintassi?
Per me nessuno.
|
|