Avatar billede jewo Nybegynder
07. januar 2009 - 15:42 Der er 5 kommentarer og
2 løsninger

Komplekse søgekriterier

Hej,

Jeg er interesseret i at søge med asterix i begge ender af udtryk, for at finde udtrykkene inde i felter med længere tekstafsnit.

F.eks. "*climat* chang*"
      "*climat* model*"
      "*climat* forcing*"

Her bruger jeg normalt kriteriet "Like" og så mit udtryk. F.eks

Like "*climat* chang*"

Mit problem er, hvordan jeg søger på flere af kriterierne på samme tid. Jeg har nævnt 3 kriterier, men i virkeligheden vil jeg gerne kunne søge på af gangen 30.

Hvis jeg bruger filteret: In ("mit udtryk"; "mit udtryk"), så kan jeg søge på flere udtryk, men ikke med asterix - jeg får i hvert fald ikke nogen hits i modsætning til med "Like" filteret.

Har I nogle gode bud på søgefiltre?

Jewo
Avatar billede terry Ekspert
07. januar 2009 - 15:55 #1
Like "*climat* chang*"
OR
Like  "*climat* model*"
OR
LIKE "*climat* forcing*"
Avatar billede terry Ekspert
07. januar 2009 - 15:57 #2
and you will need the field name which you are querying after OR

IE:

... SomeField Like "*climat* chang*"
OR SomeField LIKE
Like  "*climat* model*"
OR SomeField
LIKE "*climat* forcing*"
Avatar billede hnteknik Novice
07. januar 2009 - 16:05 #3
Yeps - det har væet min hjørnesten i mange år. Her er et AND eks.

30 af disse

AddToWhere Me.LkUpintnr, "[Anr]", Mycriteria, ArgCount, False
....

Sub AddToWhere(FieldValue As Variant, FieldName As String, Mycriteria As String, ArgCount As Integer, ligmed As Boolean)
    '  Create criteria for WHERE clause.
    If FieldValue <> "" Then
    '  Add "and" if other criterion exists.
        If ArgCount > 0 Then
            Mycriteria = Mycriteria & " and "
        End If
        '  Append criterion to existing criteria.
        '  Enclose FieldValue and asterisk in quotation marks.
        If ligmed Then
            Mycriteria = (Mycriteria & FieldName & " = " & FieldValue)
        Else
            Mycriteria = (Mycriteria & FieldName & " Like " & Chr(39) & Chr(42) & FieldValue & Chr(42) & Chr(39))
        End If
        '  Increase argument count.
        ArgCount = ArgCount + 1
    End If
End Sub
Avatar billede jewo Nybegynder
07. januar 2009 - 16:15 #4
Tak for svar begge.

Jeg er imidlertid usikker på betydningen af jeres svar (mit sql-ordforråd er begrænset). Indtaster i disse filtre i SQL-visning? Eller kan jeg bruge dem i designvisning?

Jeg kan delvis følge Terry's svar. Med "SomeField", mener du da, at jeg blot skal indtaste Like udtrykkene under det rette felt? Eller er du også inde i SQL-visning?
Avatar billede hnteknik Novice
07. januar 2009 - 16:37 #5
Dette her VBA kode som skal ligge bag formen. Hvis du ikke er stiv i VBA kan du kan da blot lave en SQL sætning, hvor du skriver rækken af *....* under hinanden under feltet, men så må også rette det fra gang til gang.
Avatar billede terry Ekspert
07. januar 2009 - 19:20 #6
"Indtaster i disse filtre i SQL-visning? Eller kan jeg bruge dem i designvisning?"

If you are making a query in query designer then you can enter each criteria directly in the criteria field.

For example enter the first criteria
Like "*climat* chang*"
in the first criteria field and the next
Like  "*climat* model*"
in the criteria field under the first. (beside where you can see OR:)
and you do this for all 30 criteria.

If you use OR this means that if any of the 30 criteria are found the record will be displayed.


You can also build a query in code as hnteknik suggests
Avatar billede terry Ekspert
08. januar 2009 - 10:18 #7
tak
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