[VB] Search dmv Access werkt niet *

Pagina: 1
Acties:
  • 98 views sinds 30-01-2008

  • osnatool
  • Registratie: Mei 2003
  • Laatst online: 17-10-2014
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.

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 ]


  • osnatool
  • Registratie: Mei 2003
  • Laatst online: 17-10-2014
eum die smileys zijn natuurlijk niet de fout omdat die shortcut toevallig in het script stonden :P

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 00:47
Jaja ..... ik wacht nog ff tot je het spul tussen code tags zet, goed ? ;)

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Verwijderd

Pssst zet je code even tussen [code] tags, dan heb je meer kans dat er uberhaupt iemand naar kijkt. Smileys kun je uitzetten door [norml] te gebruiken.

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Okee nu staat het tussen code-tags en is de topictitel gefixed, nu hebben we nog alleen maar 146 regels code en een "hij doet ut nie"

Vrij naar P&W FAQ - De "quickstart" vraag ik dus:
• Wat heb je al gedaan?
• Wat doet het niet?
• Heb je al gedebugged?
• Heb je een vermoeden waarom het niet werkt?

Met zo'n topic kunnen we natuurlijk niets :/

Professionele website nodig?


  • whoami
  • Registratie: December 2000
  • Laatst online: 11:10
Je moet % gebruiken als wildcardcharacter voor de LIKE ipv *.

Trouwens, zorg in het vervolg eens voor een betere topictitel, want die die je nu hebt dekt de lading totaal niet.
Daarnaast is het ook aangewezen om niet de hele lap code te posten, maar enkel de relevante code.

https://fgheysels.github.io/


  • osnatool
  • Registratie: Mei 2003
  • Laatst online: 17-10-2014
Wat ik eraan geprobeert heb te doen is te kijken of de nummering van de variabelen goed is, ik heb gekeken of de naamgeving van de tabelen en velden goed is. dit klopt naar mijn inziens wel.

Het probleem houdt in dat als er gezocht wordt er steeds de melding terug komt geen records gevonden. Ik weet niet hoe het zou kunnen dat dat gebeurt maar toch doet hij het.

Heb al een tijdje gezocht op andere sites naar voorbeelden of informatie over het systeem dat ik wil maken maar kon niets vinden.

Verwijderd

Heb je het basis debug werk ook al gedaan? Laat hem bijvoorbeeld eens strWhereAll printen, dan weet je of je query op zich wel goed is.

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Dit gaat nergens heen en wordt 1 grote gokquiz.

Debug eerst maar eens zelf en open daarna volgens P&W Beleid een nieuw topic waarin je alleen de relevante regels met je probleem post.

Professionele website nodig?


  • whoami
  • Registratie: December 2000
  • Laatst online: 11:10
De oplossing is gewoon dit:
whoami schreef op 14 november 2003 @ 14:10:
Je moet % gebruiken als wildcardcharacter voor de LIKE ipv *.

https://fgheysels.github.io/

Pagina: 1

Dit topic is gesloten.