bonjour
,
Quand je séléctionne le choix d'un champ dans ma liste déroulante "ChoixChamp" celle-ci met à jour la valeur du champ (ex: Texte ou Numérique ou oui/non) à ma liste déroulante ChoixValeur. Pour un champ oui/non j'ai un message m'indiquant de rentrer la valeur; Si je rentre -1 ou 0 alors j'ai mon sous-formulaire qui renseigne toute la liste de mes clients. Je me demande quelle syntaxe il faut que j'emploi pour eviter de devoir taper -1 ou 0. Dans ma liste déroulante je peux avoir que séléctionner oui ou non et non les valeur -1 ou 0.
Simplement le ligne référencent mon champ "ADSL" qui est un champ oui/non
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ElseIf ChampFiltre = "ADSL" Then MonSQL = "SELECT * FROM Clients Where " & ChampFiltre & " = " & Condition
Mon code entier:
Si quelqu'un peu m'aider ce serait sympa car cela fait une semaine que je rame tout seul et je fatique; Merci à tous;
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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71 Private Sub ChoixValeur_AfterUpdate() Dim ChampFiltre As String, Condition As String Dim MonSQL As String, NbEnreg Dim DateE As Date Dim ADSL, Analogique, RbtCaution As Boolean Dim IDClient As String 'affecte le nom du champ sélectionné 'sur la liste déroulante ChoixChamp 'à la variable ChampFiltre ChampFiltre = Me.ChoixChamp 'affecte la valeur sélectionnée 'sur la liste déroulante ChoixValeur 'à la variable condition Condition = Me.ChoixValeur 'Teste si le code filtré est le studio 'car c'est le seul champ de type numérique 'dans la table Clients 'La clause WHERE doit être traitée différemment 'sur un champ Numérique et sur un champ Texte If ChampFiltre = "Studio" Then MonSQL = "SELECT * FROM Clients Where " & ChampFiltre & " = " & Condition 'ElseIf permet de créer des tests multiples 'ex: dans ce contexte les champs sont ou Integer ou Date ou String 'Il faut donc énumérer toutes les types de données. ElseIf ChampFiltre = "Number" Then MonSQL = "SELECT * FROM Clients Where " & ChampFiltre & " = " & Condition ElseIf ChampFiltre = "CodeTitre" Then MonSQL = "SELECT * FROM Clients Where " & ChampFiltre & " = " & Condition ElseIf ChampFiltre = "Comptecomptable" Then MonSQL = "SELECT * FROM Clients Where " & ChampFiltre & " = " & Condition 'Pour un champ DATE on doit introduire avant le guillemet, le diese puis fermer 'la condition par un & espace, guillemet, dièse et guillemet. ElseIf ChampFiltre = "DateE" Then MonSQL = "SELECT * FROM Clients Where " & ChampFiltre & " =#" & Condition & "#" ElseIf ChampFiltre = "DateS" Then MonSQL = "SELECT * FROM Clients Where " & ChampFiltre & " =#" & Condition & "#" ElseIf ChampFiltre = "ADSL" Then MonSQL = "SELECT * FROM Clients Where " & ChampFiltre & " = " & Condition ElseIf ChampFiltre = "Analogique" Then MonSQL = "SELECT * FROM Clients Where " & ChampFiltre & " = " & Condition Else 'Dans le cas d'un champ de type Texte 'la condition WHERE doit inclure un certain nombre de guillemets ' ou d'apostrophes MonSQL = "SELECT * FROM Clients WHERE " & ChampFiltre & " = " & """" & Condition & """" DoCmd.Requery End If 'attribue à la propriété RecordSource du sous-formulaire 'SF_RechercheClients 'l'intruction SQL nommé MonSQL Me.SF_rechercheClients.Form.RecordSource = MonSQL End Sub
Franck
Partager