cs_monaco63
Messages postés76Date d'inscriptionvendredi 12 novembre 2004StatutMembreDernière intervention15 juin 2009
-
24 juil. 2007 à 13:51
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 2021
-
25 juil. 2007 à 16:53
Bonjour,
Je souhaiterai modifier un enregistrement dans une colonne sans modifier les autres
Voici mon bout de code
Set DB1 = DBEngine(0)(0)
Set RS1 = DB1.OpenRecordset("03_req_Resultat_1") 'Permet d'utiliser les enregistrements de tb_Resultat_1
Set RS2 = DB1.OpenRecordset("04_req_SauvegardeTemporaire") 'Permet d'obtenir le n° Opération Transfert
Set RS3 = DB1.OpenRecordset("02_ReqPourResultat") 'REQUETE A MODIFIER 'Requête qui en fonction de l'operation depotage prend la date la plus ancienne
Do Until RS2.EOF
Do Until RS1.EOF
'Si le N°opération de tb_Resultat_1 <> N°opération de tb_SauvegardeTemporaire
If Trim(RS1.Fields("NumOperationTransfert")) = Trim(RS2.Fields("NumOperationTransfert")) Then
'On ajoute :
'Non : si l'operation transfert non exclus
'Oui : si l'operation transfert exclus
SQL "UPDATE tb_Resultat_1 SET recoup_used 'oui' " & _
"WHERE (" & Trim(RS1.Fields("NumOperationTransfert")) = Trim(RS2.Fields("NumOperationTransfert")) & ")"
DoCmd.SetWarnings False
DoCmd.RunSQL SQL
'Ensuite on passe à l'enregistrement suivant
RS1.MoveNext
ElseIf Trim(RS1.Fields("NumOperationTransfert")) <> Trim(RS2.Fields("NumOperationTransfert")) Then
SQL "UPDATE tb_Resultat_1 SET recoup_used 'non'" & _
"WHERE (" & Trim(RS1.Fields("NumOperationTransfert")) <> Trim(RS2.Fields("NumOperationTransfert")) & ")"
DoCmd.SetWarnings False
DoCmd.RunSQL SQL
'On passe à l'enregistrement suivant
RS1.MoveNext
End If
Loop
RS1.MoveFirst
RS2.MoveNext
Loop
RS2.Close
RS1.Close
Ma variable SQL prend la valeur "Vrai" et un message d'erreur me dit qu'il attend soit un SELECT, UPDATE, etc.
Aidez moi à trouver et/ ou à corriger mon erreur, merci d'avance
cs_monaco63
Messages postés76Date d'inscriptionvendredi 12 novembre 2004StatutMembreDernière intervention15 juin 2009 24 juil. 2007 à 13:53
Bonjour,
Je souhaiterai modifier un enregistrement dans une colonne sans modifier les autres
Voici mon bout de code
Set DB1 = DBEngine(0)(0)
Set RS1 = DB1.OpenRecordset("03_req_Resultat_1") 'Permet d'utiliser les enregistrements de tb_Resultat_1
Set RS2 = DB1.OpenRecordset("04_req_SauvegardeTemporaire") 'Permet d'obtenir le n° Opération Transfert
Set RS3 = DB1.OpenRecordset("02_ReqPourResultat") 'REQUETE A MODIFIER 'Requête qui en fonction de l'operation depotage prend la date la plus ancienne
Do Until RS2.EOF
Do Until RS1.EOF
'Si le N°opération de tb_Resultat_1 <> N°opération de tb_SauvegardeTemporaire
If Trim(RS1.Fields("NumOperationTransfert")) = Trim(RS2.Fields("NumOperationTransfert")) Then
'On ajoute :
'Non : si l'operation transfert non exclus
'Oui : si l'operation transfert exclus
SQL "UPDATE tb_Resultat_1 SET recoup_used 'oui' " & _
"WHERE (" & Trim(RS1.Fields("NumOperationTransfert")) = Trim(RS2.Fields("NumOperationTransfert")) & ")"
DoCmd.SetWarnings False
DoCmd.RunSQL SQL
'Ensuite on passe à l'enregistrement suivant
RS1.MoveNext
ElseIf Trim(RS1.Fields("NumOperationTransfert")) <> Trim(RS2.Fields("NumOperationTransfert")) Then
SQL "UPDATE tb_Resultat_1 SET recoup_used 'non'" & _
"WHERE (" & Trim(RS1.Fields("NumOperationTransfert")) <> Trim(RS2.Fields("NumOperationTransfert")) & ")"
DoCmd.SetWarnings False
DoCmd.RunSQL SQL
'On passe à l'enregistrement suivant
RS1.MoveNext
End If
Loop
RS1.MoveFirst
RS2.MoveNext
Loop
RS2.Close
RS1.Close
Ma variable SQl prend la valeur "Vrai" et un message d'erreur me dit qu'il attend soit un SELECT, UPDATE, etc.
Aidez moi à trouver et/ ou à corriger mon erreur, merci d'avance
cs_Nicko11
Messages postés1141Date d'inscriptionmercredi 7 mars 2007StatutMembreDernière intervention19 septembre 20073 24 juil. 2007 à 14:44
salut,
je pense qu'avant de faire DoCmd.RunSQL, tu devrais faire un
msgbox SQL pour etre sur que ce que tu executes correspond bien a ce que tu cherches a faire. Aussi, sauvegarde tes enregistrements dans une table temporaire
et découpe ta requete en plusieurs morceaux pour isoler le pb. Faire d'abord sans la clause Where pour voir. Si cela fonctionne, tu sauras que c'est cette clause qui deconne.
Peux tu préciser la ligne qui ne fonctionne pas et dans quelle condition.
Pour finir, pour debugger beaucoup plus rapidement, tu devrais faire:
cs_monaco63
Messages postés76Date d'inscriptionvendredi 12 novembre 2004StatutMembreDernière intervention15 juin 2009 24 juil. 2007 à 16:10
Salut Nicko11
Quand j'effectuer MsgBox SQL
il m'affiche :
UPDATE tb_Resultat_1 SET recoup_used = 'oui'
WHERE 'test' = 'test'
Le problème c'est qu'il modifie en double mes colonnes car il passe une fois pour modifier puis une 2ème fois où la il remodifie le champ (cela vient des 2 boucles do, mais je ne sais pas comment faire pour comparer les enregistrements de ma table Resultat_1 avec ceux de TableTemporaire)
Peux tu m'aider
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_Nicko11
Messages postés1141Date d'inscriptionmercredi 7 mars 2007StatutMembreDernière intervention19 septembre 20073 24 juil. 2007 à 21:36
Je ne sais pas trop ce que tu cherches a faire alors si tu pouvais
m'expliquer clairement, peut etre que je comprendrais ce qui ne va pas
dans ta méthode.
Il me semble quand meme qu'il y a une confusion car dans une clause Where fonctionne comme ceci:
UPDATE Table SET champ_de_Table = 'Valeur' WHERE champ_de_Table= 'Condition'"
cs_monaco63
Messages postés76Date d'inscriptionvendredi 12 novembre 2004StatutMembreDernière intervention15 juin 2009 25 juil. 2007 à 15:12
SAlut,
J'ai modifié mon code depuis et je souhaiterai savoir comment faire pour obtenir le nom de la colonne au lieu de sa valeur (au départ j'avais la valeur au lieu du nom)
Set RS1 = DB1.OpenRecordset("SELECT * FROM tb_transfert_depotage") 'Permet d'utiliser les enregistrements de tb_Resultat_1
Set RS2 = DB1.OpenRecordset("SELECT * FROM tb_Sauvegarde_NumOperation_Transfert") 'Permet d'obtenir le n° Opération Transfert
cs_monaco63
Messages postés76Date d'inscriptionvendredi 12 novembre 2004StatutMembreDernière intervention15 juin 2009 25 juil. 2007 à 15:32
J'ai trouvé mais maintenant j'ai une erreur qui me dit Type de données incomptable dans l'expression du critère
Je ne vois pas à quoi correspond cette erreur
Voici mon bout de code
Set DB1 = DBEngine(0)(0)
Set RS1 = DB1.OpenRecordset("SELECT * FROM tb_transfert_depotage") 'Permet d'utiliser les enregistrements de tb_Resultat_1
'Set RS2 = DB1.OpenRecordset("03_Sauvegarde_NumOperation_Transfert") 'Permet d'obtenir le n° Opération Transfert
Set RS2 = DB1.OpenRecordset("SELECT * FROM tb_Sauvegarde_NumOperation_Transfert") 'Permet d'obtenir le n° Opération Transfert