Ciao,
ho creato una procedura per caricare in un db access il dettaglio della bolletta telefonica per poi eseguire delle query:
il codice funziona senza nessun problema, ma essendo una bolletta la bellezza di 2 milioni di righe, un import risulta molto lento.
Volevo sapere se qualcuno riesce a darmi qualche consiglio per ottimizzare il codice
Ad esempio, potrebbe velocizzare l'esecuzione dello scipt indicare il campo del record da aggiornare con il valore numerico invece che con il suo nome?codice:Private Sub Command2_Click() Set conn = New ADODB.Connection conn.ConnectionString = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=C:\Documents and Settings\davide.gaulli\My Documents\autogrill\grill.mdb" conn.Open Dim linea As New ADODB.Recordset Dim dettagli As New ADODB.Recordset Dim chiamati As New ADODB.Recordset Dim presente As Boolean Dim identif As Integer Dim txfile() As String Query = "select * from linea;" linea.Open Query, conn, adOpenKeyset, adLockReadOnly Query = "select * from dettagli_traffico;" dettagli.Open Query, conn, 3, 3 Query = "select * from chiamati;" chiamati.Open Query, conn, 3, 3 Open "C:\Documents and Settings\davide.gaulli\My Documents\primobimestre.txt" For Input As #1 Do While Not EOF(1) Line Input #1, record txfile = Split(record, ";") linea.MoveFirst Do While Not linea.EOF If linea("numero") = txfile(0) Then presente = True identif = linea(0) Exit Do End If linea.MoveNext Loop If presente = True Then dettagli.AddNew dettagli("idlinea") = identif dettagli("tipologia") = txfile(3) dettagli("data-ora") = CDate(datizza((txfile(5)))) & " " & CDate(txfile(6)) dettagli("durata") = CDbl(txfile(7)) dettagli("costo") = CCur(txfile(9)) verifica = False chiamati.MoveFirst Do While Not chiamati.EOF If txfile(8) = chiamati("numero") Then verifica = True Exit Do End If chiamati.MoveNext Loop If verifica = False Then cont = cont + 1 chiamati.AddNew chiamati("idchiamato") = cont chiamati("numero") = txfile(8) chiamati.Update End If dettagli("idchiamato") = chiamati("idchiamato") dettagli.Update End If presente = False Loop Close #1 End Sub Private Function datizza(la_data As String) 'Function per ottenere la data datizza = Mid(la_data, 7, 2) & "/" & Mid(la_data, 5, 2) & "/" & Mid(la_data, 1, 4) End Function
es
dettagli(0) = 1 invece che dettagli("id") = 1
vi rigrazio in anticipo.
Ciao

Rispondi quotando

