Avatar billede webhelpers Praktikant
08. oktober 2001 - 21:04 Der er 10 kommentarer og
1 løsning

Optimering af søgning

Hej, så er den evindelige access-antihelt tilbage!

Jeg har en between søgning (funktion) der ser således ud:

Function MakeWhere() As String
Dim stWhere As String

If Not fldIsEmpty([Forms]![Udskrivmenu].[Udskrivfelt] And [Forms]![Udskrivmenu].[Udskrivfelta]) Then
    stWhere = \"[Final].[Nummer] Between [Forms]![Udskrivmenu]![Udskrivfelt] And [Forms]![Udskrivmenu]![Udskrivfelta]\"
    End If
   
    If Not fldIsEmpty([Forms]![Udskrivmenu].[Udskrivfelt1]) And Not fldIsEmpty([Forms]![Udskrivmenu].[Udskrivfelt1a]) Then
    stWhere = \"[Final].[Navnet] Between [Forms]![Udskrivmenu]![Udskrivfelt1] And [Forms]![Udskrivmenu]![Udskrivfelt1a]\"
    End If
   
    MakeWhere = stWhere
   
End Function

Denne between søgning viser resultatet af de between i en form. Problemet er, at jeg gerne vil have de 2 kriterier (der er flere kriterier, jeg viser bare kun de 2 af dem) til at resultere i et udtømmende resultat, der kun viser hits hvor begge kriterier er opfyldt. Dvs søger jeg på kunder som har telefonnr ml. 11 og 22 og har firmanavn ml. abe og citron i alfabetet, ja så vil jeg KUN se resultater som opfylder begge kriterier og ikke alle der bare opfylder en af kriterierne. Tror ikke det er den store ændring, men hvem ved, jeg ved i hvertfald ikke.
Avatar billede stigc Nybegynder
08. oktober 2001 - 21:18 #1
Function MakeWhere() As String
Dim stWhere As String

If Not fldIsEmpty([Forms]![Udskrivmenu].[Udskrivfelt] And [Forms]![Udskrivmenu].[Udskrivfelta]) Then
    stWhere = \"[Final].[Nummer] Between [Forms]![Udskrivmenu]![Udskrivfelt] And [Forms]![Udskrivmenu]![Udskrivfelta]\"
    End If
   
    If Not fldIsEmpty([Forms]![Udskrivmenu].[Udskrivfelt1]) And Not fldIsEmpty([Forms]![Udskrivmenu].[Udskrivfelt1a]) Then

    stWhere = stWhere & \"[Final].[Navnet] Between [Forms]![Udskrivmenu]![Udskrivfelt1] And [Forms]![Udskrivmenu]![Udskrivfelt1a]\"
    End If
   
    MakeWhere = stWhere
   
End Function

Avatar billede stigc Nybegynder
08. oktober 2001 - 21:21 #2
aner ikke hvad der gik galt prøver igen!
Avatar billede stigc Nybegynder
08. oktober 2001 - 21:23 #3

Function MakeWhere() As String
Dim stWhere As String

If Not fldIsEmpty([Forms]![Udskrivmenu].[Udskrivfelt] And [Forms]![Udskrivmenu].[Udskrivfelta]) Then
    stWhere = \"([Final].[Nummer] Between [Forms]![Udskrivmenu]![Udskrivfelt] And [Forms]![Udskrivmenu]![Udskrivfelta])\"
    End If
   
    If Not fldIsEmpty([Forms]![Udskrivmenu].[Udskrivfelt1]) And Not fldIsEmpty([Forms]![Udskrivmenu].[Udskrivfelt1a]) Then
    if stWhere <> \"\" THEN stWhere = stWhere  & \" AND \"
    stWhere = stWhere & \"([Final].[Navnet] Between [Forms]![Udskrivmenu]![Udskrivfelt1] And [Forms]![Udskrivmenu]![Udskrivfelt1a])\"
    End If
   
    MakeWhere = stWhere
   
End Function

Avatar billede webhelpers Praktikant
09. oktober 2001 - 00:22 #4
hvad så hvis jeg har 10 forskellige between kriterier, skal jeg så inkludere if stWhere <> osv ml hvert kriterie?
Avatar billede terry Ekspert
09. oktober 2001 - 08:28 #5
Hi Numsi!
I am sure I have given an answer on this question, but if you want to give points away then.

http://www.eksperten.dk/spm/94912
or
http://www.eksperten.dk/spm/94139
or
http://www.eksperten.dk/spm/90749
;o)


Avatar billede terry Ekspert
09. oktober 2001 - 08:33 #6
What you have to be carefull with is if you already have used an AND. So if you set your stWhere to \"1\" then you dont need to think about it.
This is the same as saying WHERE 1 in your SQL WHERE clause. Then all the other fields used will be \" AND ......\"

This is also explained in the links:o)
Avatar billede webhelpers Praktikant
09. oktober 2001 - 09:27 #7
Hej terry
så jeg inkluderer stWhere=\"1\" øverst? Og så betyder det at kompileren opfatter det som om at der står AND ml. hvert kriterie??
   
Avatar billede terry Ekspert
09. oktober 2001 - 09:36 #8
No, the stWhere=\"1\" means that for EVERY search criteria you can write

    stWhere = stWhere & \" AND ([Final].[Navnet] Between [Forms]![Udskrivmenu]![Udskrivfelt1] And [Forms]![Udskrivmenu]![Udskrivfelt1a])\"
   
Notice the AND at the start.
If You didnt use stWhere=\"1\" then what would happen if the first serach criteria was empty an dthe second was used. Your stWhere would start with \" AND .....\" and thats not correct.

Understand?


Avatar billede webhelpers Praktikant
09. oktober 2001 - 09:47 #9
yes, I will try it out.
Avatar billede webhelpers Praktikant
09. oktober 2001 - 09:52 #10
Allright, det virker nu. tak for hjælpen terry!
Avatar billede terry Ekspert
09. oktober 2001 - 09:56 #11
Great, and thanks :o)
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

Seneste artiklerRSS
07:52
07:37
07:32
07:02
06:42
12:00
23/10
23/10
23/10
23/10
23/10