taguazou
Messages postés8Date d'inscriptionjeudi 8 juillet 2004StatutMembreDernière intervention26 juillet 2004
-
15 juil. 2004 à 14:33
taguazou
Messages postés8Date d'inscriptionjeudi 8 juillet 2004StatutMembreDernière intervention26 juillet 2004
-
26 juil. 2004 à 16:49
Bonjour,
je ne sais si je vais m'exprimer correctement, je vais essayer de me faire comprendre :
J'ai deux recordsets (dont le résultat est différent) et je cherche à mettre à jour une table en utilisant la différence des deux recordset en clair :
rs1 et rs2
rs1 est bon ( à jour)
je veux comparer avec rs2, et si des enregistrements sont différents alors updater rs2 avec rs1.
Comment faire ?
Quelqu'un a t-il la solution ? Il y a t-il une fonction dans VB permettant de comparer les deux recordsets ?
asecher
Messages postés262Date d'inscriptionlundi 20 octobre 2003StatutMembreDernière intervention27 avril 20071 17 juil. 2004 à 13:00
On peut faire ça avec une requete SQL du genre :
INSERT INTO TABLE2
SELECT DISTINCT T1.* FROM TABLE1 T1 LEFT OUTER JOIN TABLE2 T2 ON T2.ChampClé=T1.ChampClé WHERE T2.ChampClé IS NULL
qui signifie (partie SELECT) Cherche les enregistrements de T1 qui n'existent pas dans T2 et (partie INSERT) inère les dans TABLE2.
La jointure externe gauche (LEFT OUTER JOIN) permet de rammener tous les enregistrements de TABLE1 (T1) qu'il y ai ou non des enregistrements égaux dans TABLE2. Si le champ clé de la TABLE1 n'a pas d'équivalent dans la TABLE2, le champ clé de la TABLE2 a une valeur Null, c'est ceux que l'on recherche. La clause WHERE sélectionne les enregistrements dont le champ clé est à Null et donc qu'il faut créer ....
Je suis parti sur l'idée que tes 2 recordsets sont sur 2 tables différentes mais de même structure.
Si ce n'est pas le cas, Il faut préciser ce que l'on récupère de T1 et que l'on met dans TABLE2. Par exemple :
INSERT INTO TABLE2 (ChampCle,Champ2, Champ3) SELECT T1.ChampCle,"TOTO",T1.Champ2 FROM ...
J'espère avoir répondu en partie à ta question, mais surtout te "titiller" sur les possibilités de SQL.
taguazou
Messages postés8Date d'inscriptionjeudi 8 juillet 2004StatutMembreDernière intervention26 juillet 2004 19 juil. 2004 à 12:17
Je veux bien essayer en SQL, seulement je connait peu de choses en sql voici la requete retranscrite, mais j'ai une erreur de syntaxe.
Voici la requete :
sql3 = "INSERT INTO Table_Postes_budgétaire (CTYPROD,LTYPPRO3) FROM Table_Postes_budgétaire SELECT DISTINCT rs.* FROM Entrée_fact_EI rs LEFT OUTER JOIN Table_Postes_budgétaire rs2 ON rs2.LTYPPRO3=rs.LTYPPRO3 WHERE rs2.LTYPPRO3 IS NULL"
Comme je ne connait pas trop les syntaxes, si tu pouvais me donner un coup de pouce, je serais l'homme le plus heureux.
Merci à l'avance.
Cordialement.
Vous n’avez pas trouvé la réponse que vous recherchez ?
asecher
Messages postés262Date d'inscriptionlundi 20 octobre 2003StatutMembreDernière intervention27 avril 20071 19 juil. 2004 à 19:40
Essaye en précisant les champs rammenés :
sql3 = "INSERT INTO Table_Postes_budgétaire (CTYPROD,LTYPPRO3) FROM Table_Postes_budgétaire SELECT DISTINCT rs.CTYPROD, RS.LTYPPRO3 FROM Entrée_fact_EI rs LEFT OUTER JOIN Table_Postes_budgétaire rs2 ON rs2.LTYPPRO3=rs.LTYPPRO3 WHERE rs2.LTYPPRO3 IS NULL"
taguazou
Messages postés8Date d'inscriptionjeudi 8 juillet 2004StatutMembreDernière intervention26 juillet 2004 21 juil. 2004 à 10:04
J'ai toujours le même problème : erreur de syntaxe dans l'instruction INSERT INTO.
J'ai controlé les noms de champs et de table sans y trouver d'erreurs.
Est ce que les recorsets peuvent lui poser un problème ? Si oui de quel nature. Dans les deux recordset il y a uniquement les deux champs qui m'interesse.
taguazou
Messages postés8Date d'inscriptionjeudi 8 juillet 2004StatutMembreDernière intervention26 juillet 2004 26 juil. 2004 à 16:49
Merci pour ses précisions, mais ma connection est bonne (elle fonctionne avec les requetes de selection). L'erreur est toujours au niveau du insert into. Il y a t-il possibilité de ne pas utiliser mes rst pour mettre à jour la table de cette façon :
sql3 = "INSERT INTO Table_Postes_budgétaire (CTYPROD,LTYPPRO3) FROM Table_Postes_budgétaire SELECT DISTINCT Entrée_fact_EI.CTYPROD, Entrée_fact_EI.LTYPPRO3 FROM Entrée_fact_EI LEFT OUTER JOIN Table_Postes_budgétaire ON Table_Postes_budgétaire.LTYPPRO3=Entrée_fact_EI.LTYPPRO3 WHERE Table_Postes_budgétaire.LTYPPRO3 IS NULL"
Cependant j'ai toujours un problème de syntaxe dans INSERT INTO.