In MS access heb ik een zoekformulier gemaakt waarbij ik met VBA de querycode genereer. Doel hiervan is dat dit formulier object onafhankelijk wordt en ik alleen de bron tabel erbij hoef te koppelen over het netwerk.
Als ik op mijn knop 'zoeken' klik roept hij de functie 'IDBzoeken' aan om de SQL zoekstring op te bouwen.
De functie werkt prima, behalve dat ik 2 keer moet klikken voordat hij het filter daadwerkelijk uitvoert.
Bijvoorbeeld; ik voer een bedrijfsnaam in, klik op zoeken en moet vervolgens wéér op zoeken klikken voor hij daadwerkelijk filtert.
Nog vreemder is: als ik een bedrijfsnaam invoer, op zoeken klik, bedrijfsnaam leeg maak en wederom op zoeken klik, hij evengoed het zoek commando uitvoert. Klik ik gelijk weer op zoeken, laat hij weer alles zien.
Iets wat er volgens mij mee te maken kan hebben is dat standaard een veld in het formulier Null is; vergelijking met "" gaat dan niet op. Na invoeren van een zoekstring in een veld en deze verwijderen; komt dit wél overeen met "" en niet meer met Null.
Als ik op mijn knop 'zoeken' klik roept hij de functie 'IDBzoeken' aan om de SQL zoekstring op te bouwen.
De functie werkt prima, behalve dat ik 2 keer moet klikken voordat hij het filter daadwerkelijk uitvoert.
Bijvoorbeeld; ik voer een bedrijfsnaam in, klik op zoeken en moet vervolgens wéér op zoeken klikken voor hij daadwerkelijk filtert.
Nog vreemder is: als ik een bedrijfsnaam invoer, op zoeken klik, bedrijfsnaam leeg maak en wederom op zoeken klik, hij evengoed het zoek commando uitvoert. Klik ik gelijk weer op zoeken, laat hij weer alles zien.
Iets wat er volgens mij mee te maken kan hebben is dat standaard een veld in het formulier Null is; vergelijking met "" gaat dan niet op. Na invoeren van een zoekstring in een veld en deze verwijderen; komt dit wél overeen met "" en niet meer met Null.
Visual Basic:
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
| Private Sub Zoeken_Click() Call IDBzoeken Me.Form.Requery End Sub Function IDBzoeken() Dim strSQL As String Dim zkWhere As String, zkEnd As String If IsNull(Me.ZIGHnr) Then Else zkWhere = "WHERE (" zkWhere = zkWhere & "((intermediairdatabase.IGHnr) Like '*' & '" & Me.ZIGHnr & "' & '*')" zkEnd = ") " End If If IsNull(Me.Zighseg) Then Else If (zkWhere = "") Then zkWhere = "WHERE (" zkWhere = zkWhere & "((intermediairdatabase.ighseg) Like '*' & '" & Me.Zighseg & "' & '*')" zkEnd = ") " Else zkWhere = zkWhere & " AND ((intermediairdatabase.ighseg) Like '*' & '" & Me.Zighseg & "' & '*')" zkEnd = ") " End If End If If IsNull(Me.Zniveau3) Then Else If (zkWhere = "") Then zkWhere = "WHERE (" zkWhere = zkWhere & "((intermediairdatabase.niveau3) Like '*' & '" & Me.Zniveau3 & "' & '*')" zkEnd = ") " Else zkWhere = zkWhere & " AND ((intermediairdatabase.niveau3) Like '*' & '" & Me.Zniveau3 & "' & '*')" zkEnd = ") " End If End If If IsNull(Me.Zbedrijfsnaam) Then Else If (zkWhere = "") Then zkWhere = "WHERE (" zkWhere = zkWhere & "((intermediairdatabase.bedrnaam) Like '*' & '" & Me.Zbedrijfsnaam & "' & '*')" zkEnd = ") " Else zkWhere = zkWhere & " AND ((intermediairdatabase.bedrnaam) Like '*' & '" & Me.Zbedrijfsnaam & "' & '*')" zkEnd = ") " End If End If If IsNull(Me.Zholding) Then Else If (zkWhere = "") Then zkWhere = "WHERE (" zkWhere = zkWhere & "((intermediairdatabase.holding) Like '*' & '" & Me.Zholding & "' & '*')" zkEnd = ") " Else zkWhere = zkWhere & " AND ((intermediairdatabase.holding) Like '*' & '" & Me.Zholding & "' & '*')" zkEnd = ") " End If End If If IsNull(Me.zSTRAATNM) Then Else If (zkWhere = "") Then zkWhere = "WHERE (" zkWhere = zkWhere & "((intermediairdatabase.STRAATNM) Like '*' & '" & Me.zSTRAATNM & "' & '*')" zkEnd = ") " Else zkWhere = zkWhere & " AND ((intermediairdatabase.STRAATNM) Like '*' & '" & Me.zSTRAATNM & "' & '*')" zkEnd = ") " End If End If If IsNull(Me.Zhuisnumm) Then Else If (zkWhere = "") Then zkWhere = "WHERE (" zkWhere = zkWhere & "((intermediairdatabase.huisnumm) Like '*' & '" & Me.Zhuisnumm & "' & '*')" zkEnd = ") " Else zkWhere = zkWhere & " AND ((intermediairdatabase.huisnumm) Like '*' & '" & Me.Zhuisnumm & "' & '*')" zkEnd = ") " End If End If If IsNull(Me.Zpostcode) Then Else If (zkWhere = "") Then zkWhere = "WHERE (" zkWhere = zkWhere & "((intermediairdatabase.postcode) Like '*' & '" & Me.Zpostcode & "' & '*')" zkEnd = ") " Else zkWhere = zkWhere & " AND ((intermediairdatabase.postcode) Like '*' & '" & Me.Zpostcode & "' & '*')" zkEnd = ") " End If End If If IsNull(Me.Ztelefoon) Then Else If (zkWhere = "") Then zkWhere = "WHERE (" zkWhere = zkWhere & "((intermediairdatabase.telefoon) Like '*' & '" & Me.Ztelefoon & "' & '*')" zkEnd = ") " Else zkWhere = zkWhere & " AND ((intermediairdatabase.telefoon) Like '*' & '" & Me.Ztelefoon & "' & '*')" zkEnd = ") " End If End If If IsNull(Me.Zplaats) Then Else If (zkWhere = "") Then zkWhere = "WHERE (" zkWhere = zkWhere & "((intermediairdatabase.wnplaats) Like '*' & '" & Me.Zplaats & "' & '*')" zkEnd = ") " Else zkWhere = zkWhere & " AND ((intermediairdatabase.wnplaats) Like '*' & '" & Me.Zplaats & "' & '*')" zkEnd = ") " End If End If strSQL = "SELECT intermediairdatabase.IGHNR, " & _ "intermediairdatabase.IGHSEG, intermediairdatabase.NIVEAU3, " & _ "intermediairdatabase.HOLDING, intermediairdatabase.BEDRNAAM, " & _ "intermediairdatabase.STRAATNM, intermediairdatabase.HUISNUMM, " & _ "intermediairdatabase.POSTCODE, intermediairdatabase.WNPLAATS, " & _ "intermediairdatabase.TELEFOON " & _ "FROM intermediairdatabase " & zkWhere & zkEnd & _ "ORDER BY intermediairdatabase.WNPLAATS;" Me.Form.RecordSource = strSQL strSQL = "" zkWhere = "" zkEnd = "" End Function |
Een specialist weet veel van weinig en leert steeds meer van steeds minder, tot hij uiteindelijk alles weet van niets.