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

VBA Access Discussion :

Mise à jour d'une donnée spécifique dans la BD [AC-2007]


Sujet :

VBA Access

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2008
    Messages : 94
    Points : 73
    Points
    73
    Par défaut Mise à jour d'une donnée spécifique dans la BD
    Bonjour,

    J'ai un problème, je n'arrive pas à modifier des valeurs dans la base de données selon une condition.

    En faite, dans une table test2 lorsque dans la colonne A il y a la valeur "coco", la valeur se trouvant dans la colonne B est mis à jour (date d'aujourd'hui)

    J'ai essayé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim rec As Recordset
     
    Set rec = CurrentDb.OpenRecordset("test2", dbOpenSnapshot)
     
    'Parcourir la table
    Do While Not rec.EOF
            If rec.Fields(5) = "coco" Then
                str_sql2 = "update test2 set " & rec.Fields(6) & " = " & Date
                CurrentDb.Execute (str_sql2)
            End If
        rec.MoveNext
    Loop
    Merci par avance

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 206
    Points : 243
    Points
    243
    Par défaut
    Je n'utilise pas la propriété fields habituellement mais en terme de SQL il suffit de faire ça à la place de ta boucle :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    str_sql2 = " UPDATE test2 SET "  &  rec.Fields(6) & " = " & Date & " WHERE " &  rec.Fields(5)  & " = 'coco' "
    Si tu connais le nom des colonnes autant les mettre directement dans la requêtes pour éviter les problèmes en cas de modification de la table

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    str_sql2 = " UPDATE test2 SET Colonne1 = " & Date & " WHERE Colonne2 = 'coco' "

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2008
    Messages : 94
    Points : 73
    Points
    73
    Par défaut
    Merci tarnx, pour ton aide et tes conseils. C'est bon.

    J'avais mis des fields() un peu partout, au cas où on modifie le nom dse colonnes dans la table.
    Mais c'est vrai que si l'on modifie la table (ajout ou suppression d'une colonne ) ce sera moche pou la suite.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2008
    Messages : 94
    Points : 73
    Points
    73
    Par défaut
    J'ai un autre problème :

    En faite, je voudrais qu'a une date précise (27/09/2004) la colonneA se met à jour. Sachant que la colonneB est de type Texte.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim rec As Recordset
     
    Set rec = CurrentDb.OpenRecordset("test2", dbOpenSnapshot)
     
    Do While Not rec.EOF
     
            str_sql2 = "UPDATE test2 SET colonneA = 'toto' WHERE colonneB > 27/09/2004"
            CurrentDb.Execute (str_sql2)
        'End If
     
        rec.MoveNext
    Loop
    J'ai essayé de convertir la colonneB en date genre :

    mais ça ne fonctionne pas

    Merci par avance

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2008
    Messages : 94
    Points : 73
    Points
    73
    Par défaut
    voici la soluce :

    Finallement, j'ai changé le type de la colonneB en date dans la base de donnée et j'ai mis ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            str_sql2 = "UPDATE test2 SET colonneA = 'toto' WHERE colonneB <  #27/09/2004#"

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

Discussions similaires

  1. Mise à jours d'une donnée dans une autre feuille
    Par isarian dans le forum Excel
    Réponses: 1
    Dernier message: 13/10/2010, 15h43
  2. Réponses: 5
    Dernier message: 09/10/2007, 20h49
  3. Mise à jour base des données modifiées dans le DataGridView
    Par dolyne.b dans le forum Windows Forms
    Réponses: 9
    Dernier message: 26/04/2007, 15h58
  4. Réponses: 5
    Dernier message: 27/08/2006, 14h18
  5. Réponses: 1
    Dernier message: 27/04/2006, 18h22

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