08. oktober 2001 - 21:04Der 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.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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
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
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 ......\"
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.
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.