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

IHM Discussion :

Nom Champs base données et Form


Sujet :

IHM

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    février 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2008
    Messages : 23
    Points : 16
    Points
    16
    Par défaut Nom Champs base données et Form
    Bonjour,

    J'ai créé une application basée avec Access. J'ai depuis peu un soucis, j'ai créé des requêtes avancées (avec condition) et depuis pour accéder à certain champs je suis obligé d'utiliser la syntaxe suivantes : rstSubForm![OrdresFabrications.NumCmd], précédemment j’utilisai la syntaxe suivante : rstSubForm![NumCmd].
    Dans certain formulaire ou je n'ai pas fait de requête avancé j'ai des erreurs VBA car le champ est introuvable.

    Savez-vous pourquoi et y'a-t-il une solution pour que cela fonctionne dans tous les cas.

    Merci

  2. #2
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité mais encore activé
    Inscrit en
    novembre 2004
    Messages
    4 991
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité mais encore activé

    Informations forums :
    Inscription : novembre 2004
    Messages : 4 991
    Points : 8 453
    Points
    8 453
    Par défaut
    bonjour,
    les crochets [] (ou brackets en anglais) sont utilisés pour délimiter les objets, or ici il en délimite 2 à la fois :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     rstSubForm![OrdresFabrications.NumCmd]
    de plus, si rstSubForm désigne une source de données, il ne devrait y avoir qu'un seul objet juste après :
    rstSubForm![OrdresFabrications] ou rstSubForm![NumCmd]
    Si ce n'est pas le cas, il faudrait préciser quel objet se cache derrière ce nom.
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    février 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2008
    Messages : 23
    Points : 16
    Points
    16
    Par défaut
    Bonjour,

    J'ai un formulaire qui execute la requéte suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT OrdresFabrications.*, OrdresFabrications.NumCmd FROM OrdresFabrications WHERE (((OrdresFabrications.NumCmd) Is Null) AND ((OrdresFabrications.Soldé)=False)) ORDER BY OrdresFabrications.NumOF;
    OrdresFabrications est une table externe.

    Dans un formulaire j'ai des zones de text dont la source de contrôle est NumOF dans d'autre cas la source de contrôle est OrdresFabrications.NumCmd

    j'ai des macro VBA qui peuvent s'executer sur différentes form (Requétes différentes) mais avec les mêmes champs, pour que mes macros fonctionnes partous j'ai ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Dim frmCurrentForm As Form
        Set frmCurrentForm = Screen.ActiveForm
        Set rstSubForm = frmCurrentForm.Recordset

    Du coup dans je me suis retrouvé à avoir des erreurs car dans certain formulaire je déclare la source de contrôle en NumCmd et d'autre en OrdresFabrications.NumCmd. car la sources de contôle des champs n'était pas déclaré pareil.
    Je ne sais pas pourquoi en fonction de la requéte formulaire je suis obligé de mettre OrdresFabrications.XXX.

    Cordialement,

  4. #4
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    rédacteur/modérateur
    Inscrit en
    avril 2005
    Messages
    11 085
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : rédacteur/modérateur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2005
    Messages : 11 085
    Points : 22 435
    Points
    22 435
    Par défaut
    Bonjour,

    Ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT OrdresFabrications.*, OrdresFabrications.NumCmd FROM OrdresFabrications WHERE (((OrdresFabrications.NumCmd) Is Null) AND ((OrdresFabrications.Soldé)=False)) ORDER BY OrdresFabrications.NumOF;
    doit être écrit comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT OrdresFabrications.* FROM OrdresFabrications WHERE (((OrdresFabrications.NumCmd) Is Null) AND ((OrdresFabrications.Soldé)=False)) ORDER BY OrdresFabrications.NumOF;
    En effet le * indique tous les champs de la table, NumCmd en fait parti.

    Pour cette source de données on peut écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rstSubForm.fields("NumCmd").value
    ou
    Le ! indique la propriété par défaut d'une classe, le recordset dao a pour propriété par defaut Fields donc on peut faire la contraction. Personnellement je préfère un code plus verbeux mais sans ambiguïté de lecture.

    Avec une autre requête le nom peut changer, mais ceci [OrdresFabrications.NumCmd] ne pourra être utilisé que dans un cas comme le suivant (sauf erreur) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select NumCmd as [OrdresFabrications.NumCmd] from ...
    Il y a cependant une bonne dose de masochisme pour mettre un . dans une étiquette SQL.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  5. #5
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité mais encore activé
    Inscrit en
    novembre 2004
    Messages
    4 991
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité mais encore activé

    Informations forums :
    Inscription : novembre 2004
    Messages : 4 991
    Points : 8 453
    Points
    8 453
    Par défaut
    bonsoir,
    @ loufab:
    Il y a cependant une bonne dose de masochisme pour mettre un . dans une étiquette SQL.
    ce n'est pas un alias, c'est la syntaxe classique NomdelaTable.NomduChamp. Si on utilise * dans un SELECT et qu'on ajoute une seconde (ou troisième) fois le même champ, les alias apparaissent si on affiche la requête en mode feuille de données.

    @j-lo28: la syntaxe doit être la suivante, soit sans crochets: OrdresFabrications.NumCmd soit avec: [OrdresFabrications].[NumCmd]
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    février 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2008
    Messages : 23
    Points : 16
    Points
    16
    Par défaut
    Bonjour,

    Merci à tous pour vos conseilles, mes problèmes se sont résoluts en suivant vos recommandations.

    Cordialment,

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

Discussions similaires

  1. Exportation des données d'une base Oracle sous forms
    Par moezsokrati dans le forum Forms
    Réponses: 4
    Dernier message: 13/10/2005, 09h55
  2. Restaurer une base avec un autre nom de base de donnée
    Par dimdidi dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 19/08/2005, 11h11
  3. Réponses: 6
    Dernier message: 04/05/2005, 10h58
  4. Delphi - Base donnée Paradox, problème de nom des champs
    Par mjp dans le forum Bases de données
    Réponses: 1
    Dernier message: 02/01/2005, 22h10
  5. Noms des bases de données
    Par abdou.sahraoui dans le forum Administration
    Réponses: 8
    Dernier message: 01/09/2004, 16h21

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