Toon posts:

[SQL] Geen resultaten als niks ingevuld in editbox

Pagina: 1
Acties:

Verwijderd

Topicstarter
SELECT *
FROM SAMPLERS
WHERE Componist
LIKE '*' + [Forms]![frmRecordZoeken]![edtComponist]+ '*';

Dit heb ik dus..
Werkt bijna goed.. hiermee wordt gezocht naar een componist die die string ingevuld in edtComponist bevat.

Tot zo ver alles goed... maar het probleem is... als ik helemaal niks invul dan zoudie dus '**' moeten invullen, en gewoon de hele database als resultaat moeten geven lijkt me.. maar in plaats daarvan krijg ik 0 resultaten.

Enig idee?

Verwijderd

Veel eleganter is om eerst te kijken of er iets ingevult is in het vak, en afhankelijk daarvan wel of niet de where conditie uit te voeren.

Verwijderd

Gebruik '%' ipv '*'

  • grolle
  • Registratie: Oktober 2001
  • Laatst online: 08-07 18:53
echo de variabele eerst eens in een test pagina
Scheelt soms uren zoek werk.. Ik spreek uit ervaring |:(

  • robjanssen
  • Registratie: September 2001
  • Laatst online: 02-08 16:10

robjanssen

Software Developer

Je moet inderdaad % gebruiken ipv *

  • ATS
  • Registratie: September 2001
  • Laatst online: 12-02 13:46

ATS

Als die textbox leeg is, is de waarde ervan dan niet Null? Ik zou er even Nz(txtDeTextbox,"") omheen zetten.

My opinions may have changed, but not the fact that I am right. -- Ashleigh Brilliant


Verwijderd

[Opmerking]

Indien er niet in de like clause wordt ingevuld, wordt
deze volgens mij gevuld met een lege string. Deze komt niet in jouw database voor en daarom krijg je het result 0.

Ik hoop dat je er wat aan hebt.

groet,

ridde100

Verwijderd

Topicstarter
Bedankt voor jullie reacties.

MrX, hoe kan ik op zoiets checken? Dat gaat niet in de query zelf toch?

Ik weet dat jullie tweakers liever geen oplossingen geven dus als je een linkje hebt naar een site ofzo waar wat uitleg staat :)

thx

Verwijderd

MrX, hoe kan ik op zoiets checken? Dat gaat niet in de query zelf toch?
Ik ben dat wel MrX niet, maar vooruit..

je kunt je een javascript maken dat hierop controleerd.
een kleine voorbeeld oplossing dan maar:

if (document.forms.editbox.value ==''){
overige statement
}

Groet, ridde100

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 17:43

Crazy D

I think we should take a look.

Volgens mij wordt er nu in javascript en vbscript langs elkaar gelult ;) Tenminste het klinkt alsof het over Access gaat :)

In de onChange event van je textbox kun je iets zetten als
cmdZoeken.Enabled = (Len(Trim(txtZoek.Text)) > 0)

In de onClick van cmdZoeken kun je eventueel (ook) nog checken of er iets ingevoerd is of niet (If Len(Trim(txtZoek.Text)) > 0 Then...), en waarom je niks terugkrijgt als je op een lege string zoekt is hierboven al verteld.

Exact expert nodig?


Verwijderd

Topicstarter
Oic, maar aangezien ik niks van vbscript weet....

't is dus niet mogelijk om in de query of met macro of weet ik veel wat 't anders op te lossen?

  • ATS
  • Registratie: September 2001
  • Laatst online: 12-02 13:46

ATS

Kan je niet gewoon die hele SQL string opbouwen voordat je gaat zoeken? Dan hoef je ook niet van die rare contructies in je SQL zelf te gebruiken.
code:
1
2
3
4
5
6
7
8
9
10
11
Private Sub BuildSQL()
Dim sSQL As String
Dim qd As QueryDef

Set qd=CurrentDb.QueryDefs("MySearchQuery")
sSql="SELECT * FROM SAMPLERS"
If Nz(edtComponist,"")>"" Then
    sSql=sSql & " WHERE Componist LIKE '%" & edtComponist & "%'"
End If
qd.SQL=sSql
End Sub

Dit (of iets wat er op lijkt) roep je aan als je wil gaan zoeken, en klaar. Ik vind het verwijzen naar bepaalde componenten op geopende forms vanuit queries zowiezo geen goed idee, maar dat kan aan mij liggen....

My opinions may have changed, but not the fact that I am right. -- Ashleigh Brilliant

Pagina: 1