Bonjour à tous,
Ce code informe dans la liste déroulante ChoixChamp les champs d'une table, quand le champ est sélectionné la deuxième liste déroulante ChoixValeur informe toutes les données représentées dans le champ sélectionné. ex: si choix prénom sélectionné dans ChoixChamp alors le champ ChoixValeur indique tous les prénoms se trouvant dans le champs Prénom.
Le problème est quand je sélectionne, après l'ouverture du formulaire d'où les deux listes déroulantes sont, dans la liste déroulante ChoixChamp un champ soit numérique soit texte soit date le choixValeur est renseigné et le sous-formulaire aussi, mais quand après plusieur sélections de champ je sélectionne un choix oui/non ACCESS m'indique une erreur de propriété du champ comme " vous avez inséré une valeur texte dans un champ non compatible... Avez-vous une solution ? Merci à vous tous et bonne soirée
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
72
73 Private Sub ChoixValeur_AfterUpdate() Dim ChampFiltre As String, Condition As String Dim MonSQL As String, NbEnreg Dim DateE As Date '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 ElseIf ChampFiltre = "CodeTitre" Then MonSQL = "SELECT * FROM Clients Where " & ChampFiltre & " = " & Condition ElseIf ChampFiltre = "PasDeTéléphone" 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
Partager