Hallo,
ik ben tegenwoordig bezig om een database te maken voor een bedrijf. Het wil al aardig lukken, alleen heb ik een groot probleem. Het is de bedoeling dat er gezocht kan worden in de database. Er is al een formulier aanwezig die alle velden heeft waar in gezocht moet kunnen worden. Nu ben ik bezig met de zoekknop, welke het daadwerkelijke zoekwerk moet gaan voltooien. (ik heb de code van de zoekknop van een andere database mogen gebruiken, weet weinig van VB vandaar, en heb deze gekopieerd).
De andere code is dus goed nagekeken en zou het moeten doen, helaas het is anders, als ik zoek vind ik niets terug in de database, ik heb hieronder de gehele code maar effe gepast zodat jullie er misschien iets in kunnen vinden dat fout is gedaan.
ik ben tegenwoordig bezig om een database te maken voor een bedrijf. Het wil al aardig lukken, alleen heb ik een groot probleem. Het is de bedoeling dat er gezocht kan worden in de database. Er is al een formulier aanwezig die alle velden heeft waar in gezocht moet kunnen worden. Nu ben ik bezig met de zoekknop, welke het daadwerkelijke zoekwerk moet gaan voltooien. (ik heb de code van de zoekknop van een andere database mogen gebruiken, weet weinig van VB vandaar, en heb deze gekopieerd).
De andere code is dus goed nagekeken en zou het moeten doen, helaas het is anders, als ik zoek vind ik niets terug in de database, ik heb hieronder de gehele code maar effe gepast zodat jullie er misschien iets in kunnen vinden dat fout is gedaan.
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
144
145
146
| Private Sub cmdSearch_Click() Dim db As Database Dim QD As QueryDef Dim rst As Recordset Dim where As Variant, varItem As Variant, Pos As Variant Dim varSelect As String, varFrom As String, S() As Variant Dim varSearchDim As Integer, intI As Integer Dim strWhere() As String, strWhereAll As String Const QM = """" 'On Error GoTo Error_Handler varSelect = "SELECT DISTINCTROW Publicaties.* " varFrom = "FROM Publicaties INNER JOIN (Hoofd_Categorie INNER JOIN Publicatie_indeling ON Hoofd_Categorie.Hoofd_Categorie_ID = Publicatie_indeling.Hoofd_Categorie_ID) ON Publicaties.Facet_ID = Publicatie_indeling.FACET_ID " varSearchDim = Me!lstCategories.ItemsSelected.Count + 8 ReDim S(varSearchDim) ReDim strWhere(varSearchDim) Set db = DBEngine.Workspaces(0).Databases(0) Set QD = db.QueryDefs("qryTemp") where = Null S(1) = Forms![frmSearch]![txtID] S(2) = Forms![frmSearch]![txtTitle] S(3) = Forms![frmSearch]![txtAuthor] S(4) = Forms![frmSearch]![txtISBN] S(5) = Forms![frmSearch]![txtPY] S(6) = Forms![frmSearch]![txtPublisher] S(7) = Forms![frmSearch]![cboLang] S(8) = Forms![frmSearch]![cboCountry] If Me!lstCategories.ItemsSelected.Count > 0 Then intI = 9 With Me!lstCategories For Each varItem In .ItemsSelected S(intI) = .Column(1, varItem) intI = intI + 1 Next varItem End With End If If IsNull(S(1)) Then strWhere(1) = "" Else strWhere(1) = "((Publicaties.Facet_ID Like " & QM & S(1) & "*" & QM & "))" End If If IsNull(S(2)) Then strWhere(2) = "" Else strWhere(2) = " AND ((Publicaties.Titel Like " & QM & S(2) & "*" & QM & "))" End If If IsNull(S(3)) Then strWhere(3) = "" Else strWhere(3) = " AND ((Publicaties.Auteur Like " & QM & S(3) & "*" & QM & "))" End If If IsNull(S(4)) Then strWhere(4) = "" Else strWhere(4) = " AND ((Publicaties.ISBN Like " & QM & S(4) & "*" & QM & "))" End If If IsNull(S(5)) Then strWhere(5) = "" Else strWhere(5) = " AND ((Publicaties.Publicatiejaar=" & S(5) & "))" End If If IsNull(S(6)) Then strWhere(6) = "" Else strWhere(6) = " AND ((Publicaties.Publicator Like " & QM & S(6) & "*" & QM & "))" End If If IsNull(S(7)) Then strWhere(7) = "" Else strWhere(7) = " AND ((Publicaties.Taal_ID Like " & QM & S(7) & "*" & QM & "))" End If If varSearchDim - 7 > 0 Then If varSearchDim - 7 = 1 Then strWhere(8) = " AND ((Hoofd_categorie.Hoofd_Categorie_ID Like " & QM & S(8) & "*" & QM & "))" Else strWhere(8) = " AND (((Hoofd_categorie.Hoofd_Categorie_ID Like " & QM & S(8) & "*" & QM & "))" For intI = 10 To varSearchDim If intI - varSearchDim = 0 Then strWhere(intI) = " OR ((Hoofd_categorie.Hoofd_Categorie_ID Like " & QM & S(intI) & "*" & QM & ")))" Else strWhere(intI) = " OR ((Hoofd_categorie.Hoofd_Categorie_ID Like " & QM & S(intI) & "*" & QM & "))" End If Next intI End If End If For intI = 1 To varSearchDim strWhereAll = strWhereAll & strWhere(intI) Next intI If strWhereAll = "" Then DoCmd.GoToControl "txtID" Exit Sub Else Pos = InStr(1, strWhereAll, "AND") If Pos < 5 And Pos <> 0 Then strWhereAll = Right(strWhereAll, Len(strWhereAll) - 5) Else Pos = InStr(1, strWhereAll, "OR") If Pos < 4 And Pos <> 0 Then strWhereAll = Right(strWhereAll, Len(strWhereAll) - 4) End If End If strWhereAll = "WHERE " & strWhereAll End If QD.SQL = varSelect & varFrom & strWhereAll Set rst = db.OpenRecordset("qryTemp") If rst.RecordCount = 0 Then MsgBox "No matching records", vbOKOnly + vbExclamation, "FYI" rst.Close db.Close DoCmd.Close A_FORM, "frmSearch" Exit Sub End If DoCmd.SelectObject acForm, "Publicaties_Categorie" Forms!Publicaties_Categorie.RecordSource = "qryTemp" rst.Close db.Close DoCmd.Close A_FORM, "frmSearch" Exit_Sub: Exit Sub Error_Handler: MsgBox "Error: " & Error$ & Chr(13) & "Error No: " & Err & Chr(13) & "Report to jswerf@home.nl, 16" Resume Exit_Sub End Sub |
[ Voor 10% gewijzigd door curry684 op 14-11-2003 14:08 . Reden: dan doe ik het maar ]