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

IHM Discussion :

Modifier une valeur dans une table differente de celle du formulaire


Sujet :

IHM

  1. #1
    Membre à l'essai
    Homme Profil pro
    Stagiaire
    Inscrit en
    Avril 2013
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Chine

    Informations professionnelles :
    Activité : Stagiaire

    Informations forums :
    Inscription : Avril 2013
    Messages : 26
    Points : 21
    Points
    21
    Par défaut Modifier une valeur dans une table differente de celle du formulaire
    Bonjour a tous !

    J'essaye d'update une valeur dans une autre table que celle liee au formulaire mais je n'arrive pas acceder au bon ID, ca modifie toujours la premiere valeur de la table.
    J'ai isole les lignes qui copient ma valeur: 21 a 24.

    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
    30
    31
    32
    33
    Private Sub Form_BeforeUpdate(Cancel As Integer)
        Dim ctr          As Control
        Dim rsGiftStock  As Recordset
     
        Set rsGiftStock = CurrentDb.OpenRecordset("Gift Stock")
        'for each field in the form
        For Each ctr In Me.Controls
            'field filter
            Select Case ctr.ControlType
            Case acCheckBox, acTextBox, acComboBox, acListBox
                'if current value is different from the old value
                If Nz(ctr.Value) <> Nz(ctr.OldValue) _
                And ctr.Name <> "G2" And ctr.Name <> "GID2" And ctr.Name <> "CS2" _
                And ctr.Name <> "R2" And ctr.Name <> "RD2" And ctr.Name <> "V2" _
                And ctr.Name <> "UID2" And ctr.Name <> "MD2" Then
                    Me.Modification_date = Date
                    Me.User_ID = Environ("UserName")
     
     
     
                    With rsGiftStock
                        .Edit
                        !Stock = Me.Current_stock
                        .Update
     
     
     
                    End With
                End If
            End Select
        Next
        rsGiftStock.Close
    End Sub
    Il manque donc une instruction qui me premettrait d'acceder a la bonne valeur, du genre WHERE Me.Id = rsGiftStock!ID

    Si vous avez une idee ou des questions, n'hesitez pas !

    Merci d'avance,
    Poh

    P.S.: Claviers chinois sans accent

  2. #2
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 107
    Points : 5 230
    Points
    5 230
    Par défaut
    Bonjour,

    Il faut utiliser une instruction du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .findfirst "Id = " & MonID
    Ou plus simplement faire un update direct sur la table. Exemple de syntaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    currentDb.Execute "UPDATE MaTable SET Monchamp=" & mavaleur & " WHERE id=" & MonId, dbFailOnError
    C'est bien plus court et on bénéficie en prime d'une gestion d'erreur intégrée
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

  3. #3
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Bonjour,

    Comme ça, je dirais qu'il manque effectivement un Findfirst

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FindFirst "[ID]=" & Me.Id
    à placer avant l'EDIT ligne 22.

    Après, pour aller jusqu'au bout (avec vérification avant exécution de l'EDIT), il faudrait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    With rsGiftStock
       FindFirst "[ID]=" & Me.Id
       If Not .Nomatch then
           .Edit
           !Stock = Me.Current_stock
           .Update
       end if
    end with
    Bonne continuation
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  4. #4
    Membre à l'essai
    Homme Profil pro
    Stagiaire
    Inscrit en
    Avril 2013
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Chine

    Informations professionnelles :
    Activité : Stagiaire

    Informations forums :
    Inscription : Avril 2013
    Messages : 26
    Points : 21
    Points
    21
    Par défaut
    Super, merci les amis !

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/04/2015, 11h17
  2. Réponses: 8
    Dernier message: 28/11/2011, 11h40
  3. quand je selectionne une valeur dans une liste, retourne une autre valeur
    Par nsqualli dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 29/12/2008, 14h23
  4. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48
  5. Réponses: 1
    Dernier message: 25/09/2006, 17h15

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