Avatar billede webhelpers Praktikant
01. august 2001 - 14:08 Der er 10 kommentarer og
1 løsning

Søgning i access

Hej.
Jeg har lavet følgende SQL-forespørgsel, som søger efter hvad input der indtastes i søgefelt, søgefelt1 og søgefelt2 (eller bare i ét af felterne):

SELECT Final.*
FROM Final
WHERE (((Final.Nummer) Like \'*\' & [Forms]![Søg].[Søgefelt] & \'*\') AND ((Final.Navnet) Like \'*\' & [Forms]![Søg].[Søgefelt1] & \'*\') AND ((Final.[Nace-1]) Like \'*\' & [Forms]![Søg].[Søgefelt2] & \'*\'));

Problemet er bare, at sql-forespørgslen medtager blank værdi( Null) i søgningen. Så hvis jeg skriver \'grønlandsfly\' i søgefelt1 og ikke skriver noget i de 2 andre søgefelter, medtager den kun de poster som indeholder \'grønlandsfly\', men som ikke indeholder Final.Nummer og Final.Nace-1.....Dvs. den udelader poster, hvor der er noteret et Nummer og et Nace-1.......

Er der nogle der har løsningen hvad jeg skal skrive i SQL\'en, så den lader være med at søge på et søgefelt, hvis ikke der er indtastet i det??
Avatar billede terry Ekspert
01. august 2001 - 14:11 #1
numsi, you should build your SQL dynamically. For each field you test if anything is entered if so append it too your SQL if not goo too thenext field. Takes longer to make, but much more flexible.
Avatar billede terry Ekspert
01. august 2001 - 14:13 #2
I have a little example you can have if you send me your email.
Avatar billede webhelpers Praktikant
01. august 2001 - 14:17 #3
hej terry,
tak for dit hurtige svar - min email er: eriksen@doek.dk
Avatar billede terry Ekspert
01. august 2001 - 14:50 #4
numsi> decided to show you an example here:
It is JUST and example you will obviously need to modify it to your fields, but it should give you some idea!
The function fldIsEmpty could be placed in a module. The ...WHERE 1.... is just a way to avoid haviung to test if I have to use AND.

Dim stWhere As String

    stWhere = \"SELECT * FROM YourTbale WHERE 1\"
   
 
    If Not fldIsEmpty(Me.cboDistrict) Then
        stWhere = stWhere & \" AND [DistrictID] = \" & Me.cboDistrict
    End If
   
    If Not fldIsEmpty(Me.cboOwner) Then
        stWhere = stWhere & \" AND [OwnerID] = \" & Me.cboOwner
    End If
   
    If Not fldIsEmpty(Me.cboBuilding) Then
        stWhere = stWhere & \" AND [BuildingID] = \" & Me.cboBuilding
    End If


    stWhere = stWhere & \";\"


   
Function fldIsEmpty(fld As Variant)
   
    If IsNull(fld) Or fld = \"\" Or IsNull(Len(fld)) Then
        fldIsEmpty = True
    Else
        fldIsEmpty = False
    End If
   
End Function
Avatar billede terry Ekspert
01. august 2001 - 15:12 #5
numsi> can you give me a reason?
Avatar billede webhelpers Praktikant
01. august 2001 - 15:16 #6
Nu har jeg ikke rigtig erfaring med VBA, men skal jeg bare oprette et nyt modul, og så tilføje det du har skrevet? Hvad betyder Me.cboDistrict?
Er [DistrictID] et felt i tabellen eller er det søgefeltet?
Avatar billede terry Ekspert
01. august 2001 - 15:31 #7
Where do you use your \"forespørgsel\" in a report or a form?

I sent just an example, the field names arent the same as yours.

Me.cboDistrict. Me is just a way of refreing to the current object in this case a form. cboDistrict is a combobox on the form.

Anyway let me know where you use the query and I can then make a suggestion.
Avatar billede webhelpers Praktikant
01. august 2001 - 15:41 #8
Jeg bruger min forespørgsel som et filter.
I min søgeformular har jeg nogle søgefelter og en knap som udfører søgningen. Når der trykkes på søgeknappen afspilles en makro som anvendes på formularen kunder.
Avatar billede webhelpers Praktikant
01. august 2001 - 16:03 #9
terry, I can send you a copy of the database if you like.
Avatar billede terry Ekspert
01. august 2001 - 19:37 #10
OK. I need to know which forms and queries I need to look at.

dktebrsa@europe.lego.com

and please note the .com it doesnt get included with the hyperlink!
Avatar billede webhelpers Praktikant
02. august 2001 - 12:19 #11
Thanks terry, you are my man!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester