Sub Main()
Dim cn,rs,percorsoFile
Dim IdEstrazione,TotEstrazioni,IdPartenza,Contatore
Dim DataTesto,DataSQL,Query,UltimaDataDB,UltimoID
Dim R,P,RuotaNome,CampoNome,ValEstratto
Dim PrefissiRuote,DataSpaziometriaStandard
' --- CONFIGURAZIONE ---
percorsoFile = "C:\Lottomatrix 4.6\db1.txt"
' ----------------------
PrefissiRuote = Array("", "b", "c", "f", "g", "mi", "na", "pa", "ro", "to", "ve", "", "n")
Set cn = CreateObject("ADODB.Connection")
On Error Resume Next
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & percorsoFile & ";"
If Err.Number <> 0 Then
MsgBox "Errore di connessione: " & Err.Description, vbCritical
Exit Sub
End If
On Error GoTo 0
' 1. TROVA L'ULTIMA DATA E L'ULTIMO ID MASSIMO UTILIZZATO
Set rs = CreateObject("ADODB.Recordset")
rs.Open "SELECT MAX(data), MAX(ID) FROM tabella1", cn
If Not rs.EOF Then
UltimaDataDB = rs(0)
UltimoID = rs(1)
End If
rs.Close
' Se il database è vuoto o l'ID non è valido, parte da 1
If IsNull(UltimoID) Or UltimoID = "" Then UltimoID = 0
' 2. CERCA IL PUNTO DI PARTENZA IN SPAZIOMETRIA
TotEstrazioni = EstrazioniArchivio
IdPartenza = 0
If IsDate(UltimaDataDB) Then
For IdEstrazione = TotEstrazioni To 1 Step -1
DataTesto = DataEstrazione(IdEstrazione)
DataSpaziometriaStandard = Replace(DataTesto, ".", "/")
If DateValue(DataSpaziometriaStandard) = DateValue(UltimaDataDB) Then
IdPartenza = IdEstrazione + 1
Exit For
End If
Next
End If
If IdPartenza = 0 Then IdPartenza = 1
If IdPartenza > TotEstrazioni Then
MsgBox "L'archivio di Lottomatrix è già aggiornato!", vbInformation
cn.Close
Exit Sub
End If
' 3. INSERIMENTO CON INCREMENTO PROGRESSIVO DI ID
Contatore = 0
cn.Execute "BEGIN TRANSACTION"
For IdEstrazione = IdPartenza To TotEstrazioni
' Incrementa l'ID di 1 rispetto all'ultimo record
UltimoID = UltimoID + 1
DataTesto = DataEstrazione(IdEstrazione)
DataSQL = "#" & Mid(DataTesto, 4, 2) & "/" & Left(DataTesto, 2) & "/" & Right(DataTesto, 4) & "#"
Dim Campi, Valori
Campi = "ID, data"
Valori = UltimoID & ", " & DataSQL
For R = 1 To 12
If R <> 11 Then
RuotaNome = PrefissiRuote(R)
For P = 1 To 5
ValEstratto = Estratto(IdEstrazione, R, P)
If R = 12 Then
CampoNome = RuotaNome & P
Else
CampoNome = String(P, RuotaNome)
End If
Campi = Campi & ", " & CampoNome
Valori = Valori & ", " & ValEstratto
Next
End If
Next
Query = "INSERT INTO tabella1 (" & Campi & ") VALUES (" & Valori & ")"
cn.Execute Query
Contatore = Contatore + 1
Next
cn.Execute "COMMIT TRANSACTION"
cn.Close
MsgBox "Correzione applicata! Inserite " & Contatore & " estrazioni con ID progressivo corretto.", vbInformation
End Sub