[vb6] query geen results??

Pagina: 1
Acties:

  • Rusky
  • Registratie: December 2000
  • Laatst online: 04-05 08:51
ik benbezig met een proggie die gegevens haalt uit een database. Dit doe ik via een datagrid en een adodc control. Als ik het programma run gaat alles goed. Maar ikwil ook kunen zoeken in die database. Dus maak ik een query om te zoeken. Dit alles heb ik op de msdn site gevolgd.

maar als ik een query maak als deze (was even test) gaat het wel goed
code:
1
SELECT * FROM onderhoek WHERE ID=99



maar als ik zoiets doe dan blijven de resultaten leeg:
code:
1
SELECT * FROM onderhoek WHERE ONDERWERP = 'zeist'



even nog de hele code :
code:
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
Private Sub cmdSearch_Click()
        
    Dim strQuery As String
    Dim strSearch As String
            
    strSearch = Trim(txtSearch.Text)
    
    strQuery = "SELECT * FROM onderhoek WHERE onderwerp LIKE '*" & strSearch & "*' " _
    & " OR PROJECTNAAM LIKE '*" & strSearch & "*' " _
    & " OR PROJECTADRES LIKE '*" & strSearch & "*' " _
    & " OR POST_PLAATS LIKE '*" & strSearch & "*' " _
    & " OR OPDRACHTGEVER LIKE '*" & strSearch & "*' " _
    & " OR ADRES_OPDR LIKE '*" & strSearch & "*' " _
    & " OR POST_PLAATS_OPDR LIKE '*" & strSearch & "*' " _
    & " OR TEKENAAR LIKE '*" & strSearch & "*' " _
    & " OR GECONT LIKE '*" & strSearch & "*' " _
    & " OR ACC LIKE '*" & strSearch & "*' " _
    & " OR DATUM LIKE '*" & strSearch & "*' " _
    & " OR WERKNR LIKE '*" & strSearch & "*' " _
    & " OR FORMAAT LIKE '*" & strSearch & "*' " _
    & " OR STATUS LIKE '*" & strSearch & "*' " _
    & " OR EENHEID LIKE '*" & strSearch & "*' " _
    & " OR SCHAAL LIKE '*" & strSearch & "*' " _
    & " OR TEKENINGNAAM LIKE '*" & strSearch & "*' " _
    & " OR TEKNR LIKE '*" & strSearch & "*' " _
    & " OR VERSIE LIKE '*" & strSearch & "*' " _
    & " OR PLOTDATUM LIKE '*" & strSearch & "*' " _
    & " OR PATHNAAM LIKE '*" & strSearch & "*' " _
    
    Adodc1.RecordSource = strQuery
    Adodc1.Refresh
    
End Sub


wat ik dus niet snap is dat er in mijn ogen geen verschil is in die query's. Ook heb ik alles nagezocht op de msdn website, en toch nog blijft hij leeg. Eerst dacht ik dat hij geen gegevens door kreeg (dat de strSearch leeg was) maar als ik MsgBox strSearch doe krijg ik netjes mijn zoek woorden.

mijn pc


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 21:45

TeeDee

CQB 241

Moet het niet
code:
1
LIKE '%" & strSearch & "%'
zijn?
Dus het * vervangen voor een %

[ Voor 18% gewijzigd door TeeDee op 09-06-2005 14:53 ]

Heart..pumps blood.Has nothing to do with emotion! Bored


  • whoami
  • Registratie: December 2000
  • Laatst online: 06-05 15:36
Je moet % gebruiken als wildcard-character voor de LIKE.

En daarnaast is die query ook nog eens niet echt performant te noemen; je doorzoekt alle velden (is dat nodig), en een OR is ook niet echt bevordelijk voor de performance.

https://fgheysels.github.io/


  • Rusky
  • Registratie: December 2000
  • Laatst online: 04-05 08:51
TeeDee schreef op donderdag 09 juni 2005 @ 14:53:
Moet het niet
code:
1
LIKE '%" & strSearch & "%'
zijn?
Dus het * vervangen voor een %
het is een access db en moet het * wezen. maar dat maakt iet uit, want als ik ze weglaat (zie eerste code) dan laat hij nog niks zien

mijn pc


  • whoami
  • Registratie: December 2000
  • Laatst online: 06-05 15:36
Het moet % zijn.

Als je het via access direct doet, dan gebruik je *, maar als je het via vb6 of gelijk welke andere taal doet, moet je % gebruiken.

Ivm die andere, simpele query, ben je wel zeker dat je dan een record in die tabel hebt waarvoor het onderwerp exact 'zeist' is; niets meer en niets minderr?

[ Voor 35% gewijzigd door whoami op 09-06-2005 14:59 ]

https://fgheysels.github.io/


  • lier
  • Registratie: Januari 2004
  • Laatst online: 19:58

lier

MikroTik nerd

Netter zou zijn om in code een SQL string op te bouwen, waarin alleen die velden als parameter meegegeven worden, waarop ook "echt" gezocht moet worden.

Eerst het probleem, dan de oplossing


  • Rusky
  • Registratie: December 2000
  • Laatst online: 04-05 08:51
de werkende code :

code:
1
2
3
4
5
6
7
strQuery = "SELECT * FROM onderhoek WHERE onderwerp LIKE '%" & strSearch & "%' " _
    & " OR PROJECTNAAM LIKE '%" & strSearch & "%' " _
    & " OR PROJECTADRES LIKE '%" & strSearch & "%' " _
    & " OR POST_PLAATS LIKE '%" & strSearch & "%' " _
    & " OR OPDRACHTGEVER LIKE '%" & strSearch & "%' " _
    & " OR ADRES_OPDR LIKE '%" & strSearch & "%' " _
    & " OR POST_PLAATS_OPDR LIKE '%" & strSearch & "%' "

mijn pc


  • Stiegl
  • Registratie: Mei 2004
  • Laatst online: 26-03 10:59
% is de ADO wildcard, als je het via DAO (Data Access Objects) zou doen is de wildcard volgens mij wel *. Ik dacht dat VBA in Access intern ook DAO gebruikt.

edit:
@bee-es: Tja dat bedoelde ik ook, iets met een klok en een klepel.... B)

[ Voor 22% gewijzigd door Stiegl op 09-06-2005 17:13 ]

Uit onderzoek is gebleken dat 85% van alle statistieken niet klopt


  • BertS
  • Registratie: September 2004
  • Laatst online: 13-02 08:33
The Cheese schreef op donderdag 09 juni 2005 @ 15:22:
% is de ADO wildcard, als je het via DAO (Data Access Objects) zou doen is de wildcard volgens mij wel *. Ik dacht dat VBA in Access intern ook DAO gebruikt.
Je eerste zin is waar, de tweede zin is onzin ;)
Ook in VBA kies je zelf of je ADO of DAO gebruikt.
In een mdb-file wordt intern wel met DAO gewerkt (het recordsetobject achter een form is DAO), in een adp-file wordt gebruik gemaakt van ADO.

Edit @TS:
Om de performance te verbeteren (je huidige oplossing wordt een drama als je db gevuld gaat worden), kun je in de query een extra berekend veld opnemen. Zelf gebruik ik dan nog weleens:
code:
1
Filterwaarde: [Veld1] & "||" & [Veld2] & "||" & [Veld3] & "||" & [Veld4]

Je hoeft de LIKE dan alleen op dat veld uit te voeren, en dat gaat een stuk sneller :)

[ Voor 27% gewijzigd door BertS op 09-06-2005 16:02 ]

Pagina: 1