Avatar billede lenka25 Nybegynder
27. maj 2002 - 13:57 Der er 14 kommentarer og
2 løsninger

oprette søgeformular

Er der nogle der kan hjælpe en nybegynder i Access? Jeg skal oprette en søgeformular med seks kontrolelementer, hvor man skulle kunne taste alt det information man har til rådighed- det kan være fra en til alle seks at søge efter. Jeg har forestillet mig en slags af forespørgsel i formulardisign hvor kriterier afhængende af det indtastede værdier,men kan ikke få det til at virke - får formular med parameter eller kræves det at alle felterne er udfyldt. Kan det overhovedigt lade sig gør på den måde eller er det helt noget andet skal til?
Avatar billede terry Ekspert
27. maj 2002 - 14:04 #1
send your db to dktebrsa@europe.lego.com and I will take a look
Avatar billede faroe Nybegynder
27. maj 2002 - 14:08 #2
med på en kikker :-)
Avatar billede terry Ekspert
27. maj 2002 - 14:18 #3
this is a simple example using th efilter property

You can call this function each time you change a field (update event) or when you press a button

Function NewFilter()
Dim sFilter As String

   
    sFilter = "1 "
       
    If Not fldIsEmpty(Me.fld1) Then
        sFilter = sFilter & " AND dbFld1 = " & Me.fld1
       
    End If
   
    If Not fldIsEmpty(Me.fld2) Then
        sFilter = sFilter & " AND dbFld2 = " & Me.fld2
       
    End If
   
       
   
   
    Me.Filter = sFilter
   
    If sFilter = "1 " Then 'No filter
        Me.FilterOn = False
    Else
        Me.FilterOn = True
    End If
   
    Me.tglFilter.Value = Me.FilterOn
   
    Me.Refresh
   
End Function

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
27. maj 2002 - 14:20 #4
If the field you are searching on is text then use

    If Not fldIsEmpty(Me.fld1) Then
        sFilter = sFilter & " AND dbFld1 = '" & Me.fld1 & "'"
       
    End If
Avatar billede terry Ekspert
27. maj 2002 - 14:21 #5
delete this line

Me.tglFilter.Value = Me.FilterOn
   
In MY program I have a toggle button to set/unset the filter
Avatar billede terry Ekspert
27. maj 2002 - 14:24 #6
You could quite easily modify this example to to alter the forms Records Source instead of the filter
27. maj 2002 - 14:28 #7
Her er en funktion, som kan bruges til at lægge et vilkårligt antal søgefelter på en formular.
Dine søgefelter skal hedde "søg" efterfulgt af det samme som det felt du søger efter. Eks: søgTelefon hvis feltet skal søge på telefon.

Endvidere skal hvert søgefelt have egenskaben "Mærke" (Tag) sat til enten Tal eller Tekst for at angive om feltet er nummerisk eller tekst.

Public Function GetFilter() As String
   
    Dim SQLStr As String
    Dim ctrl As Control
   
    For Each ctrl In Screen.ActiveForm
        If ctrl.Tag = "Tekst" Then
            If ctrl <> "" Then
                SQLStr = SQLStr & "[" & Mid(ctrl.Name, 4) & "] = '" & ctrl & "' And "
            End If
        ElseIf ctrl.Tag = "Tal" Then
            If ctrl <> "" Or Not IsNull(ctrl) Then
                SQLStr = SQLStr & "[" & Mid(ctrl.Name, 4) & "] = " & ctrl & " And "
            End If
        End If
    Next ctrl
    If SQLStr <> "" Then
        SQLStr = Left(SQLStr, Len(SQLStr) - 5)
    End If
    GetFilter = SQLStr
End Function

Herefter kan man lave en søgknap, som har denne kode:
Me.Filter = GetFilter
Me.Filteron = true
27. maj 2002 - 19:45 #8
lenka, har du fået kigget på forslagene? Har du brug for mere viden?
Avatar billede nih Novice
27. maj 2002 - 21:18 #9
Den underliggende foresp skal have et søgefelt sammenlagt af alle dem du vil søge i:

SELECT *, (felt1 & felt2 & felt3 & felt4 & felt5 & felt6) as soegefelt
FROM Tabel

i et tekstbox på formen lægges flg kode ind i AfterupdateEvent

Private Sub TxtSoeg_AfterUpdate()
  Dim strFilter As String
  strFilter = "[Soegefelt] Like '*" & TxtSoeg & "*'"
  Me.FilterOn = false
  Me.Filter = strFilter
  Me.FilterOn = True
End Sub

Niels
Avatar billede lenka25 Nybegynder
28. maj 2002 - 08:39 #10
Jeg har kigget, men det vil tage lidt tid endnu, til thomasjepsen: den vil ikke exeptere & " And ", det kommer med compile error og vil have afslutning på gerning, og nå du snakker om søgeknap,-mener du almin.kommandoknap hvor jeg skal vælger formular->anvend formularfilter->Ved Click-...?
Avatar billede terry Ekspert
28. maj 2002 - 08:40 #11
27/05-2002 14:04:47
28. maj 2002 - 08:42 #12
Lenka, du er også meget velkommen til at sende den til mig...jeg kan lægge min kode ind for dig på 10 sek!

tj@makeiteasy.dk
28. maj 2002 - 08:47 #13
Du skal bare lave en alm kommandoknap uden at bruge guiden. I stedet hæjreklikker du på knappen og vælger "Generer hændelsesprocedure" (og vælger derefter "kodegenerator")

Herefter skriver du så:
Me.Filter = GetFilter
Me.Filteron = true

Men jeg kan ikke forstå at du skulle få en compile-error! Det ville være fint, hvis du kunne sende den til mig!?
Avatar billede terry Ekspert
29. maj 2002 - 12:00 #14
tak :o)
Avatar billede lenka25 Nybegynder
29. maj 2002 - 12:25 #15
Det lykkedes endeligt! Tusind tak til Terry og ThomasJepsen, Terry var med den rigtige svar først, så håber det er OK hvis deler pointerne 100 til Terry og 50 til Thomas og thanks en gang til for not given op on me!

Til faroe, der ville være med på kigget, hvis du er interess. stadigvæk i resultaterne, skriv til elena@rsip.com
Avatar billede terry Ekspert
29. maj 2002 - 12:38 #16
Hi lenka25, thats fine by me but I think something has happend to the sharing out! 75/75
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