elbrahimo
Messages postés25Date d'inscriptionjeudi 25 décembre 2003StatutMembreDernière intervention25 novembre 2004
-
20 oct. 2004 à 14:36
elbrahimo
Messages postés25Date d'inscriptionjeudi 25 décembre 2003StatutMembreDernière intervention25 novembre 2004
-
24 oct. 2004 à 11:37
salut à tous
je ne sais pas comment avec vb faire une requete qui met à jour des données d'une table1 à partir d'une sélection de table2, c'est à dire que j'aimerais récupérer des "lignes" par un select de la table2 et mettre ces données sur la table1 par des update pour la mettre à jour
alexsimps2002
Messages postés91Date d'inscriptionjeudi 5 juin 2003StatutMembreDernière intervention22 juillet 20064 20 oct. 2004 à 15:01
salut,
j'ai bien une idée, mais je ne sais pas sur quel critere tu veux mettre à jour les donnée de la table1 c'est les même enregistrements ?? si oui, je pense que ça pourrais donner ça (à peu prés):
set req=currentdb.createquerydef("","select * from table2 where ......")
while not res.eof
Set res=req.openrecordset
Set req2=currentdb.createquerydef("","select * frm table1 where CléPrimaireTable1=res.field(0)(CléPrimaire table2)
set res2=req2.openrecordset
res2.edit
res2.fields(1)=res.fields(1) '' Le champ de la table1 reçoit la valeur du champ de la table2
res2.update
res.movenext
wend
Si ça ne vas pas explique plus en détail .
@+
[i]Alexsimpsi]
OU un truc dans le style
@+
Julien
-----------------------------------------------------------
:big) Essai ca sinon on trouvera autre chose ;)
-----------------------------------------------------------
OU un truc dans le style
@+
Julien
-----------------------------------------------------------
:big) Essai ca sinon on trouvera autre chose ;)
-----------------------------------------------------------
Vous n’avez pas trouvé la réponse que vous recherchez ?
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 20 oct. 2004 à 15:11
oups desole pour les deux fois met vbfrance avait marque ERREUR SERVEUR et je croyait que le post n etait pas parti ;)
@+
Julien
-----------------------------------------------------------
:big) Essai ca sinon on trouvera autre chose ;)
-----------------------------------------------------------
alexsimps2002
Messages postés91Date d'inscriptionjeudi 5 juin 2003StatutMembreDernière intervention22 juillet 20064 20 oct. 2004 à 15:22
salut,
j'ai bien une idée, mais je ne sais pas sur quel critere tu veux mettre à jour les donnée de la table1 c'est les même enregistrements ?? si oui, je pense que ça pourrais donner ça (à peu prés):
set req=currentdb.createquerydef("","select * from table2 where ......")
while not res.eof
Set res=req.openrecordset
Set req2=currentdb.createquerydef("","select * frm table1 where CléPrimaireTable1=res.field(0)(CléPrimaire table2)
set res2=req2.openrecordset
res2.edit
res2.fields(1)=res.fields(1) '' Le champ de la table1 reçoit la valeur du champ de la table2
res2.update
res.movenext
wend
Si ça ne vas pas explique plus en détail .
@+
[i]Alexsimpsi]
alexsimps2002
Messages postés91Date d'inscriptionjeudi 5 juin 2003StatutMembreDernière intervention22 juillet 20064 20 oct. 2004 à 15:22
salut,
j'ai bien une idée, mais je ne sais pas sur quel critere tu veux mettre à jour les donnée de la table1 c'est les même enregistrements ?? si oui, je pense que ça pourrais donner ça (à peu prés):
set req=currentdb.createquerydef("","select * from table2 where ......")
while not res.eof
Set res=req.openrecordset
Set req2=currentdb.createquerydef("","select * frm table1 where CléPrimaireTable1=res.field(0)(CléPrimaire table2)
set res2=req2.openrecordset
res2.edit
res2.fields(1)=res.fields(1) '' Le champ de la table1 reçoit la valeur du champ de la table2
res2.update
res.movenext
wend
Si ça ne vas pas explique plus en détail .
@+
[i]Alexsimpsi]
elbrahimo
Messages postés25Date d'inscriptionjeudi 25 décembre 2003StatutMembreDernière intervention25 novembre 2004 20 oct. 2004 à 22:11
merci à toi Alexsimps c'est sympa de vouloir m'aider, je t'avoue que je n'ai pas bien compris tes instructions, je vais essayer d'être plus claire afin que tu puisse mieux m'aider (ou d'autres personnes).
voilà j'ai 2 tables : table1 et table2 , la table2 contient le champ [nom], [date] et [quantité], et la table2 est celle qui reçoit les nouvelles données,
j'aimerais grâce à un "update" récupérer les informations de la table2 pour mettre à jour ma table1
par exemple j'ai
j'utilise adodb et j'ai déjà fait une requete qui fonctionne du style :
MaConnection.Execute ("iNSERT INTO table3 ( [date],[nom],[nombre] ) select [currentdate] ,[entryname] ,[ pages] from table4 where entryname='toto'")
voilà j'esperes avoir était le plus claire possible merci d'avance pour l'aide
alexsimps2002
Messages postés91Date d'inscriptionjeudi 5 juin 2003StatutMembreDernière intervention22 juillet 20064 21 oct. 2004 à 08:31
Salut,
après reflexion, je rejoins l'idée de sgrant, utilise un update, ça doit marcher. Si ça ne marche pas, ma première solution peut marcher, mais je te l'expliquerais plus en détail si besoin est.
Esssaye ça:
MaConnection.Execute ("Update Table1 Set T1.Date=T2.Date,T1.Quantite=T1.Quantite+T2.Quantite from Table1 T1, Table2 T2 Where T1.Nom=T2.Nom")
G spr que ça va marcher, sinon on essayera autre chose.
elbrahimo
Messages postés25Date d'inscriptionjeudi 25 décembre 2003StatutMembreDernière intervention25 novembre 2004 21 oct. 2004 à 21:47
je viens d'essayer ce que tu m'as dis mais rien à faire, ça ne fonctionne pas , j'avais essayer ce type de requête sous toutes ses formes .... mais rien ...... sur internet non plus je n'ai pas trouvé de solution ... t'es mon seul espoir !!!!!!!
sais tu si tu ne trouves pas la bonne requête si on peut par exemple mettre sous un tableau les resultats de select de table1 et ensuite exporter sur la table 2 ??? non ? tu vois une autre solution ??????
encore merci et à plus
alexsimps2002
Messages postés91Date d'inscriptionjeudi 5 juin 2003StatutMembreDernière intervention22 juillet 20064 22 oct. 2004 à 08:44
Salut,
Je ne savais pas trop si cette requete aller fonctionnée, maintenant j'ai la réponse !!!
Dans ce cas là, j'ai une autre solution, mais beaucoup plus lourde à faire. Avec la chance que j'ai, il y a beaucoup de chance pour qu'il y ait une solution beaucoup plus courte mais bon, je n'aime pas faire dans le simple !!!
(Par ex, g fait une fonction numéroSemaine pour récupérer le numéro de la semaine d'une date précise, alors qu'il existe la fonction datepart("ww,date), qui fait la même chose !!
Bref !
Alors je t'explique un peu:
Moi je suis sous access ou sous excel, et j'utilise un DAO.recordset et un querydef
Tout d'abord, tu fait un select de ta table2
Tant que non Fin enregistrement de table 2
Tu fait un select de table1 where t1.nom=t2.nom
Tu te mets en modifications
Tu ajoutes 1 à table1 et tu change la date
tu met A jour
tu ferme la requete n°2
tu passes à l'enregistrement suivant de table2
En code ça donne ça:
Dim Req as querydef
Dim Res as DAO.Recordset
Dim Req2 as querydef
Dim Res2 as DAO.Recordset
set req=currentdb.createquerydef("","select * from table2")
while not res.eof
Set res=req.openrecordset
Set req2=currentdb.createquerydef("","select * form table1 where Table1.Nom = res.field(0)(CléPrimaire table2)
set res2=req2.openrecordset
res2.edit
res2.fields(1)=Res2.Fields(1)+res.fields(1)
res2.update
res.movenext
wend
Pour que ça marche, il faut que tu rajoute la référence DAO3.6 ou+.