A parte che avresti dovuto indicare la riga che genera l'errore...
Sospetto che il problema derivi da queste due istruzioni:
codice:
Dim conn As New ADODB.Connection
Set conn = New ADODB.Connection
perchè la dichiarazione:
codice:
Dim conn As New ADODB.Connection
con creazione dell'istanza implicita è sbagliata ed è parte di un vecchio retaggio che, purtroppo, si legge ancora troppo spesso in codice 'vecchio come cucco' usato ed abusato.
Una volta poteva aver ragione di esistere, ora non più perchè dall'MDAC v.2.6 le cose sono cambiate, e con la v.2.8 ancora di più.
Dovresti invece dichiarare ed istanziare l'oggetto separatamente, così:
codice:
Dim conn As ADODB.Connection
Set conn = New ADODB.Connection
Stessa cosa vale per il Recordset:
codice:
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
Poi, giusto per pignoleria, questo codice è praticamente inutile:
1.
codice:
User ID=Admin;Password=;
serve solo in ambiente MSAccess, mentre tu lavori in VB6 e non ha alcuna utilità.
2.
codice:
conn.CursorLocation = adUseServer
Il cursore è già per default lato server, perchè indicarlo?
3.
L'Execute dovrebbe essere eseguito all'interno di una transazione BeginTrans/ComminTrans in cui deve essere previstra la relativa gestione dell'errore (e conseguente RollBackTrans).
4.
Tutto il codice dovrebbe essere eseguito all'interno di una funzione che restituisce un valore in base al successo o meno dell'operazione.
Mettiamo che la INSERT non abbia successo.
Tu come fai a scoprirlo?
Il tuo codice non ti segnalerebbe niente di niente...
5.
Poi ci sarebbe altro... ma mi fermo qui.