IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

Mise à jour d'un enregistrement


Sujet :

Access

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 61
    Points : 30
    Points
    30
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 184
    Points : 1 363
    Points
    1 363
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sql = "UPDATE Réponses SET Res = " & res

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 61
    Points : 30
    Points
    30
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  4. #4
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 184
    Points : 1 363
    Points
    1 363
    Par défaut
    Effectivement, il faut remplacer la virgule par un point.
    Voir Replace.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 61
    Points : 30
    Points
    30
    Par défaut
    Et je met quoi comme type au résultat que je récupère?

    Dim stock ?

    stockt = Replace(Result,";",".")

  6. #6
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 184
    Points : 1 363
    Points
    1 363
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sql = "UPDATE Réponses SET Res = " & replace(Result, ",", ".")

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 61
    Points : 30
    Points
    30
    Par défaut
    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?

  8. #8
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 184
    Points : 1 363
    Points
    1 363
    Par défaut
    Il suffit de rajouter une clause where qui va bien à la requête update.

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 61
    Points : 30
    Points
    30
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    sql = "UPDATE Réponses SET Res = " & Replace(Result, ",", ".") & " WHERE "Req_Audit_Question_Reponse![Numéro_Reponse]<>" " & Me![Numéro_Reponse] & ";"

  10. #10
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 184
    Points : 1 363
    Points
    1 363
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sql = "UPDATE Réponses SET Res = " & Replace(Result, ",", ".") & " WHERE [Numéro_Reponse] <> " & Numéro_Reponse.value
    Si Numéro_Reponse est numérique.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sql = "UPDATE Réponses SET Res = " & Replace(Result, ",", ".") & " WHERE [Numéro_Reponse] <> '" & replace(Numéro_Reponse.value, "'", "''") & "'"
    Si Numéro_Reponse est alphanumérique.

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 61
    Points : 30
    Points
    30
    Par défaut
    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???)

  12. #12
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 184
    Points : 1 363
    Points
    1 363
    Par défaut
    Tu es dans un formulaire basé sur la un enregistrement de la table Réponses ?

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 61
    Points : 30
    Points
    30
    Par défaut
    Oui c'est cela

  14. #14
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 184
    Points : 1 363
    Points
    1 363
    Par défaut
    Dans ce cas là, crée un champ Res basé sur le champ Res de ta table sur ton formulaire puis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [1.x] [crud] erreur lors de la mise à jour d'un enregistrement
    Par Mitaka dans le forum Symfony
    Réponses: 3
    Dernier message: 13/06/2008, 11h46
  2. Réponses: 0
    Dernier message: 19/02/2008, 11h35
  3. Mise à jour d'un enregistrement
    Par yagrasdemonde dans le forum Access
    Réponses: 6
    Dernier message: 08/03/2007, 22h32
  4. [D7][MySQL4.11][Débutant] Mise à jour d'un enregistrement
    Par birdytech dans le forum Bases de données
    Réponses: 1
    Dernier message: 29/01/2007, 09h53
  5. Mise à jour d'un enregistrement
    Par THkiller dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 28/08/2006, 14h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo