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 :

Variable non acceptée dans Dlookup


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 129
    Par défaut Variable non acceptée dans Dlookup
    Bonjour à tous ,

    Je cherche à remplir un formulaire indépendant à partir d'un combobox et voudrais que le nom du formulaire soit mis en variable :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Function AtteindreClient()
     
    Dim frm As Form
    Set frm = Form_clients
     
    Me.IdClient = frm.Cboatteindreclient
     
    Me.Prénom = DLookup("[prénom]", "[rqclients]", "[idclient] = '" & frm.[IdClient] & "'")
     
    End Function
    Access 2010 me dit que l'expression du critère est incompatible ...

    Deplus, connaitriez vous une méthode pour simplifier le code pour remplir un formulaire indépendant ? Faut il obligatoirement passer par dlookup ?

    Merci d'avance

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

    n'est pas une variable, c'est pour cela que cela ne va pas.

    Dans ton cas pour remplir entièrement un formulaire indépendant, passes par un recordset DAO (tuto dans la liste des tutos).

    Philippe

  3. #3
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 129
    Par défaut
    Merci à toi pour cette prompte réponse !

    J'ai mis ce code qui marche parfaitement pour atteindre un client et remplir tous les champs du formulaire par automatisme:

    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
    Private Function AtteindreClient()
     
    Dim f As Object
    Dim rs As DAO.Recordset
     
    On Error Resume Next
       Set rs = CurrentDb.OpenRecordset("select * from rqclients where idclient = " & Me![Cboatteindreclient])
     
     
        For Each f In rs.Fields
            If IsError(Me.Form.Controls(f.Name).Tag) Then
            Else
                Me.Controls(f.Name) = f.Value
            End If
        Next
     
        rs.Close
        Set rs = Nothing
        Me.Requery
     
    End Function
    Maintenant, est il possible de réutiliser ce code pour les actions ajout/actualisation dans la table ?.

    Peut on distinguer certains champs à ne pas prendre en compte dans ces 2 dernières actions ? (tagger les champs non importants par ex ...)

    Je suis débutant en VBA , merci pour votre patience et conseils ...

  4. #4
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 605
    Billets dans le blog
    67
    Par défaut
    Salut,

    Pourquoi utiliser un formulaire indépendant ?

    Tu peux très bien lier ton formulaire à la source "rqclients" et après utiliser un code du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     With Me.Recordset.Clone
        .FindFirst "[idclient] = " & Me![Cboatteindreclient]
        If Not .NoMatch Then Me.Bookmark = .Bookmark
        End With
    Qui positionne le formulaire sur le bon client

    A+
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  5. #5
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 129
    Par défaut
    L'utilisation d'un formulaire indépendant est pour raison de sécurité dans le contrôle des champs, cela permet d'effectuer un contrôle de bon remplissage de tous les champs obligatoires ...

    J'ai essayé en incorporant un beforeupdate sur le formulaire quand le formulaire était encore lié à la requête source mais, au cas ou l'on décidait de ne pas poursuivre le remplissage, on se retrouvait bloqué car access demande de remplir les champs obligatoirement.

    Si je décidais de ne pas continuer la saisie de tous les champs obligatoires, impossible de quitter l'enregistrement en cours ...

  6. #6
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 605
    Billets dans le blog
    67
    Par défaut
    Si je décidais de ne pas continuer la saisie de tous les champs obligatoires, impossible de quitter l'enregistrement en cours ...
    Parce que tu dois avoir des champs obligatoires dans ta source ou une intégrité référentielle.

    Dans ce cas, pourquoi ne pas faire un "Escape" ou un Me.Undo sur ton formulaire lié à ta source ?
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

Discussions similaires

  1. Variable non stockée dans une fonction
    Par LaVaZza dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 16/07/2009, 17h49
  2. Réponses: 6
    Dernier message: 24/04/2009, 13h34
  3. Réponses: 2
    Dernier message: 15/12/2008, 18h04
  4. Variable non évaluée dans la balise
    Par Mister Nono dans le forum Struts 1
    Réponses: 2
    Dernier message: 16/11/2007, 15h12
  5. variable non reconnue dans une requête sql
    Par sanatou dans le forum C++
    Réponses: 3
    Dernier message: 13/12/2006, 17h43

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