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

Requêtes et SQL. Discussion :

OpenRecordset avec variable


Sujet :

Requêtes et SQL.

  1. #1
    Membre confirmé
    Homme Profil pro
    Logisitique
    Inscrit en
    Janvier 2018
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Logisitique

    Informations forums :
    Inscription : Janvier 2018
    Messages : 192
    Par défaut OpenRecordset avec variable
    Bonjour, est-il possible d'utiliser une variable pour définir le champs dans laquelle la donnée sera extraite.

    Exemple qui ne fonctionne pas: ligne.fields ("champsvar").value

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Dim champsvar As String
     
    champsvar = Article_TT.Value
     
     
    Set base = Application.CurrentDb
    Set ligne = base.OpenRecordset("Select * FROM Personnel WHERE Matricule = '" & FTMatricule.Value & "' ", dbOpenDynaset)
    ligne.MoveFirst
    FTRefTaille.Value = ligne.Fields("champsvar").Value
     
    ligne.Close
    base.Close
    Set ligne = Nothing
    Set base = Nothing
      0  0

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 443
    Par défaut
    Bonjour.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FTRefTaille = ligne.Fields(champsvar)
    Avec ton code tu demandais a trouver un champ dont le nom est [champsvar] et pas le contenu de la variable champsvar.
    Et en VBA Access, .value est a propriete par defaut donc pas besoin de la specifier. Tu peux le faire mais ce n'est pas obligatoire.

    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.
      1  0

  3. #3
    Membre confirmé
    Homme Profil pro
    Logisitique
    Inscrit en
    Janvier 2018
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Logisitique

    Informations forums :
    Inscription : Janvier 2018
    Messages : 192
    Par défaut
    Bonjour et merci de l'approche de la solution.

    je vais essayer d'expliquer un peu plus ce que j'aimerais obtenir:

    En fait, avec le code, extraire le contenu se trouvant dans un champs, mais ce champs est variable.

    Il devrait lire dans tout les champs de la table [Personnel] dont le champs [Matricule] est égal à la valeur de "FTMatricule".
    Récupérer la valeur du contenu se trouvant dans un des autres champs de cette ligne.
    Le champs contenant cette valeur varierait mais le nom de ce champs serait donné grâce à ma variable "champsvar".
    La valeur du contenu de ce champs ainsi désigné serait récupérée et donnée comme valeur à "FTRefTaille" (se trouvant dans mon formulaire)

    Pas facile tout cela....
      0  0

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 443
    Par défaut
    Bonjour.

    Tu m'as un peu perdu dans tous tes renvois.

    La solution que j'ai postee va marcher a condition que tu mettes la bonne valeur (le nom du champ voulu) dans champsvar.
    Chaque recordset a une collection Fields qui permet d'acceder a un champ par son nom.

    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.
      0  0

  5. #5
    Membre confirmé
    Homme Profil pro
    Logisitique
    Inscrit en
    Janvier 2018
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Logisitique

    Informations forums :
    Inscription : Janvier 2018
    Messages : 192
    Par défaut
    Désolé, si j'applique le code que tu m'as donné, j'ai un message erreur

    "erreur d'exécution 3061. Trop peu de paramètres. 1 attendu."

    j'ai vérifié et la variable (champsvar) donne bien le nom exact du champs.

    Mais toujours pas d'extraction de la valeur contenue dans ce champs...
    Voici le code :

    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
    Dim champsvar As String
     
    champsvar = Article_TT.Value
     
     
    Set base = Application.CurrentDb
    Set ligne = base.OpenRecordset("Select * FROM Personnel WHERE Matricule = '" & FTMatricule.Value & "' ", dbOpenDynaset)
     
    ligne.MoveFirst
    FTRefTaille = ligne.Fields(champsvar)
     
    ligne.Close
    base.Close
    Set ligne = Nothing
    Set base = Nothing
      0  0

  6. #6
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 443
    Par défaut
    Bonjour.

    Le "erreur d'exécution 3061. Trop peu de paramètres. 1 attendu." se produit probablement a l'ouverture du recordset, pas a la lecture du champ.

    Verifie ce que donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "Select * FROM Personnel WHERE Matricule = '" & FTMatricule.Value & "' "
    Il y a peut-etre une apostrophe dans ton maticule. Ca expliquerai le message.

    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.
      0  0

  7. #7
    Membre confirmé
    Homme Profil pro
    Logisitique
    Inscrit en
    Janvier 2018
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Logisitique

    Informations forums :
    Inscription : Janvier 2018
    Messages : 192
    Par défaut
    Dans le code:

    FTMatricule.value = "446002461" (c'est correct)
    DbOpenDynaset = 2
    FTRefTaille = NULL
    ligne.Fields (champsvar), (ligne.Fields me donne < Variable Objet ou variable de bloc WITH non définie (champsvar) me donne = "Blouson court" (ce qui est bien le nom d'un de mes champs))
      0  0

  8. #8
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 443
    Par défaut
    OK, alors c'est peut-etre l'espace qui pose un probleme.

    Essaye :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FTRefTaille = ligne.Fields("[" & champsvar & "]")
    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.
      0  0

  9. #9
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 443
    Par défaut
    Ou si le 1er ne marche pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FTRefTaille = ligne.Fields("""[" & champsvar & "]""")
    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.
      0  0

  10. #10
    Membre confirmé
    Homme Profil pro
    Logisitique
    Inscrit en
    Janvier 2018
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Logisitique

    Informations forums :
    Inscription : Janvier 2018
    Messages : 192
    Par défaut
    Cela ne change malheureusement rien au résultat...
      0  0

  11. #11
    Modérateur

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

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FTRefTaille=ligne.Fields(champsvar).Value
    Il est possible que finalement Access prenne cela pour une assignation d'objet quoi qu'il n'y a pas de Set.

    Aussi, si cela ne marche pas ajoute :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    debug.print ligne.Fields(champsvar)
    C'est peut-etre l'assignation a FTRefTaille qui pose un probleme.

    Quel est le type de FTRefTaille ?

    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.
      0  0

  12. #12
    Membre confirmé
    Homme Profil pro
    Logisitique
    Inscrit en
    Janvier 2018
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Logisitique

    Informations forums :
    Inscription : Janvier 2018
    Messages : 192
    Par défaut
    Rien à faire, toujours le même problème...

    FTRefTaille est une zone de texte sur mon formulaire
      0  0

  13. #13
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 443
    Par défaut
    Bonjour.

    Y compris avec debug.print ligne.Fields(champsvar) ????

    Ligne est bien un DAO.Recordset, n'est-ce pas ?

    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.
      0  0

  14. #14
    Membre confirmé
    Homme Profil pro
    Logisitique
    Inscrit en
    Janvier 2018
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Logisitique

    Informations forums :
    Inscription : Janvier 2018
    Messages : 192
    Par défaut
    A moins que je n'aie pas tout suivi , même avec debug.print ne fonctionne pas.

    ligne est bien un recordset...

    je replace par sécurité le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim ligne As Recordset: Dim base As Database
    Dim champsvar As String
     
    champsvar = Article_TT.Value
     
    'Recherche Taille venant du tableau taille suivant matricule et Article_TT donné afin de contrôler la conformité de la demande du Pers
    Set base = Application.CurrentDb
    Set ligne = base.OpenRecordset("Select * FROM Personnel WHERE Matricule = '" & FTMatricule.Value & "'", dbOpenDynaset)
    ligne.MoveFirst
    FTRefTaille = ligne.Fields(champsvar).Value
    Debug.Print ligne.Fields(champsvar)
      0  0

  15. #15
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 443
    Par défaut
    Pour faire le debugage, il faut mettre le debug.print avant l'assignation.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Debug.Print ligne.Fields(champsvar)
    FTRefTaille = ligne.Fields(champsvar).Value
    Et si tu as active la gestion d'erreur par un On Error Goto mets la en commentaire. Access va s'arreter sur le ligne qui lui pose un probleme.

    ligne est bien un recordset...
    un DAO.Recordset ?

    En passant le ligne.MoveFirst ne sert a rien.
    Par defaut Access se place sur le 1er enregistrement du recordset.

    Si tu veux faire quelque chose d'utile il faudrait mettre quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if not ligne.eof() then
        'Ici ton code
     else
       msgbox "Impossible de trouver le matricule." 'Ce devrait etre un cas impossible mais sait-on jamais.
    end if
    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.
      0  0

  16. #16
    Membre confirmé
    Homme Profil pro
    Logisitique
    Inscrit en
    Janvier 2018
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Logisitique

    Informations forums :
    Inscription : Janvier 2018
    Messages : 192
    Par défaut
    Etant débutant, je commence vraiment à m perdre.

    Difficile pour moi de savoir ou placer toutes les instructions.

    Ce qui m'ennuie, c'est qu'apparemment décider du nom d'un champs utilisé pour un Select par une variable est possible.

    je sais plus trop quoi faire.

    Je vais essayer de recopier le code, de l'adapter et de l'essayer dans un autre exemple pour voir si cela fonctionne...

    Sniffff
      0  0

  17. #17
    Membre confirmé
    Homme Profil pro
    Logisitique
    Inscrit en
    Janvier 2018
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Logisitique

    Informations forums :
    Inscription : Janvier 2018
    Messages : 192
    Par défaut
    Je viens d'essayer en oubliant la variable qui définit le champs et tout fonctionne correctement.

    C'est donc bien le fait d'assigner une variable pour désigner le champs qui pose problème...
      0  0

  18. #18
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 443
    Par défaut
    OK, suite de la discussion ici :

    https://www.developpez.net/forums/d1...re-d-variable/

    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.
      0  0

Discussion fermée
Cette discussion est résolue.

Discussions similaires

  1. Requête avec variable incrémentée sur changement de clé.
    Par souellet dans le forum Langage SQL
    Réponses: 7
    Dernier message: 21/09/2005, 22h47
  2. Merge avec variables
    Par kluh dans le forum Oracle
    Réponses: 18
    Dernier message: 25/07/2005, 14h31
  3. [AS2] Pb avec variables dans syntaxe
    Par ooyeah dans le forum ActionScript 1 & ActionScript 2
    Réponses: 1
    Dernier message: 05/07/2005, 11h28
  4. Boucle avec variable à incrémenter
    Par snoop dans le forum Linux
    Réponses: 2
    Dernier message: 19/03/2004, 11h07
  5. Cacher Variable Url avec Variable Globale
    Par danuz dans le forum XMLRAD
    Réponses: 6
    Dernier message: 26/09/2003, 17h20

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