Avatar billede stinejh1980 Nybegynder
03. januar 2006 - 15:17 Der er 11 kommentarer og
1 løsning

Søgefunktieoin med flere kriterier

Jeg vil gerne lave en søge funktion som selv kan finde ud af hvad brugeren har indtastet.

Altså at jeg har flere felter brugeren kan indtaste i, men at elle felter ikke nødvendigvis behøver at være udfyldt.

Eks:
Ordrenr: tekstfelt
Varenr: Tekstfelt
Kunde: Tekstfelt
Leveringsuge: Tekstfelt
-Knap(Søg)-

Her skal brugeren kunne vælge at udfylde et tekstfelt eller alle, men at funktionen tager kriterierne fra dem som er udfyldt til at søge i db. Altså en kombi.

/Elvstine
Avatar billede martin_moth Mester
03. januar 2006 - 16:26 #1
Søge i hvad?
En database, en tekstfil, et regneark, et dokument, ...?

Kan du selv finde ud af at lave søgningen, og mangler bare at få sat søgeordene ind?

Lidt mere beskrivelse...
Avatar billede joern Nybegynder
03. januar 2006 - 22:07 #2
Hej.

Ja, det lyder lidt diffust.  Vil du søge på alle poater, hvis kunde-efternavn ender på 'sen' og som har ordrenumre hvor ciffer 3 og 4 er '17' ?

Du skal i hvert fald gøre dig klart, og søgningen skal være 'enten - eller' - altså blot ét af kriterierne er opfyldt.  Eller om søgningen skal være 'både og' - altså at samtlige kriterier skal være opfyldt.

Jeg gætter på at det er recordsets, du vil udvælge fra.
Avatar billede sjh Nybegynder
03. januar 2006 - 23:09 #3
martin_moth Jeg vil også gætte på at det er en database da elvstine skriver:
"søge i db." db=database

Hvis du kun vil søge i de felter som er udfyldt så kan du jo gøre sådan:

Private Sub Command1_Click()
Dim strSQL As String
Dim strSearch As String

  strSearch = ""

  If Len(txtOrdrenr.Text) > 0 Then
    strSearch = strSearch & " Ordrenr='" & txtOrdrenr.Text & "' AND"
  End If

  If Len(txtVarenr.Text) > 0 Then
    strSearch = strSearch & " Varenr='" & txtVarenr.Text & "' AND"
  End If

  If Len(txtKunde.Text) > 0 Then
    strSearch = strSearch & " Kunde='" & txtKunde.Text & "' AND"
  End If

  If Len(Leveringsuge.Text) > 0 Then
    strSearch = strSearch & " Leveringsuge='" & txtLeveringsuge.Text & "' AND"
  End If
 
  If strSearch <> "" Then
    strSearch = Mid$(strSearch, 1, Len(strSearch) - 4)

    'Stjerne (SELECT * FROM) kan du udskifte med fx. Ordrenr, Varenr, Kunde, Leveringsuge for at gøre din sql hurtiger.
    strSQL = "SELECT * FROM DIN_TABEL WHERE" & strSearch & ";"
   
    ' Så er det bare at fyre strSQL af..
  End If
End Sub
Avatar billede martin_moth Mester
04. januar 2006 - 09:01 #4
sorry - havde ikke læst ordenligt
Avatar billede stinejh1980 Nybegynder
06. januar 2006 - 15:41 #5
SJH:

Det var lige det jeg mente. Jeg prøver det lige af.

Men kan den også som joern skriver finde kunder der ender på "sen"?
Avatar billede sjh Nybegynder
07. januar 2006 - 03:11 #6
så skal du bare bruge LIKE '%SØGEORD%'

  If Len(txtKunde.Text) > 0 Then
    strSearch = strSearch & " Kunde LIKE '%" & txtKunde.Text & "%' AND"
  End If
Avatar billede sjh Nybegynder
07. januar 2006 - 03:48 #7
En anden ting.. du skriver at Ordrenr og Varenr er tekstfelter?? er det ikke nummer som skal stå i dem da??

Det er ikke fordi det ikke vil virke.. men du kan sikkert komme ind i nogle problemer hvis du skal sorter (ORDER BY) så vil den sorter alfabetisk og ikke numerisk..

Hvis du ændre de to felter til "Tal" så skal de to se sådan ud:

  If Len(txtOrdrenr.Text) > 0 Then
    strSearch = strSearch & " Ordrenr=" & txtOrdrenr.Text & " AND"
  End If

  If Len(txtVarenr.Text) > 0 Then
    strSearch = strSearch & " Varenr=" & txtVarenr.Text & " AND"
  End If
Avatar billede stinejh1980 Nybegynder
09. januar 2006 - 12:29 #8
Nej det skal ikke være af typen tal i Acces for vare nummer kan godt indeholde tal, men du har ret Ordre nr skal laves om til tal.

/Elvstine
Avatar billede stinejh1980 Nybegynder
09. januar 2006 - 12:57 #9
Men i denne funktion skal de da udfylde alle felter.
Skal jeg ikke samle alle disse if'er??
Avatar billede stinejh1980 Nybegynder
16. februar 2006 - 15:00 #10
sjh>>
Så har jeg fået kigget på det du skrev - det virker uden beklagelser!!
Smider du et svar??
Avatar billede stinejh1980 Nybegynder
06. februar 2007 - 14:18 #11
Nu er der snart gået 1 år siden jeg spurgte efter et svar.

Hvis du ikke svarer inden da, så lukker jeg og tager point selv....!!!!
Avatar billede sjh Nybegynder
07. februar 2007 - 08:34 #12
ok da ;)
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
Kurser inden for grundlæggende programmering

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