cs_monaco63
Messages postés76Date d'inscriptionvendredi 12 novembre 2004StatutMembreDernière intervention15 juin 2009
-
20 juil. 2007 à 11:18
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 2015
-
20 juil. 2007 à 19:50
Bonjour,
Je souhaiterai savoir comment on peut insérer le contenu d'une requête dans une instruction INSERT INTO. Voici mon exemple
Private Function Exclusion_NIP()
Set DB1 = DBEngine(0)(0)
Set RS1 = DB1.OpenRecordset("essaiRequete")
Set RS2 = DB1.OpenRecordset("essaiRequete")
RS1.MoveFirst
RS2.MoveFirst
Do Until RS1.EOF
Do Until RS2.EOF
'Si les 2 NIP ne sont pas identiques Alors
If Trim(RS1.Fields("NIP")) <> Trim(RS2.Fields("NIP")) Then
SQL = "INSERT INTO tb_Resultat_1 ( nip, ngs ) " & _
"VALUES (.........)"
DoCmd.RunSQL SQL
'Ensuite on passe à l'enregistrement suivant
RS2.MoveNext
'Sinon Si les 2 NIP sont identiques Alors
ElseIf Trim(RS2.Fields("NIP")) = Trim(RS1.Fields("NIP")) Then
SQL = "INSERT INTO tb_SauvegardeTemporaire ( [NumOperationTransfert] ) " & _
"VALUES ('test')"
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 20 juil. 2007 à 19:50
Salut
Désolé, je ne sais pas comment tu as fait ton copier/coller, mais le format est étrange et ... incomplet.
Respecte bien la syntaxe SQL (qu'on répète à longueur de semaine) :
si le champ de ta table est de type :
- numérique : pas d'encadrement de la donnée
- chaine : encadrement avec '
- date : encadrement avec #
car NumOperationTransfert pourrait bien être numérique, non ?
SQL = "INSERT INTO tb_Resultat_1 ( nip, ngs ) " & _
"VALUES (.........)"
A quoi correspondent tes ........... ?
C'est une abréviation ou c'est l'info que tu recherches ?
Si RS1 est le recordset source, les ......... pourraient ressembler à :
"... VALUES (" & RS1.nip & ", " & RS1.ngs & ")"
en supposant que nip et ngs soient numériques, sinon il faudra ajouter les encadrements
Ta question n'est pas assez claire : on ne sait pas d'où viennent les données
Attention aussi à respecter les min/maj dans les noms des champs : un coup tu écris NIP, en après nip
Si le but de ton code est de recopier les données manquantes dans une table, le mieux serait quand même de faire une requète de recherche pour chaque données de RS1 dans ta 2eme table et de faire un Insert si besoin
- remplir RS1 avec les données à insérer
- pour chaque donnée du RS1, rechercher par un Select la présence de cette donnée dans la 2eme table (avec RS2)
- si RS2.RecordCount = 0, alors insertion, sinon, on ne fait rien
mais le but est de lancer RS2 à chaque donnée de RS1 (et pas de faire la même requète au début)
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Champion du monde de boule de cristal - 2005 Le savoir est la seule matière qui s'accroit quand on