Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/02/2011, 16h55   #1
Nouveau Membre du Club
 
Inscription : mai 2008
Messages : 105
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 105
Points : 31
Points : 31
Par défaut condition ouverture formulaire

bonjour,

lorsque l'on ouvre un formulaire avec l'objet docmd.openform, il y a une rubrique "where"
peut-on placer deux conditions das cette rubrique, si oui quelle est la syntaxe
sur deux condition (par exemple un n° de série et une référence d'article

merci
patmar83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/02/2011, 17h28   #2
Membre Expert
 
Inscription : août 2006
Messages : 1 435
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 1 435
Points : 1 753
Points : 1 753
Bonsoir,
un exemple avec 2 critères
Code :
1
2
 
docmd.openform "frmDVD",acNormal,,"[Titre] Like ""D*"" AND [durée]>100"
filtre les DVD commençant par D et dont la durée est > 100 mn
helas est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 13/02/2011, 17h44   #3
Nouveau Membre du Club
 
Inscription : mai 2008
Messages : 105
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 105
Points : 31
Points : 31
Par défaut ouvrir un formulaire

merci pour ces éléments mais malheureusement ils ne me permettent pas de résoudre mon problème
En effet je double clique sur le champ d'un sous formulaire pour ouvrir un formulaire en fonction d'un n° de phase. Cette ouverture se passe correctement , mais cette ouverture devrait prendre un second élément et je n'arrive donc pas à faire une clause avec deux conditions
Dans ta solution tu connais au départ les éléments de tri, mais mois il dépendent d'un choix aléatoire
merci
patmar83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 01h07   #4
Membre régulier
 
Inscription : janvier 2011
Messages : 309
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 309
Points : 76
Points : 76
Bonjour,

Je pense qu'il faut tout simplement mettre dans ton filtre la référence aux deux champs qui serviront de critères :

Au lieu d'utiliser "Like" tu mets par ex :

Code :
Docmd.openform "MonDeuxièmeFormulaire",,"[Champ1DuDeuxièmeFormulaire]=" & [Champ1DuPremierFormulaire]" AND "[Champ2DuDeuxièmeFormulaire]=" & [Champ2DuPremierFormulaire]"
...

Le deuxième guillemet fermant à la suite du signe = et rajoutant un "&" ensuite et non l'inverse.

Suivant le cas tu mets soit Me.[nomduchamp] comme référence, soit le chemin complet : forms![NomduPremierFormulaire]![NomDuPremierChampCritère] dans l'event click de ton bouton ou procédure.

Mais il se peut qu'il n'y ai pas de correspondance dans un des deux champs de critère, il faudra gérer cette éventualité ...

C'est juste pour que tu vois la logique à appliquer
clickandgo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 09h17   #5
Nouveau Membre du Club
 
Inscription : mai 2008
Messages : 105
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 105
Points : 31
Points : 31
Par défaut ouverture formulaire

merci pour cette réponse, dés que j'ai le temps j'essaie cette solution
patmar83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 17h58   #6
Nouveau Membre du Club
 
Inscription : mai 2008
Messages : 105
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 105
Points : 31
Points : 31
Par défaut ouvrir un formulaire

j'ai essayé mais cela ne fonctionne pas, j'ai mis un espion et j'ai pu remarquer qu'il prenait les bonnes données. Cependant il semble y avoir une incompatibilité de type (un des champ est une chaine , l'autre un numérique)

Code :
1
2
3
Private Sub NUM_OPE_DblClick(Cancel As Integer)
DoCmd.OpenForm "FORMLIER ", acNormal, , "[NUM_OPE] =FORMS![FORMVALIDOPERATION]![FORMOPEPHASE sous-formulaire]![NUM_OPE]"
End Sub
Avec ce code j'obtiens bien une ouverture sur un n° d'opération mais si je place un AND et la suite du code pour avoir également un autre critère l'évènement bug
patmar83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 18h55   #7
Membre régulier
 
Inscription : janvier 2011
Messages : 309
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 309
Points : 76
Points : 76
Tu n'as pas suivi le conseil :

Il faut mettre :

Code :
"[ChampDuForm2]=" &[ChampDuForm1]
Le guillemet se met après le signe égal...

Essaye déjà comme ça, on verra ensuite pour le deuxième critère...
clickandgo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 22h18   #8
Nouveau Membre du Club
 
Inscription : mai 2008
Messages : 105
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 105
Points : 31
Points : 31
Par défaut ouvrir un formulaire

MERCI DE NOUVEAU
Effectivement cela
patmar83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 22h21   #9
Nouveau Membre du Club
 
Inscription : mai 2008
Messages : 105
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 105
Points : 31
Points : 31
Par défaut ouvrir un formulaire

merci, mille excuse pour le message précèdent qui est parti avant que je ne puisse le finir

avec ta syntaxe ça fonctionne bien avec le premier élément, comment faire pour faire passer le second ?
merci
patmar83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2011, 11h36   #10
Nouveau Membre du Club
 
Inscription : mai 2008
Messages : 105
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 105
Points : 31
Points : 31
Par défaut condition ouverture formulaire

hier soir j'ai donc essayé le code que tu m'a donné et ça fonctionne pour un critère
Ce matin j'essaie pour les deux critères qui m'intéresse , j'ai donc reconduit le code avec un "AND"
Mais j'obtiens un message d'erreur d'exécution 13- incompatibilité de type
NUM_OPE est numérique et NUM_SERIE est texte
J'ai donc essayer de transformer le NUM_SERIE en INT (cf code) mais j'obtiens toujours le même message
Code :
DoCmd.OpenForm "formlier", , , "[NUM_OPE]= " & [NUM_OPE] And (CInt("[NUM_SERIE]=") & (CInt([NUM_SERIE])))
quelqu'un aurait-il une idée
patmar83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2011, 12h37   #11
Membre régulier
 
Inscription : janvier 2011
Messages : 309
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 309
Points : 76
Points : 76
Essaies avec :

Code :
And "CInt([NUM_SERIE])=" & CInt([NUM_SERIE])
Il faudra peut être préciser le nom du formulaire :

Code :
And "CInt(Forms![MonForm2].[NUM_SERIE])=" & CInt(Forms![MonForm1].[NUM_SERIE])
car tu dois signaler à quel formulaire appartient chaque controle.

Attention de ne pas englober ni le signe égal ni le "&" dans la parenthèse !, vérifies bien les parenthèses fermantes aussi, tu en mettais deux de trop ...
clickandgo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2011, 13h13   #12
Nouveau Membre du Club
 
Inscription : mai 2008
Messages : 105
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 105
Points : 31
Points : 31
j'ai essayé avec la premiere SOLUTION, j'obtiens un message d'erreur du type "DEPASSEMENT DE CAPACITE"
ERREUR 6
Pour la seconde y-a-til un ordre dans l'appel des formulaires
Faut-il mettre à gauche le départ et à droite l'arrivée, ou le contraire ou bien cela n'a aucune importance
merci
patmar83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2011, 16h22   #13
Nouveau Membre du Club
 
Inscription : mai 2008
Messages : 105
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 105
Points : 31
Points : 31
Par défaut o

Ouf§§§
j'y suis arrivé, en parcourant les différents post je suis tombé sur un sujet identique que j'ai arrangé

La question de départ:
Comment ouvrir un formulaire à partir d'un autre formulaire ou sous formalaire avec 2 critères (et de type différent)


Code :
1
2
3
4
5
6
7
Dim stlinkCriteria As String
Dim stlinkCriteria2 As String
 
 
stlinkCriteria = "[NUM_OPE]=" & Me![NUM_OPE] & ""
stlinkCriteria2 = "AND [NUM_SERIE]='" & Me![NUM_SERIE] & "'"
DoCmd.OpenForm "formlier", , , stlinkCriteria & stlinkCriteria2
Je joins également les remarques qui étaient jointes et qui m'ont permis de trouver une solution

"Ensuite tu dois t'assurer que les critères sont bien de type texte comme tu le spécifie en utilisant les simples cote.

Si dans la table elles sont de type numérique tu dois enlever les cotes."

Merci à tous pour cette aide
patmar83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h03.


 
 
 
 
Partenaires

Hébergement Web