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 :

[Access 2002] Récupérer la valeur du NumAuto qui vient d'être ajouté


Sujet :

VBA Access

  1. #1
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 958
    Points : 937
    Points
    937
    Par défaut [Access 2002] Récupérer la valeur du NumAuto qui vient d'être ajouté
    Bonjour tout le monde.
    Comme l'indique le titre, j'aimerais récupérer la valeur de la clé primaire (NumAuto) de l'enregistrement qui vient d'être ajouté.
    J'ai suivi cette question de la FAQ : Comment savoir quelle valeur vient de prendre un champ NuméroAuto après l'ajout d'un enregistrement ?
    Et j'ai donc pondu le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Set bd = CurrentDb
    Dim tVendeur As Recordset
    Set tVendeur = bd.OpenRecordset("VENDEUR", DB_OPEN_DYNASET)
    tVendeur.AddNew
    NoVendeur = tVendeur("NumVendeur")
    tVendeur![NomVendeur] = oWSht.Cells(i, 3)
    tVendeur.Update
    Ma table est de la forme :
    VENDEUR (NumVendeur, NomVendeur)
    NoVendeur est la variable qui doit récupérer la valeur de NumVendeur qui vient d'être ajouté.
    Quand je place un point d'arrêt pour voir ce que contient l'expression
    tVendeur("NumVendeur")
    je vois "Variable objet ou variable de bloc With non définie" et bien entendu, NoVendeur ne contient rien.

    Merci d'avance à ceux qui me liront
    Si ma réponse vous a été utile pensez à voter Pour

    Avant de poster sur le forum Access :
    FAQ > SOURCES > COURS > FORUM > GOOGLE
    Pas de question par MP ou je mords


  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Es-tu sur des orthographes des champs ?
    Comment est déclaré NoVendeur et où ?

    Essayes de mettre une requête SQL à la place de la table VENDEUR.

    Starec

  3. #3
    Membre actif Avatar de psykodumarteau
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    184
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 184
    Points : 218
    Points
    218
    Par défaut
    Bonjour,

    Dans l'ouverture de ton recordset, tu mets un type "DB_OPEN_DYNASET". C'est pas plutôt "dbOpenDynaset"?

    Cordialement
    Etant philosophe, j'ai un problème pour chaque solution. [R. Zend]

  4. #4
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 958
    Points : 937
    Points
    937
    Par défaut
    Citation Envoyé par Starec Voir le message
    Bonjour

    Es-tu sur des orthographes des champs ?
    Comment est déclaré NoVendeur et où ?
    Pour l'orthographe, c'est ok.
    Pour NoVendeur, il est déclaré au début de ma procédure comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim NoVendeur As Integer
    Citation Envoyé par Starec Voir le message
    Essayes de mettre une requête SQL à la place de la table VENDEUR.
    Donc il faudrait mettre un truc de la forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    req = "INSERT INTO ..."
    DoCmd.RunSql req
    au lieu d'utiliser la DAO, c'est bien ça ?
    Si ma réponse vous a été utile pensez à voter Pour

    Avant de poster sur le forum Access :
    FAQ > SOURCES > COURS > FORUM > GOOGLE
    Pas de question par MP ou je mords


  5. #5
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 958
    Points : 937
    Points
    937
    Par défaut
    Citation Envoyé par psykodumarteau Voir le message
    Bonjour,

    Dans l'ouverture de ton recordset, tu mets un type "DB_OPEN_DYNASET". C'est pas plutôt "dbOpenDynaset"?

    Cordialement
    Ben c'est possible mais j'ai toujours fait comme ça et on m'a appris comme ça, donc je pense que ça marche aussi
    Mais je vais tester quand même

    Edit : Après test, il semblerait que la bonne syntaxe soit celle que tu as donné, mais avec ma syntaxe ça marche aussi, donc les trucs que j'ai déjà fait comme ça, resteront comme ça, mais je mettrai la bonne syntaxe pour les prochains
    Si ma réponse vous a été utile pensez à voter Pour

    Avant de poster sur le forum Access :
    FAQ > SOURCES > COURS > FORUM > GOOGLE
    Pas de question par MP ou je mords


  6. #6
    Invité
    Invité(e)
    Par défaut
    Re

    Si tu mets cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    req = "INSERT INTO ..."
    Cela ne sert à rien tout ce que tu as fait, je te parles d'une simple requête SELECT.

    Starec

  7. #7
    Invité
    Invité(e)
    Par défaut
    Re

    Cela ne posera peut-être pas de problème, mais ta variable doit être de type long, car NumAuto est un long.

    Starec

  8. #8
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 958
    Points : 937
    Points
    937
    Par défaut
    Citation Envoyé par Starec Voir le message
    Re

    Si tu mets cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    req = "INSERT INTO ..."
    Cela ne sert à rien tout ce que tu as fait, je te parles d'une simple requête SELECT.

    Starec
    J'ai testé avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set tVendeur = bd.OpenRecordset("SELECT NumVendeur FROM VENDEUR;", dbOpenDynaset)
    mais aucun changement

    Citation Envoyé par Starec Voir le message
    Re

    Cela ne posera peut-être pas de problème, mais ta variable doit être de type long, car NumAuto est un long.
    C'est fait !
    Si ma réponse vous a été utile pensez à voter Pour

    Avant de poster sur le forum Access :
    FAQ > SOURCES > COURS > FORUM > GOOGLE
    Pas de question par MP ou je mords


  9. #9
    Membre actif Avatar de psykodumarteau
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    184
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 184
    Points : 218
    Points
    218
    Par défaut
    re,

    je viens de relier ton code, essaye de remplace
    NoVendeur = tVendeur("NumVendeur")
    Par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NoVendeur = tVendeur.Fields("NumVendeur")
    Après essaye d'inverser les lignes
    NoVendeur = tVendeur("NumVendeur")
    et
    tVendeur![NomVendeur] = oWSht.Cells(i, 3)
    et si ca marche toujours, tu peux essayer de récupére la valeur à près le "Update" même si c'est pas très propre.

    Cordialement
    Etant philosophe, j'ai un problème pour chaque solution. [R. Zend]

  10. #10
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 958
    Points : 937
    Points
    937
    Par défaut
    Yop !
    Je viens donner des nouvelles : le fait d'inverser les deux lignes était visiblement la bonne solution.
    D'ailleurs c'est logique quand on y pense. Le numauto est créé quand un enregistrement est ajouté, et pour que l'enregistrement soit effectif, il faut que la ou les autres données de la table soient renseignées.
    Il est donc inutile de tenter de récupérer un numauto alors qu'il n'a pas encore été créé.
    C'est bien vu
    Bon je vous tiens au courant si je rencontre d'autres difficultés, mais je pense que c'est ok, donc :


    P.S : Il ne me reste plus qu'à régler mon problème de checkbox pour boucler mon appli, donc si des âmes charitables passent dans le coin, ça se passe par là : Cocher des CheckBox d'un état en fonction d'élements sélectionnés d'une zone de liste
    Merci d'avance
    Si ma réponse vous a été utile pensez à voter Pour

    Avant de poster sur le forum Access :
    FAQ > SOURCES > COURS > FORUM > GOOGLE
    Pas de question par MP ou je mords


  11. #11
    Membre habitué
    Inscrit en
    Novembre 2006
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 257
    Points : 153
    Points
    153
    Par défaut Ne peut-être plus simple ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tVendeur(0) juste après tVendeur.addnew
    , ça devrait te donner la réponse!

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/10/2008, 10h59
  2. Réponses: 17
    Dernier message: 08/08/2008, 20h13
  3. Réponses: 8
    Dernier message: 07/08/2008, 15h48
  4. Réponses: 1
    Dernier message: 09/10/2006, 21h31
  5. Réponses: 5
    Dernier message: 09/09/2005, 17h51

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