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
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
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?
es
dettagli(0) = 1 invece che dettagli("id") = 1

vi rigrazio in anticipo.
Ciao