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

IHM Discussion :

Comment comparer les valeurs de contrôles de 2 formulaires


Sujet :

IHM

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 27
    Points : 12
    Points
    12
    Par défaut Comment comparer les valeurs de contrôles de 2 formulaires
    BONJOUR,

    Je voudrais lorsque je remplis le contrôle COMPTE d'un formulaire enrichissant une table A , s'affiche le formulaire archivé rattaché à une table B (ARCHIVES).
    J'ai mis le code suivant sur sortie du contrôle COMPTE du formulaire A

    If COMPTE.Value = Forms![("F_ARCHIVES")]!COMPTE.Value Then MsgBox " LA FICHE CONCERNEE EST LE NUMERO " & FICHE.Value [/b]et ACCESS me réponds OBJET REQUIS.
    Il semble qu'il n'arrive pas à trouver le 2ème contrôle COMPTE qui se trouve dans le formulaire F_ARCHIVES ( ce formulaire n'étant pas ouvert).

    Comment puis-je faire ?

  2. #2
    Expert éminent

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Points : 9 197
    Points
    9 197
    Par défaut
    Bonjour,

    Plusieurs choses :
    1- L'écriture en lettre majuscules est à prohiber : sur Internet, elle est signe que tu es en colère et que tu cries.

    2- Pour le code, merci d'utiliser la balise CODE (ceci fait partie des règles d'usage indispensables sur ce forum)

    3- Ta syntaxe est très impropre.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Forms![("F_ARCHIVES")]!COMPTE.Value
    ceci serait largement préférable:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Forms("F_ARCHIVES")!COMPTE.Value
    4- côté "truc à savoir"
    Quand tu utilises Forms("xxx") dans ton code, tu fais forcément référence à un formulaire déjà ouvert.
    Voilà pourquoi il ne trouve pas ton formulaire : il ne doit pas encore être ouvert au moment de cette ligne.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 27
    Points : 12
    Points
    12
    Par défaut
    merci de tes conseils.

    1- L'écriture en lettre majuscules est à prohiber : sur Internet, elle est signe que tu es en colère et que tu cries.
    je ne suis pas en colère donc j'écris en minuscules.

    ceci serait largement préférable:
    Code:
    Forms("F_ARCHIVES")!COMPTE.Value
    4- côté "truc à savoir"
    Quand tu utilises Forms("xxx") dans ton code, tu fais forcément référence à un formulaire déjà ouvert.
    Voilà pourquoi il ne trouve pas ton formulaire : il ne doit pas encore être ouvert au moment de cette ligne.

    mon problème c'est effectivement qu'access compare la valeur d'un contrôle d'un formulaire ouvert avec celle d'un formulaire F_ARCHIVES qui ne l'est pas .

    quelle syntaxe employer dans ce cas?

    merci d'avance.

  4. #4
    Expert éminent

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Points : 9 197
    Points
    9 197
    Par défaut
    Arrivé à ce point de notre échange, je ne peux pas t'aider, car je ne comprends pas pourquoi tu veux comparer ta valeur avec un contrôle qui est dans un formulaire fermé !

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 27
    Points : 12
    Points
    12
    Par défaut
    :o
    Arrivé à ce point de notre échange, je ne peux pas t'aider, car je ne comprends pas pourquoi tu veux comparer ta valeur avec un contrôle qui est dans un formulaire fermé !
    C'est pourtant ce que j'aimerais faire :

    le formulaire F_ARCHIVES pointe sur une table ARCHIVES .
    Je veux simplement lorsque je tape un COMPTE dans le formulaire courant qu'access vérifie si ce COMPTE est déjà dans la table ARCHIVES et si c'est le cas qu'il m'affiche l'enregistrement correspondant en ouvrant le formulaire F_ARCHIVES sur l'enregistrement correspondant.

    Autre solution rechercher dans la table ARCHIVES si la valeur de COMPTE saisie dans le formulaire courant existe et en ce cas afficher l'enregistrement correspondant via le formulaire F_ARCHIVES.

    Je ne veux pas ouvrir automatiquement le formulaire F_ARCHIVES pendant que le formulaire courant est affiché mais seulement avoir la possibilité de la faire via une msgbox si je désire consulter cette archive.

    j'espère avoir été plus clair et qu'une solution existe, merci d'avance .

  6. #6
    Membre éprouvé
    Avatar de keita
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Novembre 2002
    Messages : 881
    Points : 1 121
    Points
    1 121
    Par défaut
    Salut
    GUYSYS a écrit:
    Autre solution rechercher dans la table ARCHIVES si la valeur de COMPTE saisie dans le formulaire courant existe et en ce cas afficher l'enregistrement correspondant via le formulaire F_ARCHIVES.
    j'opte plutot pour cette solution; essai ceci pour voir:
    1/dans ton form A (form courant) ajoute un bouton;par ex btn et un Textbox (txtArchives) que tu cacheras apres;
    2/sur l'événement clic de btn:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Me!TxtArcives=DLookup("Compte","ARCHIVES","Compte=" & Me!COMPTE)
    If Not isNull(Me!TxtArcives) Then
      If msgbox("Le compte demandé existe." & vbcrlf & "Voulez-vous le consulter?",vbinformation+vbYesNo+vbdefaultbutton1,"monappli")=vbNo Then          ' obs1
    Exit sub
      DoCmd.Openform "F_ARCHIVES"
      Else
        msg "Ce compte n'existe pas.",vbexclamation,"monaplli"       ' obs 2
    End If
    -en obs1: le "+vbdefaultbutton1" n'est pas necessaire si on veut que le bouton "Oui" soit le bouton activé par defaut(dans la boite de message);pour que le "Non" le soit par defaut alors "+vbdefaultbutton2"
    -en obs2:il est preferable de ne rien mettre pour eviter de trop nombreux messages;ainsi si le compte n"existe pas alors rien.
    3/sur l'evenement "Ouverture" de ton form B (F_ARCHIVES), tu recuperes la valeur de TxtArcives de form A comme critere de la requete source de Form B. donc dans la clause where de cette requete:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "WHERE (((ARCHIVES.COMPTE)=" & Forms!FormA!TxtArcives & "));"
    j'espere t'avoir aidé.
    @+

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 27
    Points : 12
    Points
    12
    Par défaut
    bonjour et merci de m'aider,

    j'ai entré le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Commande793_Click()
     
    Me!TxtArchives = DLookup("COMPTE", "T_ARCHIVES 2005", "Compte=" & Me!COMPTE)
    If Not IsNull(Me!TxtArchives) Then
      If MsgBox("Le compte demandé existe." & vbCrLf & "Voulez-vous le consulter?", vbInformation + vbYesNo + vbDefaultButton1, "monappli") = vbNo Then  ' obs1
    Exit Sub
      DoCmd.OpenForm "F_ARCHIVES"
      Else
        MsgBox "Ce compte n'existe pas.", vbExclamation, "monaplli"     ' obs 2
    End If
    End If
    End Sub
    et j'obtiens erreur d'exécution'3075'
    erreur de syntaxe(opérateur absent) dans l'expression 'Compte= xxx".




    D'autre part pour la partie

    3/sur l'evenement "Ouverture" de ton form B (F_ARCHIVES), tu recuperes la valeur de TxtArcives de form A comme critere de la requete source de Form B. donc dans la clause where de cette requete:
    Code:
    "WHERE (((ARCHIVES.COMPTE)=" & Forms!FormA!TxtArcives & "));"
    Seule la table ARCHIVES est la source du form B , il n'y a pas de requête source . et de toute façon losque s'ouvre le form B, access ne trouve plus le contrôle du form A.

    C'est toujours le même problème , accès à un contrôle de formulaire ou à des enregistrements d'une table lorsque l'un ou l'autre est fermé . ne peut-on ouvrir provisoirement ces éléments sans que celà n'apparaisse à l'écran ?

  8. #8
    Membre éprouvé
    Avatar de keita
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Novembre 2002
    Messages : 881
    Points : 1 121
    Points
    1 121
    Par défaut
    Patience! patience allons doucement et tu verras:
    1/essai ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Commande793_Click() 
    If isNull(Me!COMPTE) Then
    msgbox "Veullez entrez un n° de compte svp!",vbexclamation
    exit sub
    end if
    Me!TxtArchives = DLookup("COMPTE", "T_ARCHIVES 2005", "Compte=" & Me!COMPTE) 
     
     
     
    end sub
    Il y a quelque chose juste apres "Private Sub Commande793_Click() " et juste avant "Me!TxtArchives = DLookup("
    @+

  9. #9
    Membre éprouvé
    Avatar de keita
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Novembre 2002
    Messages : 881
    Points : 1 121
    Points
    1 121
    Par défaut
    comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ....."Compte = " & Me!COMPTE)
    espace entre "Compte" et "=" et entre "=" et "
    Et puis partout ou il y a "monappli", pardon mets le nom de ton appli;
    par ailleurs tu as ecrit:
    Seule la table ARCHIVES est la source du form B ....
    dans la source de ton formB, fais ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT ARCHIVES.* FROM ARCHIVES WHERE ...
    et tu mets le texte du where plus haut.
    @+

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 27
    Points : 12
    Points
    12
    Par défaut


    Je suis complètement largué.

    les problèmes d'"opérateur absent" existent toujours , c quoi cette histoire d'opérateur absent?


    je veux juste savoir si la valeur du contrôle COMPTE dans ma table T_ARCHIVES 2005 (ou dans mon formulaire F_ARCHIVES 5 qui alimente cette table ) se trouve une valeur identique du contrôle COMPTE de mon formulaire courant ( FormA) qui alimente ma table courante ( disons TableA) lorsque je tape le numéro de ce compte dans mon formulaire courant .

    désole, mais je n'arrives pas à être plus clair.

    Est -ce que DLOOKUP permet d'afficher un message me signalant cela ou pas ?

    De plus je ne comprends pas :

    dans la source de ton formB, fais ça:
    Code:
    SELECT ARCHIVES.* FROM ARCHIVES WHERE ...

    et tu mets le texte du where plus haut
    j'ai mis ce code sur ouverture du formB et access répond manque instruction CASE.

    Déjà que je n'arrive pas à afficher un msgbox pour la première phase ....

    peut-être l'année prochaine ...

  11. #11
    Membre éprouvé
    Avatar de keita
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Novembre 2002
    Messages : 881
    Points : 1 121
    Points
    1 121
    Par défaut
    voila quelque chose qui nous echapais deja:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ..."T_ARCHIVES 2005"...
    En access les noms de champ comportant un espace s'ecrivent avec des crochets; comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ...."[T_ARCHIVES 2005]".....
    par ailleurs:
    Est -ce que DLOOKUP permet d'afficher un message me signalant cela ou pas ?
    je reponds oui
    @+

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 27
    Points : 12
    Points
    12
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Private Sub Commande793_Click()
     'DLookup("FieldName", "TableName", "Criteria = '" & forms!FormName!ControlName & "'")
     
    Me!TxtArchives = DLookup("COMPTE", "[T_ARCHIVES 2005]", "Compte = " & Me(COMPTE))
    If Not IsNull(Me!TxtArchives) Then
      If MsgBox("Le compte demandé existe." & vbCrLf & "Voulez-vous le consulter?", vbInformation + vbYesNo + vbDefaultButton1, "monappli") = vbNo Then  ' obs1
      DoCmd.OpenForm "F_ARCHIVES"
    Else
     MsgBox "Ce compte n'existe pas.", vbExclamation, "monaplli"     ' obs 2
    End If
    End If
     
    End Sub
    access ne touve toujours pas le champs auquel il est fait référence avec DLookup





    par ailleurs:
    Citation:
    Est -ce que DLOOKUP permet d'afficher un message me signalant cela ou pas ?

    je reponds oui
    moi , je te crois mais access ne veut rien savoir ...

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 27
    Points : 12
    Points
    12
    Par défaut

    y a du mieux !

    en utilisant la syntaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'DLookup("FieldName", "TableName", "Criteria = '" & forms!FormName!ControlName & "'")
    agrémenté des crochets [ ] , les messages s'affichent lorsque le compte est trouvé mais le compte s'efface dans le formulaire courant lorsque le compte n'est pas trouvé dans la table d'archives .

    D'autre part je voudrais que puisse s'afficher le formulaire archives sur l'enregistrement correspondant lorsque le compte est trouvé , peux-tu encore m'aider sur ces 2 plans ?

  14. #14
    Membre éprouvé
    Avatar de keita
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Novembre 2002
    Messages : 881
    Points : 1 121
    Points
    1 121
    Par défaut
    GUYSYS a écrit:
    peux-tu encore m'aider sur ces 2 plans ?
    oui justement; je craignais que tu sois parti; ton pb est plus simple que tu le crois;juste une question de temps.
    sur l'evenement "Activation"de ton form archives, fais comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.source="SELECT ARCHIVES.* FROM ARCHIVES WHERE (((ARCHIVES.COMPTE)=" & "'" & Forms!FormA!TxtArcives & "'" & "));"
    essai ça;j'attends
    @+

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 27
    Points : 12
    Points
    12
    Par défaut
    suis pas parti , mais je suis arrivé à faire apparaître mon formulaire d'archives lorsque le compte est déjà en archives, j'ai toutefois changé le vbno en vbyes , un peu comme dirait raffarin ....

    seul problème je n'arrive pas à faire ouvrir le formulaire d'archive sur le bon enregistrement avec la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      DoCmd.OpenForm "F_ARCHIVES"
    je n'arrive pas à mettre la bonne syntaxe , il faudrait un filtre sur la valeur du compte concerné.

    Pour l'instant il ne me semble pas que la deuxième partie concernant
    Code:
    Me.source="SELECT ARCHIVES.* FROM ARCHIVES WHERE (((ARCHIVES.COMPTE)=" & "'" & Forms!FormA!TxtArcives & "'" & "));"
    soit nécessaire , de toute façon je n'y arrives pas non plus avec.

    Bref , je te mets le code qui fonctionne jusqu'à l'affichage de mon form archives mais qui ne se positionne pas sur le bon enregistrement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
      Private Sub Commande793_Click()
     'DLookup("FieldName", "TableName", "Criteria = '" & forms!FormName!ControlName & "'")
    Dim RECIDIVE As String
    RECIDIVE = Me!TxtArchives
    If RECIDIVE = DLookup("COMPTE", "[T_ARCHIVES 2005]", "Compte = '" & Forms!F_ACTIFS!COMPTE & "'") Then
      If MsgBox("Le compte demandé existe." & vbCrLf & "Voulez-vous le consulter?", vbInformation + vbYesNo + vbDefaultButton1, "monappli") = vbYes Then  ' obs1
      DoCmd.OpenForm "F_ARCHIVES"
     
    Else
     MsgBox "Ce compte n'existe pas.", vbExclamation, "monaplli"     ' obs 2
    End If
    End If
     
    End Sub
    si tu peux voir et après je remettrai ça à demain , je ne voudrais pas te faire rater le réveillon

  16. #16
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Points : 1 579
    Points
    1 579
    Par défaut
    Tu compléte simplement la commande DoCmd.OpenForm

    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
     
     
     Private Sub Commande793_Click() 
     'DLookup("FieldName", "TableName", "Criteria = '" & forms!FormName!ControlName & "'") 
    Dim RECIDIVE As String 
    RECIDIVE = Me!TxtArchives 
    If RECIDIVE = DLookup("COMPTE", "[T_ARCHIVES 2005]", "Compte = '" & Forms!F_AMIAPROACTIFS!COMPTE & "'") Then 
      If MsgBox("Le compte demandé existe." & vbCrLf & "Voulez-vous le consulter?", vbInformation + vbYesNo + vbDefaultButton1, "monappli") = vbYes Then  ' obs1 
      DoCmd.OpenForm "F_ARCHIVES",,"Compte=" & chr(34) & Recidive & chr(34)
     
    Else 
     MsgBox "Ce compte n'existe pas.", vbExclamation, "monaplli"     ' obs 2 
    End If 
    End If 
     
    End Sub

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 27
    Points : 12
    Points
    12
    Par défaut
    ok , je vais essayer ça

  18. #18
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Points : 1 579
    Points
    1 579
    Par défaut
    Citation Envoyé par GUYSYS
    mais peut-tu effacer ton message précédent ou modifier le non du formulaire svp
    Désolé j'ai pas bien compris. Et en plus je ne peut rien éffacer.

    Pour le nom du formulaire si c'est pas le bon, tu le change simplement chez toi.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 26/09/2013, 14h05
  2. comment comparer les valeurs retournés par DBGrid
    Par Ice-tea dans le forum Bases de données
    Réponses: 2
    Dernier message: 08/06/2006, 14h42
  3. Comment gérer les valeur Nulles dans une requête ?
    Par sondo dans le forum Bases de données
    Réponses: 3
    Dernier message: 16/03/2005, 11h02
  4. [Forms] Comment restreindre les valeurs d'une LOV
    Par popressay dans le forum Forms
    Réponses: 9
    Dernier message: 25/08/2004, 10h59
  5. comparer les valeurs d'un tableau
    Par nicerico dans le forum ASP
    Réponses: 4
    Dernier message: 19/08/2004, 11h20

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