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 :

Mon code avec OpenRecordset ne fonctionne pas [AC-2000]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 232
    Par défaut Mon code avec OpenRecordset ne fonctionne pas
    Bonsoir et merci,
    Mon code ci-dessous ne fonctionne pas.
    J'ai une table MOY avec comme champ Valeur1(texte) et Moyenne (numérique).
    Dans une autre table MAINTENANCE, j'ai un champ Compteur et Koef.
    Lorsque je saisi une valeur dans le champ Compteur de ma table MAINTENANCE, je veux que la valeur du champ Moyenne de la table MOY pour lequel les champs compteur et valeur1 sont égaux, s'inscrive dans le champ Koef de ma table MAINTENANCE.
    J'ai donc écris le code ci-dessous, mais quelque soit la valeur du champ Compteur, Koef prends toujours la valeur 10.
    En fait il ne reconnais pas dans la table MOY la valeur du champ Compteur de la Table MAINTENANCE dirait-on?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Compteur_AfterUpdate()
    Dim Compteur As Recordset
    Dim base_courante As Database
    Set base_courante = CurrentDb
    Set Compteur = base_courante.OpenRecordset("SELECT * FROM MOY WHERE valeur1= "" & Compteur & "";")
    If Compteur.EOF Then
        Me.Koef = "10"
        Else
        Me.Koef = Compteur.Fields("moyenne")
    End If
    End Sub
    Quelqu'un verrait il l'erreur?
    Merci par avance.

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 684
    Par défaut
    Bonjour,

    peux-tu nous indiquer le type du champ valeur1 stp ?

    s'il s'agit d'un numérique, des guillemets sont en trop, et la requête deviendrait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Compteur = base_courante.OpenRecordset("SELECT * FROM MOY WHERE valeur1= " & Compteur & ";")
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel (3e édition)
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 232
    Par défaut
    Bonjour et merci,
    Valeur1 est de type texte.
    Peut être est ce important, les valeurs du champs Compteur de la table Maintenance est une liste modifiable, dont les valeurs sont issues du champs Valeur1 de la Table MOY.
    Merci encore
    A+

  4. #4
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 232
    Par défaut
    Bonsoir et merci,
    Cela ne fonctionne pas avec Me. , si valeur1="" et Me.compteur & "".
    la valeur par défaut est toujours 10.
    Mais si j'écris valeur1=""" et Me.Compteur & """, ça marche.
    Merci à tous pour votre aide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SQL = "SELECT * FROM MOY WHERE valeur1= """ & Me.Compteur & """;"
        Set Compteur = base_courante.OpenRecordset(SQL)

  5. #5
    Membre Expert

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Par défaut
    Bonjour,

    Effectivement, ça ne peut pas fonctionner. Le code est incohérent en ce qui concerne l'utilisation de la variable Compteur.

    Apparemment, il s'agit d'un formulaire qui contient un contrôle nommé Compteur.
    Et d'autre part, dans ta procédure tu crées une variable objet Recordset nommée aussi Compteur.

    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Compteur_AfterUpdate()
        Dim Compteur As Recordset
    
        Set Compteur = base_courante.OpenRecordset("SELECT * FROM MOY WHERE valeur1= "" & Compteur & "";")

    Alors soit tu modifies le nom de la variable Recordset dans la procédure (c'est ce qu'il y a de mieux à faire), soit tu rends explicite l'accès au contrôle Compteur comme montré ci-dessous, en utilisant le mot-clé Me pour désigner le formulaire.
    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        SQL = "SELECT * FROM MOY WHERE valeur1= " & Me.Compteur & ";"
        Set Compteur = base_courante.OpenRecordset(SQL)

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 23/12/2006, 13h46
  2. besoin aide bouton avec effet zoom fonctionne pas.
    Par zicomoun dans le forum Flash
    Réponses: 3
    Dernier message: 13/06/2006, 09h15
  3. Réponses: 5
    Dernier message: 14/05/2006, 23h41
  4. Réponses: 16
    Dernier message: 01/02/2006, 20h09
  5. Réponses: 7
    Dernier message: 24/01/2006, 12h03

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