Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access
Access Forum d'entraide sur Microsoft Access. Avant de poster -> La F.A.Q Access
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/12/2010, 10h46   #1
Invité de passage
 
Inscription : février 2008
Messages : 61
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 61
Points : 1
Points : 1
Par défaut Mise à jour d'un enregistrement

Bonjour,
Bon j'ai un petit problème de mise à jour d'un enregistrement. Je voudrais prendre deux champs de deux tables différentes les multiplier et récupérer le résultat dans un autre champ. Voici mon code vba

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Private Sub Combo1258_Change()
Dim count_Reponses As Integer 'variable faisant la somme des réponses
Dim test As Integer
Dim sql As String
Dim pond As Currency
Dim rep As Integer
Dim res As Currency
 
 
pond = Me![Pondération]
rep = Me![Ch_Char_Response]
res = pond * rep
 
MsgBox ("Pondération " & pond)
MsgBox ("Réponse " & rep)
MsgBox ("res " & res)
 
sql = "UPDATE Réponses SET Res = res;"
DoCmd.RunSQL (sql)
'Recordset.Update Réponses.[res], res
 
 
test = Me![AuditNumber]
count_Reponses = Nz(DSum("Req_Audit_Question_Reponse.[Ch_Char_Response]", "Req_Audit_Question_Reponse", "Req_Audit_Question_Reponse![Ch_Char_Response]" & " <> 0 And Req_Audit_Question_Reponse![AuditNumber]=" & " " & Me![AuditNumber] & "AND Req_Audit_Question_Reponse![Chapitre]='" & Me![Chapitre] & "'" & " AND [Req_Audit_Question_Reponse]![Numéro_Reponse]<>" & Me![Numéro_Reponse])) + Me![Combo1258]
Me![Chap2_percent] = count_Reponses / (Me![NbTotalQuestions] * 3)
Me![Text2553] = (Me![Chap2_percent] + Me![Chap_3_1_percent] + Me![Chap_3_2_percent] + Me![Chap_3_3_percent] + Me![Chap_4_percent] + Me![Chap_5_percent] + Me![Chap_6_percent] + Me![Chap_7_percent] + Me![Chap_8_percent]) / 9
DoCmd.RunCommand acCmdSaveRecord
End Sub
Voici mes problèmes:
* Je ne sais pas si il faut utiliser un update ou un insert into (à la base les enregistrements Res sont vides)

* Rien ne se passe dans la requête sql par contre si je change le Res = res par Res = 13 par exemple et bien là ça se met à jour.

Avez-vous une solution?? Merci pour votre aide
overlolo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 11h39   #2
Membre Expert
 
Inscription : janvier 2006
Messages : 1 111
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 1 111
Points : 1 093
Points : 1 093
Bonjour,
Code :
sql = "UPDATE Réponses SET Res = " & res
__________________
[Access] Les bases du débogage => ici
Kloun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 11h48   #3
Invité de passage
 
Inscription : février 2008
Messages : 61
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 61
Points : 1
Points : 1
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Private Sub Combo1258_Change()
Dim count_Reponses As Integer 'variable faisant la somme des réponses
Dim test As Integer
Dim sql As String
Dim pond As Currency
Dim rep As Integer
Dim Result As Currency
 
pond = Me![Pondération]
rep = Me![Ch_Char_Response]
Result = pond * rep
 
MsgBox ("Pondération " & pond)
MsgBox ("Réponse " & rep)
MsgBox ("res " & Result)
 
 
sql = "UPDATE Réponses SET Res = " & Result & ";"
DoCmd.RunSQL (sql)
DoCmd.RunCommand acCmdSaveRecord
 
 
 
test = Me![AuditNumber]
count_Reponses = Nz(DSum("Req_Audit_Question_Reponse.[Ch_Char_Response]", "Req_Audit_Question_Reponse", "Req_Audit_Question_Reponse![Ch_Char_Response]" & " <> 0 And Req_Audit_Question_Reponse![AuditNumber]=" & " " & Me![AuditNumber] & "AND Req_Audit_Question_Reponse![Chapitre]='" & Me![Chapitre] & "'" & " AND [Req_Audit_Question_Reponse]![Numéro_Reponse]<>" & Me![Numéro_Reponse])) + Me![Combo1258]
Me![Chap2_percent] = count_Reponses / (Me![NbTotalQuestions] * 3)
Me![Text2553] = (Me![Chap2_percent] + Me![Chap_3_1_percent] + Me![Chap_3_2_percent] + Me![Chap_3_3_percent] + Me![Chap_4_percent] + Me![Chap_5_percent] + Me![Chap_6_percent] + Me![Chap_7_percent] + Me![Chap_8_percent]) / 9
DoCmd.RunCommand acCmdSaveRecord
End Sub
J'ai écrit ma requête comme ça, ça a fonctionné mais le problème c'est que dès que je passe à la question suivante il me dit qu'il y a une erreur dans la requête.

J'ai entendu dire que ça pouvait être une problème avec les "," qu'il faut transformer en ".". En effet dans ma table le champ pond est en numérique avec la taille du champ en réel simple. Pareil pour le Result. Et rep est en numérique et c'est un entier long.

Au passage il m'affiche bien les bonne valeur avec les MsgBox que j'ai mi le problème c'est qu'il arrive pas à mettre à jour l'enregistrement...

J'ai vraiment besoin de votre aide, merci beaucoup pour vos réponses
Je viens de voir que quand Result = à un entier et bien ça fonctionne et dès que c'est un nombre à virgule ça plante en me disant qu'il y a un errer de syntaxe dans ma requête
overlolo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 12h10   #4
Membre Expert
 
Inscription : janvier 2006
Messages : 1 111
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 1 111
Points : 1 093
Points : 1 093
Effectivement, il faut remplacer la virgule par un point.
Voir Replace.
__________________
[Access] Les bases du débogage => ici
Kloun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 12h15   #5
Invité de passage
 
Inscription : février 2008
Messages : 61
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 61
Points : 1
Points : 1
Et je met quoi comme type au résultat que je récupère?

Dim stock ?

stockt = Replace(Result,";",".")
overlolo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 12h19   #6
Membre Expert
 
Inscription : janvier 2006
Messages : 1 111
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 1 111
Points : 1 093
Points : 1 093
Code :
sql = "UPDATE Réponses SET Res = " & replace(Result, ",", ".")
__________________
[Access] Les bases du débogage => ici
Kloun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 13h32   #7
Invité de passage
 
Inscription : février 2008
Messages : 61
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 61
Points : 1
Points : 1
Ca fonctionne mais le souci maintenant c'est que ça me met à jour tous les champs et moi je voudrais que ça m'en mette que un à jour sur l'enregistrement ou je me trouve ... Une idée?
overlolo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 13h44   #8
Membre Expert
 
Inscription : janvier 2006
Messages : 1 111
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 1 111
Points : 1 093
Points : 1 093
Il suffit de rajouter une clause where qui va bien à la requête update.
__________________
[Access] Les bases du débogage => ici
Kloun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 13h49   #9
Invité de passage
 
Inscription : février 2008
Messages : 61
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 61
Points : 1
Points : 1
Oui c'est que j'essaye de faire mais je m'embrouille avec les guillemets et les & je sais jamais comment écrire bien les choses:

Code :
sql = "UPDATE Réponses SET Res = " & Replace(Result, ",", ".") & " WHERE "Req_Audit_Question_Reponse![Numéro_Reponse]<>" " & Me![Numéro_Reponse] & ";"
overlolo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 13h55   #10
Membre Expert
 
Inscription : janvier 2006
Messages : 1 111
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 1 111
Points : 1 093
Points : 1 093
Code :
sql = "UPDATE Réponses SET Res = " & Replace(Result, ",", ".") & " WHERE [Numéro_Reponse] <> " & Numéro_Reponse.value
Si Numéro_Reponse est numérique.
Code :
sql = "UPDATE Réponses SET Res = " & Replace(Result, ",", ".") & " WHERE [Numéro_Reponse] <> '" & replace(Numéro_Reponse.value, "'", "''") & "'"
Si Numéro_Reponse est alphanumérique.
__________________
[Access] Les bases du débogage => ici
Kloun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 14h19   #11
Invité de passage
 
Inscription : février 2008
Messages : 61
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 61
Points : 1
Points : 1
Ca fonctionne mais ça me met un conflit d'écriture:
Sauvegarder enregistrement ou copier dans le presse papier. Il faut que je clique sur copier dans le presse papier pour que la donnée s'affiche dans l'enregistrement... Pourquoi ça met un conflit d'écriture alors que je passe par un update (ça devrait se mettre à jour tout seul non???)
overlolo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 15h09   #12
Membre Expert
 
Inscription : janvier 2006
Messages : 1 111
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 1 111
Points : 1 093
Points : 1 093
Tu es dans un formulaire basé sur la un enregistrement de la table Réponses ?
__________________
[Access] Les bases du débogage => ici
Kloun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 15h16   #13
Invité de passage
 
Inscription : février 2008
Messages : 61
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 61
Points : 1
Points : 1
Oui c'est cela
overlolo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 15h40   #14
Membre Expert
 
Inscription : janvier 2006
Messages : 1 111
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 1 111
Points : 1 093
Points : 1 093
Dans ce cas là, crée un champ Res basé sur le champ Res de ta table sur ton formulaire puis :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Private Sub Combo1258_Change()
Dim count_Reponses As Integer 'variable faisant la somme des réponses
Dim test As Integer
Dim sql As String
Dim pond As Currency
Dim rep As Integer
Dim Result As Currency
 
res.value = Pondération.value * Ch_Char_Response.value
 
test = Me![AuditNumber]
count_Reponses = Nz(DSum("Req_Audit_Question_Reponse.[Ch_Char_Response]", "Req_Audit_Question_Reponse", "Req_Audit_Question_Reponse![Ch_Char_Response]" & " <> 0 And Req_Audit_Question_Reponse![AuditNumber]=" & " " & Me![AuditNumber] & "AND Req_Audit_Question_Reponse![Chapitre]='" & Me![Chapitre] & "'" & " AND [Req_Audit_Question_Reponse]![Numéro_Reponse]<>" & Me![Numéro_Reponse])) + Me![Combo1258]
Me![Chap2_percent] = count_Reponses / (Me![NbTotalQuestions] * 3)
Me![Text2553] = (Me![Chap2_percent] + Me![Chap_3_1_percent] + Me![Chap_3_2_percent] + Me![Chap_3_3_percent] + Me![Chap_4_percent] + Me![Chap_5_percent] + Me![Chap_6_percent] + Me![Chap_7_percent] + Me![Chap_8_percent]) / 9
DoCmd.RunCommand acCmdSaveRecord
End Sub
__________________
[Access] Les bases du débogage => ici
Kloun est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h57.


 
 
 
 
Partenaires

Hébergement Web