Avatar billede -anders- Juniormester
24. september 2002 - 14:04 Der er 14 kommentarer og
1 løsning

Fritekstsøgning i formular

Hej eksperter, det jeg søger efter er:
Jeg har en formular i tabelformat, på denne formular kunne jeg godt tænke mig at insætte en tekstboks, og ved siden af en knap. Jeg vil så gerne indtaste et eller andet i tekstboksen, og derefter trykke på knappen. Nu skulle søgefunktionen gerne søge i alle mine felter og så returnere, og filtrer de poster der indeholder noget der matcher det jeg har skrevet i tekstboksen, man kunne forestille sig at det kunne køre som den form for fritekstsøgning man kender fra hjemmesider på internettet.
Min database er opbygget helt efter bogen med tabeller relationer forespørglser e.t.c. Jeg kunne forstille mig at problemet kunne være at man kun kan få returneret poster fra et enkelt felt, men det du'r ikke. Kan det lade sig gøre.
mvh Anders
24. september 2002 - 14:08 #1
Er vi enige om, at du kun ønsker at søge i én tabel (og at formularen kun er baseret på den tabel)?
Avatar billede terry Ekspert
24. september 2002 - 14:10 #2
Make a query and set the criteria for each field you want to search on to forms!Yourform!YourField

Then when you press the button you can set the forms recordsource to the name of the query.

You could have a toggle button which sets the recordsource to the search query when pressed or another query when NOT pressed
Avatar billede -anders- Juniormester
24. september 2002 - 14:12 #3
Well, formularen's recordsourse er en forespørgsel der igen er sat sammen af flere tabeller, relationer opslag e.t.c. køre ok
Avatar billede -anders- Juniormester
24. september 2002 - 14:13 #4
Løber lige er tilbage om 10 minutter
Avatar billede terry Ekspert
24. september 2002 - 14:21 #5
You can change the record source in code.

If Len(Trim(Me.YourSerachField)) = 0 Then

    Me.recordsource = YourCurrentQuery
else
    Me.recordsource = YourNewQuery
en if
24. september 2002 - 14:28 #6
Jeg har lavet en funktion, som søger blandt de felter på formularen, som har egenskaben "Mærke" (Tag) = "Søg"
Dvs du markerer de ønskede felter og giver dem alle egenskaben "Mærke" = "Søg"

På dit tekstfelt lægger du denne kode på AfterUpdate:

    Me.filter = HentFilter(Me![DitSøgFelt])
    Me.FilterOn = True


Gem denne funktion (f.eks. i et modul):

Public Function HentFilter(Søgeord As String) As String
   
    Dim SQLStr As String
    Dim ctrl As Control
       
    For Each ctrl In Screen.ActiveForm
        If ctrl.Tag = "Søg" Then
            SQLStr = SQLStr & "[" & ctrl.ControlSource & "] Like '*" & Søgeord & "*' Or "
        End If
    Next ctrl
    If SQLStr <> "" Then
        SQLStr = Left(SQLStr, Len(SQLStr) - 4)
    End If
    HentFilter = SQLStr
End Function
Avatar billede -anders- Juniormester
24. september 2002 - 14:30 #7
>thomas, hvordan kalder jeg så funktionen via knappen ?
24. september 2002 - 14:37 #8
Arh....jeg lavede koden således at du ikke behøver en knap. Idet du forlader søge-feltet så søger den automatisk.

Men hvis du hellere vil have en knap, så skal du flytte
    Me.filter = HentFilter(Me![DitSøgFelt])
    Me.FilterOn = True
til knappens VedKlik-hændelse.

/Thomas
Avatar billede -anders- Juniormester
24. september 2002 - 14:39 #9
Okay Thomas, jeg vil nu prøve dit forslag af, og vender hurtigst muligt tilbae
24. september 2002 - 14:43 #10
hvis du har problemer, så implementerer jeg det gerne for dig. Så skal du bare sende databasen til mig og skrive hvilken formular det skal være på.

tj@makeiteasy.dk
Avatar billede -anders- Juniormester
24. september 2002 - 14:53 #11
Hej Thomas
Jeg har nu testet, og det køre bare perfekt, en sidste ting der kunne være smart er en msgbox hvis der ikke er noget der matcher, well det var bare en hurtigt og proff hjælp, og points er nu på vej til dig.
>>Tery, også tak for dit indlæg.

/Anders.
Avatar billede terry Ekspert
24. september 2002 - 14:55 #12
who's supposed to get the points here?
Avatar billede terry Ekspert
24. september 2002 - 14:57 #13
Thomas you can get em here
http://www.eksperten.dk/spm/261847
Avatar billede -anders- Juniormester
24. september 2002 - 14:58 #14
Hej Thomas Og terry, er der problemer med de point jeg har givet, hvis jeg gjort en fejl beklager jeg meget
/Anders
24. september 2002 - 15:32 #15
Hej Anders,

Det skal du ikke tænke på. Terry fik dem bare i stedet for mig,men han har nu gvet mig 200 point.

Ang. dit sidste spørgsmål: læg denne kode på knappen/tekstboksen i stedet:

    Me.filter = HentFilter(Me![DitSøgFelt])
    Me.FilterOn = True
    If Me.RecordsetClone.RecordCount = 0 Then
        MsgBox "Ingen poster opfylder kriteret!"
        Me.FilterOn = False
    End If
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