Non sarà il massimo della programmazione, ma purtroppo non ho tempo di ottimizzarlo…
Ogni vettore e variabile ha un senso, ma spiegarle tutte impiegheremmo troppo tempo.
La routine postata in precedenza è quella che dove casca l'asino (cioè io…), funzionando solo con l'interazione con l'utente, sotto forma di click sul tasto OK del msgbox..
Solo così infatti, e dopo aver rilanciato il sottoprogramma stesso, il tutto funziona, ed è quello a cui non riuscendo a dare un senso, non riesco a risolvere…
Grazie mille e portate pazienza..
Luca
Private Sub Importa_Click()
On Error Resume Next
qry = "SELECT * FROM Tesserati"
qry1 = "SELECT * FROM DatiGara"
qry4 = "SELECT * FROM Classifiche"
qry8 = "SELECT * FROM Categorie"
qry9 = "SELECT * FROM Enti"
Screen.MousePointer = vbHourglass
Archivio = App.Path & "\amatorilombardia.mdb"
Set DBCorrente = OpenDatabase(Archivio)
Set TabellaDati_Generali = DBCorrente.OpenRecordset(qry, dbOpenDynaset)
Archivio1 = txtFileName.Text
Set DBEsterno = OpenDatabase(Archivio1)
Set TabellaEsternadati_generali = DBEsterno.OpenRecordset(qry, dbOpenDynaset)
If TabellaEsternadati_generali.EOF = False Then
TabellaEsternadati_generali.MoveLast
TabellaEsternadati_generali.MoveFirst
p = TabellaEsternadati_generali.RecordCount
ntessere = p
End If
ReDim Y(p, 5)
For i = 0 To p - 1
Y(i, 1) = TabellaEsternadati_generali("ID")
Y(i, 2) = TabellaEsternadati_generali("Tessera")
Y(i, 3) = ""
Y(i, 4) = "flag"
Y(i, 5) = ""
TabellaEsternadati_generali.MoveNext
Next i
If TabellaDati_Generali.EOF = True Then GoTo gj1
If TabellaDati_Generali.EOF = False Then
TabellaDati_Generali.MoveLast
TabellaDati_Generali.MoveFirst
p1 = TabellaDati_Generali.RecordCount
End If
For I1 = 0 To p1 - 1
For i = 0 To p - 1
If TabellaDati_Generali("Tessera") = Y(i, 2) Then Y(i, 4) = "": Y(i, 3) = TabellaDati_Generali("ID"): Y(i, 5) = TabellaDati_Generali("Tessera")
Next i
TabellaDati_Generali.MoveNext
Next I1
gj1:
For i = 0 To p - 1
If Y(i, 4) <> "" Then
qry2 = "SELECT * FROM Tesserati WHERE ID=" & Y(i, 1)
Set TabellaEsternadati_generali = DBEsterno.OpenRecordset(qry2, dbOpenDynaset)
TabellaDati_Generali.AddNew
TabellaDati_Generali.Fields("Tessera") = TabellaEsternadati_generali("Tessera")
TabellaDati_Generali.Fields("Ente") = TabellaEsternadati_generali("Ente")
TabellaDati_Generali.Fields("Anno") = TabellaEsternadati_generali("Anno")
TabellaDati_Generali.Fields("Cognome") = TabellaEsternadati_generali("Cognome")
TabellaDati_Generali.Fields("Nome") = TabellaEsternadati_generali("Nome")
TabellaDati_Generali.Fields("Cod Societa") = TabellaEsternadati_generali("Cod Societa")
TabellaDati_Generali.Fields("Societa") = TabellaEsternadati_generali("Societa")
TabellaDati_Generali.Fields("Sesso") = TabellaEsternadati_generali("Sesso")
Y(i, 3) = TabellaDati_Generali("ID")
Y(i, 5) = TabellaEsternadati_generali("Tessera")
TabellaDati_Generali.Update
End If
Next i
TabellaEsternadati_generali.Close
TabellaDati_Generali.Close
'****************** Inportazione tabelle iscritti e classifiche *******************
For i = 0 To ngare - 1
p = 0
If yg(i, 7) = "1" And yg(i, 6) = "Cicloturismo" Then
nomegara = yg(i, 8)
nomegara1 = yg(i, 3)
DBCorrente.Close
Call CreaTabellaGaraRando
qry6 = "SELECT * FROM " & nomegara
qry3 = "SELECT * FROM " & nomegara1
Set DBCorrente = OpenDatabase(Archivio)
Set TabellaDati_Generali = DBCorrente.OpenRecordset(qry6, dbOpenDynaset)
GoTo impo:
End If
If yg(i, 7) = "1" And yg(i, 6) = "Randonnee" Then
nomegara = yg(i, 8)
nomegara1 = yg(i, 3)
DBCorrente.Close
Call CreaTabellaGaraRando
qry6 = "SELECT * FROM " & nomegara
qry3 = "SELECT * FROM " & nomegara1
Set DBCorrente = OpenDatabase(Archivio)
Set TabellaDati_Generali = DBCorrente.OpenRecordset(qry6, dbOpenDynaset)
GoTo impo:
End If
If yg(i, 7) = "1" And yg(i, 6) = "Pista" Then
nomegara = yg(i, 8)
nomegara1 = yg(i, 3)
DBCorrente.Close
Call CreaTabellaGaraPista
qry6 = "SELECT * FROM " & nomegara
qry3 = "SELECT * FROM " & nomegara1
Set DBCorrente = OpenDatabase(Archivio)
Set TabellaDati_Generali = DBCorrente.OpenRecordset(qry6, dbOpenDynaset)
GoTo impo:
End If
If yg(i, 7) = "1" And yg(i, 6) = "Cronosquadre" Then
nomegara = yg(i, 8)
nomegara1 = yg(i, 3)
DBCorrente.Close
Call CreaTabellaGaraCronosquadre
qry6 = "SELECT * FROM " & nomegara
qry3 = "SELECT * FROM " & nomegara1
Set DBCorrente = OpenDatabase(Archivio)
Set TabellaDati_Generali = DBCorrente.OpenRecordset(qry6, dbOpenDynaset)
GoTo impo:
End If
If yg(i, 7) = "1" And yg(i, 6) <> "Pista" And yg(i, 6) <> "Cronosquadre" And yg(i, 6) <> "Cicloturismo" And yg(i, 6) <> "Randonnee" Then
nomegara = yg(i, 8)
nomegara1 = yg(i, 3)
DBCorrente.Close
Call CreaTabellaGara
qry6 = "SELECT * FROM " & nomegara
qry3 = "SELECT * FROM " & nomegara1
Set DBCorrente = OpenDatabase(Archivio)
Set TabellaDati_Generali = DBCorrente.OpenRecordset(qry6, dbOpenDynaset)
GoTo impo:
End If
If yg(i, 7) = "0" Then
nomegara = yg(i, 3)
qry6 = "SELECT * FROM " & nomegara
qry3 = "SELECT * FROM " & yg(i, 3)
Set TabellaEsternadati_generali = DBEsterno.OpenRecordset(qry3, dbOpenDynaset)
If TabellaEsternadati_generali.EOF = False Then
TabellaEsternadati_generali.MoveLast
TabellaEsternadati_generali.MoveFirst
p = TabellaEsternadati_generali.RecordCount
End If
If p = 0 Then GoTo fig
End If
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% qui crea le tabelle delle gare non ancora in archivio %%%%%%%%%%%%%%%%
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Set TabellaDati_Generali = DBCorrente.OpenRecordset(qry6, dbOpenDynaset)
If Err.Number = 3078 Then
TabellaDati_Generali.Close
DBCorrente.Close
If yg(i, 6) = "Pista" Then Call CreaTabellaGaraPista
If yg(i, 6) <> "Pista" And yg(i, 6) <> "Cronosquadre" And yg(i, 6) <> "Cicloturismo" And yg(i, 6) <> "Randonnee" Then Call CreaTabellaGara
If yg(i, 6) = "Cronosquadre" Then Call CreaTabellaGaraCronosquadre
If yg(i, 6) = "Cicloturismo" Then Call CreaTabellaGaraRando
If yg(i, 6) = "Randonnee" Then Call CreaTabellaGaraRando
Set DBCorrente = OpenDatabase(Archivio)
Set TabellaDati_Generali = DBCorrente.OpenRecordset(qry6, dbOpenDynaset)
End If
'^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
'^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ richiamo le routine di creazione per ovviare al mancato inserimento dei dati nel caso di imprtazione di una singola tabella ^^^^^^^^^^^
'^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
If yg(i, 6) = "Pista" Then Call CreaTabellaGaraPista
If yg(i, 6) <> "Pista" And yg(i, 6) <> "Cronosquadre" And yg(i, 6) <> "Cicloturismo" And yg(i, 6) <> "Randonnee" Then Call CreaTabellaGara
If yg(i, 6) = "Cronosquadre" Then Call CreaTabellaGaraCronosquadre
If yg(i, 6) = "Cicloturismo" Then Call CreaTabellaGaraRando
If yg(i, 6) = "Randonnee" Then Call CreaTabellaGaraRando
'^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
'^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
'^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
impo:
' Vettore dove sono immagazzinati i dati degli iscritti e arrivati da importare
' colonna 1 ID Iscritto da importare,colonna 2 NTesserato da importare, colonna 3 Dorsale, ,colonna 4 flag che indica se la gara va importata o meno,colonna5 nuovo ID Tesserato
ReDim yo(p, 44)
For I1 = 0 To p - 1
If yg(i, 6) = "Cicloturismo" Or yg(i, 6) = "Randonnee" Then
yo(I1, 1) = TabellaEsternadati_generali("CodSocieta")
yo(I1, 2) = TabellaEsternadati_generali("Societa")
yo(I1, 3) = TabellaEsternadati_generali("IscCorto")
yo(I1, 4) = TabellaEsternadati_generali("IscMedio")
yo(I1, 5) = TabellaEsternadati_generali("IscLungo")
yo(I1, 6) = TabellaEsternadati_generali("ArrCorto")
yo(I1, 7) = TabellaEsternadati_generali("ArrMedio")
yo(I1, 8) = TabellaEsternadati_generali("ArrLungo")
yo(I1, 9) = "Flag"
yo(I1, 10) = ""
GoTo ecco
End If
If yg(i, 6) = "Cronosquadre" Then
yo(I1, 1) = TabellaEsternadati_generali("ID")
yo(I1, 2) = TabellaEsternadati_generali("CodSocieta")
yo(I1, 3) = TabellaEsternadati_generali("Tempo")
yo(I1, 4) = TabellaEsternadati_generali("Km")
yo(I1, 5) = TabellaEsternadati_generali("Societa")
yo(I1, 6) = TabellaEsternadati_generali("Posizione")
yo(I1, 7) = TabellaEsternadati_generali("Dorsale1")
yo(I1, 8) = TabellaEsternadati_generali("Atleta1")
yo(I1, 9) = TabellaEsternadati_generali("Categoria1")
yo(I1, 10) = TabellaEsternadati_generali("Dorsale2")
yo(I1, 11) = TabellaEsternadati_generali("Atleta2")
yo(I1, 12) = TabellaEsternadati_generali("Categoria2")
yo(I1, 13) = TabellaEsternadati_generali("Dorsale3")
yo(I1, 14) = TabellaEsternadati_generali("Atleta3")
yo(I1, 15) = TabellaEsternadati_generali("Categoria3")
yo(I1, 16) = TabellaEsternadati_generali("Dorsale4")
yo(I1, 17) = TabellaEsternadati_generali("Atleta4")
yo(I1, 18) = TabellaEsternadati_generali("Categoria4")
yo(I1, 19) = TabellaEsternadati_generali("Dorsale5")
yo(I1, 20) = TabellaEsternadati_generali("Atleta5")
yo(I1, 21) = TabellaEsternadati_generali("Categoria5")
yo(I1, 22) = TabellaEsternadati_generali("Dorsale6")
yo(I1, 23) = TabellaEsternadati_generali("Atleta6")
yo(I1, 24) = TabellaEsternadati_generali("Categoria6")
yo(I1, 25) = TabellaEsternadati_generali("Dorsale7")
yo(I1, 26) = TabellaEsternadati_generali("Atleta7")
yo(I1, 27) = TabellaEsternadati_generali("Categoria7")
yo(I1, 28) = TabellaEsternadati_generali("Dorsale8")
yo(I1, 29) = TabellaEsternadati_generali("Atleta8")
yo(I1, 30) = TabellaEsternadati_generali("Categoria8")
yo(I1, 31) = TabellaEsternadati_generali("Dorsale9")
yo(I1, 32) = TabellaEsternadati_generali("Atleta9")
yo(I1, 33) = TabellaEsternadati_generali("Categoria9")
yo(I1, 34) = TabellaEsternadati_generali("Dorsale10")
yo(I1, 35) = TabellaEsternadati_generali("Atleta10")
yo(I1, 36) = TabellaEsternadati_generali("Categoria10")
yo(I1, 37) = TabellaEsternadati_generali("Fascia")
yo(I1, 38) = "flag"
yo(I1, 39) = TabellaEsternadati_generali("OraPartenza")
yo(I1, 40) = TabellaEsternadati_generali("OraArrivo")
yo(I1, 41) = TabellaEsternadati_generali("ScartoPartenza")
GoTo ecco
End If
yo(I1, 1) = TabellaEsternadati_generali("ID")
yo(I1, 2) = TabellaEsternadati_generali("NTesserato")
yo(I1, 3) = TabellaEsternadati_generali("Dorsale")
yo(I1, 4) = "flag"
yo(I1, 5) = ""
If yg(i, 6) <> "Pista" And yg(i, 6) <> "Cronosquadre" Then
yo(I1, 6) = TabellaEsternadati_generali("Categoria")
yo(I1, 7) = TabellaEsternadati_generali("Posizione")
yo(I1, 8) = TabellaEsternadati_generali("Tempo")
yo(I1, 9) = TabellaEsternadati_generali("Km")
yo(I1, 10) = TabellaEsternadati_generali("Punti")
yo(I1, 11) = TabellaEsternadati_generali("OraPartenza")
yo(I1, 12) = TabellaEsternadati_generali("OraArrivo")
yo(I1, 13) = TabellaEsternadati_generali("ScartoPartenza")
End If
If yg(i, 6) = "Pista" Then
yo(I1, 6) = TabellaEsternadati_generali("Categoria")
yo(I1, 7) = TabellaEsternadati_generali("Inseguimento3000")
yo(I1, 8) = TabellaEsternadati_generali("Inseguimento2000")
yo(I1, 9) = TabellaEsternadati_generali("Km")
yo(I1, 10) = TabellaEsternadati_generali("c750")
yo(I1, 11) = TabellaEsternadati_generali("c500")
yo(I1, 42) = TabellaEsternadati_generali("c200")
yo(I1, 43) = TabellaEsternadati_generali("Scratch1")
yo(I1, 44) = TabellaEsternadati_generali("Scratch2")
yo(I1, 12) = TabellaEsternadati_generali("GaraPunti1")
yo(I1, 13) = TabellaEsternadati_generali("GaraPunti2")
End If
ecco:
TabellaEsternadati_generali.MoveNext
Next I1
If yg(i, 6) = "Cronosquadre" Then
Call sistema_cronosquadre
GoTo fig
End If
If yg(i, 6) = "Cicloturismo" Or yg(i, 6) = "Randonnee" Then
Call sistema_turismo
GoTo fig
End If
For I1 = 0 To ntessere - 1
For I2 = 0 To p - 1
If yo(I2, 2) = Y(I1, 1) Then yo(I2, 5) = Y(I1, 3)
Next I2
Next I1
If TabellaDati_Generali.EOF = True Then GoTo gp
If TabellaDati_Generali.EOF = False Then
TabellaDati_Generali.MoveLast
TabellaDati_Generali.MoveFirst
p1 = TabellaDati_Generali.RecordCount
End If
For I1 = 0 To p1 - 1
For I3 = 0 To p - 1
If TabellaDati_Generali("NTesserato") = yo(I3, 5) Then yo(I3, 4) = ""
Next I3
TabellaDati_Generali.MoveNext
Next I1
gp:
TabellaDati_Generali.Close
TabellaEsternadati_generali.Close
'^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Set TabellaEsternadati_generali = DBEsterno.OpenRecordset(qry3, dbOpenDynaset)
Set TabellaDati_Generali = DBCorrente.OpenRecordset(qry6, dbOpenDynaset)
If TabellaDati_Generali.EOF = True Then GoTo g21
If TabellaDati_Generali.EOF = False Then
TabellaDati_Generali.MoveLast
TabellaDati_Generali.MoveFirst
p2 = TabellaDati_Generali.RecordCount
End If
ReDim yr(p2)
For I3 = 0 To p2 - 1
yr(I3) = TabellaDati_Generali("ID")
TabellaDati_Generali.MoveNext
Next I3
If TabellaEsternadati_generali.EOF = True Then GoTo g21
If TabellaEsternadati_generali.EOF = False Then
TabellaEsternadati_generali.MoveLast
TabellaEsternadati_generali.MoveFirst
p3 = TabellaEsternadati_generali.RecordCount
End If
For I1 = 0 To p3 - 1
u = 0
For I2 = 0 To p2 - 1
If yr(I2) = TabellaEsternadati_generali("NTesserato") Then u = 1
Next I2
If u = 0 Then
If yg(i, 6) <> "Pista" And yg(i, 6) <> "Cronosquadre" Then
yo(I1, 6) = ""
yo(I1, 7) = ""
yo(I1, 8) = ""
yo(I1, 9) = ""
yo(I1, 10) = ""
yo(I1, 11) = ""
yo(I1, 12) = ""
yo(I1, 13) = ""
End If
If yg(i, 6) = "Pista" Then
yo(I1, 6) = ""
yo(I1, 7) = ""
yo(I1, 8) = ""
yo(I1, 9) = ""
yo(I1, 10) = ""
yo(I1, 11) = ""
yo(I1, 12) = ""
yo(I1, 13) = ""
yo(I1, 42) = ""
yo(I1, 43) = ""
yo(I1, 44) = ""
End If
End If
TabellaEsternadati_generali.MoveNext
Next I1
TabellaDati_Generali.Close
TabellaEsternadati_generali.Close
g21:
For I1 = 0 To p - 1
If yg(i, 6) <> "Pista" And yg(i, 6) <> "Cronosquadre" Then
If yo(I1, 4) <> "" Then
qry2 = qry6 & " WHERE ID=" & yo(I1, 1)
qry7 = qry3 & " WHERE ID=" & yo(I1, 1)
Set TabellaEsternadati_generali = DBEsterno.OpenRecordset(qry7, dbOpenDynaset)
Set TabellaDati_Generali = DBCorrente.OpenRecordset(qry2, dbOpenDynaset)
TabellaDati_Generali.AddNew
TabellaDati_Generali.Fields("NTesserato") = yo(I1, 5)
TabellaDati_Generali.Fields("Dorsale") = yo(I1, 3)
TabellaDati_Generali.Fields("Categoria") = yo(I1, 6)
TabellaDati_Generali.Fields("Posizione") = yo(I1, 7)
TabellaDati_Generali.Fields("Tempo") = yo(I1, 8)
TabellaDati_Generali.Fields("Km") = yo(I1, 9)
TabellaDati_Generali.Fields("Punti") = yo(I1, 10)
TabellaDati_Generali.Fields("OraPartenza") = yo(I1, 11)
TabellaDati_Generali.Fields("OraArrivo") = yo(I1, 12)
TabellaDati_Generali.Fields("ScartoPartenza") = yo(I1, 13)
TabellaDati_Generali.Update
TabellaDati_Generali.Close
TabellaEsternadati_generali.Close
End If
End If
If yg(i, 6) = "Pista" Then
If yo(I1, 4) <> "" Then
qry2 = qry6 & " WHERE ID=" & yo(I1, 1)
qry7 = qry3 & " WHERE ID=" & yo(I1, 1)
Set TabellaEsternadati_generali = DBEsterno.OpenRecordset(qry7, dbOpenDynaset)
Set TabellaDati_Generali = DBCorrente.OpenRecordset(qry2, dbOpenDynaset)
TabellaDati_Generali.AddNew
TabellaDati_Generali.Fields("NTesserato") = yo(I1, 5)
TabellaDati_Generali.Fields("Dorsale") = yo(I1, 3)
TabellaDati_Generali.Fields("Categoria") = yo(I1, 6)
TabellaDati_Generali.Fields("Inseguimento3000") = yo(I1, 7)
TabellaDati_Generali.Fields("Inseguimento2000") = yo(I1, 8)
TabellaDati_Generali.Fields("Km") = yo(I1, 9)
TabellaDati_Generali.Fields("c750") = yo(I1, 10)
TabellaDati_Generali.Fields("c500") = yo(I1, 11)
TabellaDati_Generali.Fields("c200") = yo(I1, 42)
TabellaDati_Generali.Fields("Scratch1") = yo(I1, 43)
TabellaDati_Generali.Fields("Scratch2") = yo(I1, 44)
TabellaDati_Generali.Fields("GaraPunti1") = yo(I1, 12)
TabellaDati_Generali.Fields("GaraPunti2") = yo(I1, 13)
TabellaDati_Generali.Update
TabellaDati_Generali.Close
TabellaEsternadati_generali.Close
End If
End If
Next I1
fig:
Next i
MsgBox "IMPORTAZIONE DATI ESEGUITA CON SUCCESSO!!! Premi OK per continuare"
flag_inserito = True
End Sub