ADO et deux connexions BDD

nanebac - 9 nov. 2001 à 20:18
 Jean - 21 nov. 2001 à 20:49
J'ai un petit souci, je souhaite me connecter à une base ACCESS avec
ADO pour extraire un recordset qui doit être inséré dans une base SQL

Pour cela, j'ouvre la base ACCESS et je selectionne le recordset puis
je fais :

Rt.Open ''SELECT * from MATABLEACCESS where AGE = 18'',
"DSN=MABASEACCESS"

For each RS.Fields

Rs.Open ''SELECT * from MATABLESQL'', "DSN=BASESQL", adOpenDynamic,
adLockOptimistic ' je veux ouvrir la base SQL pour y intégrer les données.

Rs.Addnew

Rs !CHAMP1SQL = Rt!Champ1Access

....

Rs.update

'je passe au champ suivant de la base ACCESS

Next rs.Fields

Alors cela coince AVEC LE MESSAGE SUIVANT :

Multiple STEP OLE DB operations generated errors. Check each OLE DB
values, if available. No work was done.

Que se passe t il ? comment me sortir de là ?

Que fais je mal ?

Merci à vous pour l'aide à venir je dois avancer sur ce projet.

2 réponses

Pourquoi tu ouvre RT : "Rt.Open ''SELECT * from MATABLEACCESS .....

Et après tu utilise RS
"For each RS.Fields..." au lieu de "For each Rt.Fields..."
Déjà ça, ça ne marchera pas.
0
Le open de ta connection(RS) SQL est dans une boucle.
Tu ne peux ouvrir un recordset qui est déjà ouvert.(à moins de le refermer avant).
Si j'ai bien compris le code
au début de la boucle tu ouvres un RS sur SQL(open)
tu ajoutes une ligne(addnew)
tu initialise un champ sql avec un
champ access
tu mets à jour l'enregistrement(update
et tu passes au champ suivant.
En fait tu crées une ligne sql par champ access.

Essaie

Rt.Open ''SELECT * from MATABLEACCESS where AGE = 18'',
"DSN=MABASEACCESS"
Rs.Open ''SELECT * from MATABLESQL'', "DSN=BASESQL", adOpenDynamic,
adLockOptimistic ' je veux ouvrir la base SQL pour y intégrer les données.
do until rt.eof
Rs.Addnew
For each RS.Fields
Rs !CHAMP1SQL = Rt!Champ1Access
....

'je passe au champ suivant de la base ACCESS
Next rs.Fields
Rs.update
rt.movenext
loop
Bonne chance
Jean
0
Rejoignez-nous