Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > IHM
IHM Ce forum est dédié aux questions relatives à la création de formulaires et d'états, avec ou sans code VBA, et macros.
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 23/11/2010, 09h39   #1
Membre régulier
 
Inscription : juillet 2010
Messages : 230
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 230
Points : 82
Points : 82
Par défaut Recherche multicritère et condition sur sélection d'enregistrement dans la liste (résultat de recherche)

Bonjour,

Mon formulaire composé d'une fonction de recherche multicritère (tuto caféine) a pour but de rechercher un enregistrement (dossier) afin d'imprimer un état. Le problème c'est qu'en fonction de la nature de ce dossier (sans incidence ou avec incidence financière), ce n'est pas le même état qui doit s'imprimer.

Je post une capture de mon form pour mieux visualiser



l'imprimante est le bouton pour imprimer. La recherche s'effectue sur le numero de dossier. Il y a une autre possibilité de filtre par date d'affectation.

Quand je selectionne dans la liste un dossier et que j'imprime je n'ai aucun soucis, l'état qui s'imprime correspond bien au dossier sélectionné. Je voudrais juste pouvoir imprimer 2 états différents en fonction de la nature du dossier. Pour differencier 2 dossiers je souhaite utiliser mon champ : date2emecontrole. Je voudrais donc pouvoir imprimer l'état premier ctrl (sans incidence) si le champ date2emectrl est null sinon imprimer l'état 2eme ctrl

Ce n'est pas un sous formulaire mais bien une liste. Je dois donc me baser sur cette liste.

Ma question est de savoir comment appeler le champ date2emectrl (présent dans mon sql qui alimente cette liste.)

Pour appeler le bon dossier lors de sa sélection j'utilise Me.lstResult. lstResult étant le nom de la liste.

Code :
1
2
3
4
DoCmd.OpenReport "Etat Premier controle", acViewPreview, , "T_controle.IDcontroledossier=" & Me.lstResults
DoEvents
DoCmd.RunCommand acCmdPrint
DoCmd.Close acReport, "Etat Premier controle"
Merci pour votre aide
Chagui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2010, 21h20   #2
Membre actif
 
Homme David
Inscription : septembre 2007
Messages : 353
Détails du profil
Informations personnelles :
Nom : Homme David
Localisation : France

Informations professionnelles :
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : septembre 2007
Messages : 353
Points : 195
Points : 195
Bonsoir

j'utiliserais la fonction Dlookup (monchamp, matable, moncritère)
de cette manière tu peux tester ton champ "optionnel" en fcontion de l'id du controle
damalaan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2010, 09h40   #3
Membre régulier
 
Inscription : juillet 2010
Messages : 230
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 230
Points : 82
Points : 82
Bonjour,

Un grand MERCI !!! C'était exactement ce qu'il fallait. J'ai pourtant déja utilisé la fonction Dlookup mais apparement pas assez pour qu'il me vienne à l'idée de la tester dans ce cas précis !!

Je post mon code global. Ca peut servir on sait jamais pour les débutants comme moi..

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Private Sub printetat_Click()
 
 Dim TN As Variant
 
 TN = DLookup("[DateValidation2emeCtrl]", "[T_controle]", "[IDcontroledossier]=" & Me.lstResults)
 If IsNull(TN) Then
 On Error GoTo Err
DoCmd.OpenReport "Etat Premier controle", acViewPreview, , "T_controle.IDcontroledossier=" & Me.lstResults
DoCmd.RunCommand acCmdPrint
DoCmd.Close acReport, "Etat Premier controle"
Err:
    If Err.Number = 2501 Then 'Evite le message d'annulation de la commande CmdPrint
    Resume Exit_Err
    End If
Exit_Err:
DoCmd.Close acReport, "Etat Premier controle"
 Exit Sub
Else
On Error GoTo Err1
DoCmd.OpenReport "Etat Second controle", acViewPreview, , "T_controle.IDcontroledossier=" & Me.lstResults
DoCmd.RunCommand acCmdPrint
DoCmd.Close acReport, "Etat Second controle"
End If
 
Err1:
    If Err.Number = 2501 Then 'Evite le message d'annulation de la commande CmdPrint
    Resume Exit_Err
    End If
Exit_Err1:
DoCmd.Close acReport, "Etat Second controle"
 Exit Sub
End Sub
Merci à toi et bonne continuation !
Chagui 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 05h35.


 
 
 
 
Partenaires

Hébergement Web