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 :

contrôle sur données enregistrées entre 2 tables


Sujet :

VBA Access

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 129
    Points : 35
    Points
    35
    Par défaut contrôle sur données enregistrées entre 2 tables
    Bonjour, j'ai un soucis avec un contrôle que je veux réaliser. J'explique d'abord le contexte:
    J'ai trois tables:
    -un production: num production (clé primaire), type production, appellation...
    -une opération: num opération(clé primaire), num production, date, quantité entrée, quantité sorties
    -une renseignement suppl : num production, volume revendiqué, mois, année

    un numéro de production réalise plusieurs opérations. Pour chaque numéro de production l'utilisateur doit apporter le renseignement supplémentaire pour un mois et une année donnée.

    A la fin du mois j'ai un état à imprimer. Il contient toutes les opérations effectuées pour mes productions ainsi que les renseignements supplémentaires les concernant.

    Mon problème: si l'utilisateur a oublié de saisir les renseignements supplémentaires, les opérations du mois ne s'affichent pas dans mon état.
    Je voulais donc réaliser un contrôle qui permet de vérifier si pour mes numéros de production qui ont réalisés des opérations, les renseignements supplémentaires ont été apportés.

    Le problème c'est que je suis très nulle en VBA, j'ai commencé quelque chose qui ressemble à ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Commande23_Click()
    If DLookup("[NUM PRODUCTION]", OPERATIONS, ("Mois(Date)=ZDMOIS AND Année(Date)=ZDANNEE")) <> DLookup("[Num production]", "renseignement suppl", "mois=ZDMOIS AND année=ZDANNEE") Then
    MsgBox ("des renseignements n'ont pas été portés")
    End If
    End Sub
    Mais cela ne marche pas, quelqu'un peut-il m'aider svp? merci beaucoup
    Elodie

  2. #2
    Membre habitué Avatar de Orakle
    Homme Profil pro
    Responsable Informatique
    Inscrit en
    Mars 2004
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Responsable Informatique
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2004
    Messages : 204
    Points : 154
    Points
    154
    Par défaut
    Salut,

    ton problème porte sur la syntaxe ou sur la solution ?

    Pour la syntaxe j'opterai pour un truc du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If DLookup("[NUM PRODUCTION]", "OPERATIONS", ("Mois(Date)= '" & Me.ZDMOIS & "'" And "Année(Date)= '" & Me.ZDANNEE & "'")) <> DLookup("[Num production]", "renseignement suppl", "mois= '" & ZDMOIS & "'" And "année= '" & ZDANNEE & "'") Then

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 129
    Points : 35
    Points
    35
    Par défaut
    Vu mon niveau en VBA je pense que le problème porte un peu sur tout!!!
    En fait c'est surtout pour le conception que j'ai du mal.
    J'ai exécuté mon code avec tes modifications, mais il me dit erreur 13.
    Je patauge vraiment auriez vous une idée?
    Merci
    Elodie

  4. #4
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    961
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 961
    Points : 939
    Points
    939
    Par défaut
    Que dit le message d'erreur exactement ?

  5. #5
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 129
    Points : 35
    Points
    35
    Par défaut
    Il me dit:

    Erreur d'exécution '13':
    Incompatibilité de type

  6. #6
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    961
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 961
    Points : 939
    Points
    939
    Par défaut
    Et ça pointe sur quoi ?

  7. #7
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 129
    Points : 35
    Points
    35
    Par défaut
    ça pointe en jaune sur toute mon expression que ce soit la mienne ou celle qu'on m'a corrigée!

  8. #8
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    961
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 961
    Points : 939
    Points
    939
    Par défaut
    Tu es sûr que la syntaxe a été respectée ?
    Syntaxe

    DLookup(expr, domaine[, critère])

    Les arguments de la fonction RechDom (DLookup) sont les suivants :

    expr : Expression qui identifie le champ dont vous souhaitez renvoyer la valeur.
    Il peut s'agir d'une expression de chaîne identifiant un champ dans une table ou une requête, ou d'une expression qui effectue un calcul sur les données de ce champ. Dans expr, vous pouvez inclure le nom d'un champ de table, un contrôle de formulaire, une constante ou une fonction. Si expr inclut une fonction, elle peut être intrinsèque ou définie par l'utilisateur, mais ne peut pas être une autre fonction de regroupement Domaine ou SQL.

    domaine : Expression de chaîne identifiant les enregistrements qui constituent le domaine. Il peut s'agir d'un nom de table ou d'un nom de requête.

    critère : Expression de chaîne facultative servant à limiter la plage des données sur laquelle porte la fonction RechDom (DLookup). Par exemple, critère est souvent équivalent à la clause WHERE d'une expression SQL sans le mot WHERE. En cas d'omission de critère, la fonction RechDom (DLookup) évalue expr par rapport à l'intégralité du domaine. Chaque champ compris dans critère doit aussi l'être dans domaine, sans quoi la fonction RechDom (DLookup) renvoie la valeur Null.

  9. #9
    Membre habitué Avatar de Orakle
    Homme Profil pro
    Responsable Informatique
    Inscrit en
    Mars 2004
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Responsable Informatique
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2004
    Messages : 204
    Points : 154
    Points
    154
    Par défaut
    Mon problème: si l'utilisateur a oublié de saisir les renseignements supplémentaires, les opérations du mois ne s'affichent pas dans mon état.
    n'est il pas possible de le forcer à faire la saisie en amont ?

  10. #10
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 129
    Points : 35
    Points
    35
    Par défaut
    Je crois avoir compris d'où cela provenait, cependant comment le résoudre??
    En fait j'ai fait un test en enlevant le critère qui correspond à l'année et au mois.
    Je pense que ce qui provoque l'erreur c'est que:
    -dans la table opération le mois c'est Mois(date) --> qui est donc au format date:heure
    -dans la table renseignements suppl c'est Mois --> issu d'une table mois qui comporte tous les mois de l'année au format numérique.

    C'est pour cela qu'il me mettait erreur 13 : incompatibilité de type.

    Auriez vous une idée pour contourner ce problème?

    Merci

  11. #11
    Membre habitué Avatar de Orakle
    Homme Profil pro
    Responsable Informatique
    Inscrit en
    Mars 2004
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Responsable Informatique
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2004
    Messages : 204
    Points : 154
    Points
    154
    Par défaut
    c'est sûr que si tu essais de comparer une date et du numérique ça n'ira pas.

    Peux tu répondre à ma question plus haut ?

  12. #12
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 129
    Points : 35
    Points
    35
    Par défaut
    Je n'ai pas bien compris le sens de ta question.
    Dans mon état je veux qu'il y ait obligatoirement les données correspondantes à la table opération ainsi que celle de la table renseignements supplémentaires.
    C'est pour cela que cela ne fonctionne pas si l'utilisateur à oublié de saisir les renseignements supplémentaire pour un numéro de production qui a effectué des opérations ce mois-ci.
    Ais-je répondu à ta question?

    Je crois qu'il est possible d'extraire le mois d'une date pour que cela devienne une donnée numérique avec Month(Date) pouvez-vous m'éclairer?

    Merci
    Elodie

  13. #13
    Membre habitué Avatar de Orakle
    Homme Profil pro
    Responsable Informatique
    Inscrit en
    Mars 2004
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Responsable Informatique
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2004
    Messages : 204
    Points : 154
    Points
    154
    Par défaut
    C'est pour ça que je dis si c'est possible de creuser en amont de ton problème et aller à la source plus exactement : c-a-d forcer l'utilisateur à saisir les renseignement supplémentaires. (si ils sont obligatoires bien sûr)

    Sinon dans une requête, pour extraire ton mois d'une date c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Mois: PartDate("m";[date])

  14. #14
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 129
    Points : 35
    Points
    35
    Par défaut
    Je n'arrive pas à faire marcher cette fonction!!! Commet cela ce fait?
    Sincèrement je désespère

  15. #15
    Membre habitué Avatar de Orakle
    Homme Profil pro
    Responsable Informatique
    Inscrit en
    Mars 2004
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Responsable Informatique
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2004
    Messages : 204
    Points : 154
    Points
    154
    Par défaut
    crée une requete de sélection simple avec la table concernée.

    Ajoute ton champs date et à la colonne d'à côté tu mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Mois: PartDate("m";[date])
    et affiche le résultat

Discussions similaires

  1. [AC-2007] Affecter un contrôle sur chaque enregistrement d'une table
    Par spookyz dans le forum IHM
    Réponses: 2
    Dernier message: 08/08/2014, 20h38
  2. Besoin d'aide sur les relations entre mes tables
    Par Jenojen dans le forum Bases de données
    Réponses: 102
    Dernier message: 06/09/2008, 12h27
  3. Réponses: 2
    Dernier message: 15/07/2008, 16h47
  4. [débutant] Transferer un enregistrement entre 2 tables
    Par liloo31 dans le forum VBA Access
    Réponses: 17
    Dernier message: 20/01/2007, 11h12
  5. [WD9] Cliquer sur des enregistrements dans une table
    Par oz80 dans le forum WinDev
    Réponses: 2
    Dernier message: 15/12/2005, 20h11

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