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 :

recordset pour modifier une valeur d'un champ


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 31
    Par défaut recordset pour modifier une valeur d'un champ
    Bonjour,

    J'ai fais un formulaire me permettant de déplacer un dossier de projet en cours vers le dossier projet archivé. Le formualire a pour source ma table projets.
    Je souhaite modifier le champ EtatProjet qui avait la valeur "En_cours" à "Archivé".
    Je ne sais pas comment faire.

    J'ai essayé avec des recordset, mais sans résultat.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Dim Obj_Recordset
    ' Instanciation de l'objet
    Set Obj_Recordset = Server.CreateObject("ADODB.Recordset")
    ' Ouverture
    Obj_Recordset.Open "SELECT * FROM Table Projets WHERE NumProjet = strNProjets", _
                      Obj_Connection, _
                      adOpenKeySet, _
                      adLockOptimistic
     
    Obj_Recordset.Fields("EtatProjet") = "Archivé"
    Obj_Recordset.Update ' Mise à jour
    Obj_Recordset.Close ' Fermeture
    Merci pour vos réponses

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 410
    Par défaut
    Essaye cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT * FROM Table Projets WHERE NumProjet = """  & strNProjets & """"
    Maintenant si c'est l'enregistrement courrant dans un formulaire lié tu peux sans doute aussi écrire simplement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    me.EtatProjet="Archivé"
    à la place de tout ton code.

    Il faudra détreminé sur quel événement mettre cette instruction mais c'est plus direct.

    Aussi je te recommande d'utilser des constantes symboliques pour tes états plutôt que des chaîne de caractères car comme cela le compilateur peut contrôler que l'état fait parti des valeurs valides.

    Pour ce faire tu peux créer un module "ConstantesGlobales" où tu stocke toutes ces valeurs et tu écrit un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public const ETAT_ARCHIVE as string = "Archivé"
    Dans ton code tu mets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    me.EtatProjet=ETAT_ARCHIVE
    .

    Un convention commune veut que les constantes soient écrites en majuscule pour les distinguer plus facilement des variables.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 31
    Par défaut
    Tout d'abord, merci pour ta réponse.

    J'ai modifié la requête, mais il me met une erreur 424, objet recquis

    J'ai bien essayé avant de recordset de faire sa directement comme mentionné précédemment avec un Me.EtatProjet = "Archivé" mais cela ne fonctionne pas.
    Pourtant mon formulaire à bien pour source ma table projet. Et j'ai aussi autorisé l'entré de données.
    Sa m’intéresserai de connaitre la solution, sa me faciliterai la tache pour d'autres formulaire.

  4. #4
    Membre Expert
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Par défaut
    Bonjour,

    Et au lieu d'ouvrir un recordset, si tu ouvrais une connexion pour faire une requête de mise à jour ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "update Table Projets set EtatProjet='Archivé' WHERE NumProjet = " & "'" & strNProjets & "'"

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 31
    Par défaut connection, recordset, Me......
    Bonjour,

    Tout d’abord, merci pour vos réponses

    Il est vrai que étant débutant en vba, je ne prend pas forcément les bon choix "technologique".
    Pour ce qui est de la connection, je ne comprend pas, j'ai recherché sur le FAQ et internet, mais rien de bien clair je trouve.
    Je suppose que pour le code posté précédemment, il est nécessaire de déclarer la connection?

    J'aurai voulu savoir pourquoi cela ne fonctionne pas avec la méthode:
    Me.EtatProjet = "archivé"
    Pour comprendre mon erreur.

    Pour ce qui est des autres solutions, elles semblent très intéressante, mais vu mon niveau, je ne sais pas laquelle choisir.
    Pourriez vous m'indiquer laquelle est la plus adaptée, afin que je puisse recentrer mes recherche?

    Merci pour vos réponses à venir.

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 410
    Par défaut
    Attention la technique ci dessous ne marche que si c'est l'enregistrement courrant dans un formulaire lié tu peux sans doute aussi écrire simplement :

    Code :Sélectionner tout - Visualiser dans une fenêtre à partme.EtatProjet="Archivé"

    Précise où ton code s'exécute.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

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

Discussions similaires

  1. trigger pour modifier une valeur après création du record
    Par awalter1 dans le forum Administration
    Réponses: 5
    Dernier message: 07/03/2011, 18h41
  2. Requête pour mettre une valeur a un champ.
    Par Jazz_ dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 18/10/2010, 11h35
  3. [AC-2007] Modifier une valeur d'un champ avec inputbox
    Par fabian_945 dans le forum VBA Access
    Réponses: 5
    Dernier message: 13/12/2009, 12h20
  4. [MySQL] condition de temps pour modifier une valeur
    Par Beniti dans le forum PHP & Base de données
    Réponses: 16
    Dernier message: 29/05/2008, 08h13
  5. syntax vb pour modifier la valeur d'un champs texte
    Par damien40 dans le forum VBA Access
    Réponses: 13
    Dernier message: 22/04/2008, 17h27

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