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 :

Recherche enregistrement dans une table en VBA [AC-2000]


Sujet :

VBA Access

  1. #1
    Membre du Club
    Inscrit en
    Février 2008
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 100
    Points : 56
    Points
    56
    Par défaut Recherche enregistrement dans une table en VBA
    Bonjour à toutes et tous

    Après avoir parcouru plusieurs post et plusieurs tuto, je commence à désespérer.
    Je voudrais rechercher un enregistrement dans une table liée et en ressortir la valeur d'une des colonnes.

    En simplifiant au maximum mon projet, je veux inscrire dans une table (situé sur notre serveur) des chemins pour accéder à des dossiers. Chaque machine à son propre dossier sur le réseau où l'on peut retrouver toutes les sortes de schéma (électriques, pneumatique,...), notices...
    J'ai créé une table "Table1" avec les colonnes suivantes :
    - NumAuto (clé primaire)
    - TYPE_MACHINE (Texte)
    - LIEN_DOSSIER (Texte)

    Dans un formulaire "Formulaire1", un seul champ texte "texte1" où j'ai j'inscris le type de la machine.
    Dans ma table, pour mon essai, j'ai 3 enregistrements
    N°1 : TYPE_MACHINE = Machine1 , LIEN_DOSSIER = c:\Machine1
    N°2 : TYPE_MACHINE = Machine2 , LIEN_DOSSIER = c:\Machine2
    N°3 : TYPE_MACHINE = Machine3 , LIEN_DOSSIER = c:\Machine3

    Je voudrais que lorsque j'inscris dans le formulaire, dans mon champ texte et après un afterUpdate, pouvoir récupérer en VBA la valeur du champs LIEN_DOSSIER correspondant à la machine dans texte1 et la mettre dans une variable pour une utilisation ultérieure.

    J'ai essayé en utilisant des Recordset. mais sans succès. J'ai toujours des message d'erreur.
    Merci pour votre aide.

    Cordialement.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France

    Informations professionnelles :
    Secteur : Services à domicile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 219
    Points : 1 707
    Points
    1 707
    Par défaut
    bonsoir,
    l’utilisation d’un recordset est bien approprié à ce type de recherche, quelle est l’erreur ?
    tu peux aussi utiliser les « fonctions de domaine » en l’occurrence DLookup().

  3. #3
    Membre du Club
    Inscrit en
    Février 2008
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 100
    Points : 56
    Points
    56
    Par défaut
    Bonjour

    Merci pour ta réponse.
    En cherchant sur différents post, j'ai écris ces quelques lignes, je n'ai plus d'erreur mais je ne sais pas si celà fonction correctement. Je voudrais récupérer le chemin que j'ai inscrit dans ma table dans la variable "VARIABLE_CHEMIN" pour une utilisation ultérieure.
    Je ne sais pas si c'est comme cela que je dois écrire la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CHEMIN oDb, "Table1", strCritere, VARIABLE_CHEMIN
    Je ne sais pas à quoi correspond oBtn. J'ai inscris ma variable.
    Voici le code complet que j'ai inscris :
    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
    Option Compare Database
    Sub CHEMIN(oDb As DAO.Database, strTableName As String, strCritere As String, oBtn)
    Dim oRst As DAO.Recordset
    Set oRst = oDb.OpenRecordset("Select NumAuto From [" & strTableName & "] WHERE " & strCritere, dbOpenForwardOnly)
     
    oRst.Close
    Set oRst = Nothing
     
    End Sub
     
    Private Sub Texte1_AfterUpdate()
     
    Dim oDb As DAO.Database
    Dim strCritere As String
    Dim VARIABLE_CHEMIN As String
     
    Set oDb = CurrentDb
    strCritere = "TYPE_MACHINE=" & Chr(34) & [Texte1].Value & Chr(34)
     
    CHEMIN oDb, "Table1", strCritere, VARIABLE_CHEMIN
     
    End Sub
    Et je ne vois pas comment le code peut récupérer la valeur de ma troisième colonne.
    Merci de votre aide.
    Cordialement.

  4. #4
    Membre du Club
    Inscrit en
    Février 2008
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 100
    Points : 56
    Points
    56
    Par défaut
    Bonjour

    Est-ce que quelqu'un aurait une solution à mon problème ?
    Cordialement.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2010
    Messages : 70
    Points : 79
    Points
    79
    Par défaut
    Bonjour,

    Tu peux travailler avec la fonction DLookup.

    Résultat=DLookup("[Colonne2]","Table1","[Colonne1]=Critère".
    Cela signifie que le contenu de ta colonne 2 sera le résultat de la recherche dans la table1 avec comme le critère de la colonne 1.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Private Sub Texte1_AfterUpdate()
       Dim Résultat as String      
       Résultat=DLookup("[Colonne2]","Table1","[Colonne1]='" & Texte1.Text & "'")
    End sub

  6. #6
    Membre du Club
    Inscrit en
    Février 2008
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 100
    Points : 56
    Points
    56
    Par défaut
    Bonjour

    Merci Le vieux et merci domibigoudi votre aide
    Cela fonctionne dans le petit projet tout simple. Je vais essayer dans mon plus gros projet de gestion de machine.
    Je vous tiens au courant.
    Cordialement.

  7. #7
    Membre du Club
    Inscrit en
    Février 2008
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 100
    Points : 56
    Points
    56
    Par défaut
    Bonjour à tous

    J'ai essayé sur mon plus gros projet et cela fonctionne correctement.
    Merci beaucoup de votre aide.

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

Discussions similaires

  1. [AC-2010] Recherche d'enregistrement dans une table
    Par mafooley dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 02/07/2015, 11h45
  2. Réponses: 5
    Dernier message: 21/06/2012, 21h28
  3. Réponses: 1
    Dernier message: 26/08/2009, 08h41
  4. Réponses: 7
    Dernier message: 21/08/2006, 16h27
  5. Réponses: 7
    Dernier message: 07/06/2006, 07h32

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