Avatar billede domino1977 Nybegynder
27. august 2002 - 15:00 Der er 13 kommentarer og
1 løsning

AND søgning!!!!

Jeg har lige denne lille søgning her:
-------------------------------------------------------
Private Sub cmdSearch_Click()
    List1.Clear
    strKeyword = txtSearch.Text And strKeyword = txtSearch2.Text
    objConn.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & App.Path & "\data.mdb"
            strSQL = "SELECT SFdwg, Type, logstormat FROM logstor WHERE"
            strSQL = strSQL & " (SFdwg LIKE '%" & strKeyword & "%')"
            strSQL = strSQL & " OR (logstormat LIKE '%" & strKeyword & "%')"
            strSQL = strSQL & " OR (Type LIKE '%" & strKeyword & "%')"
            Set objRs = objConn.Execute(strSQL)
            While Not objRs.EOF
                List1.AddItem "" & objRs("SFdwg") & ""
            objRs.MoveNext
            Wend
        Set objRs = Nothing
    objConn.Close
End Sub
-------------------------------------------------------
Meningen er at den skal søge efter alt hvad der står i:
txtSearch.Text OG
txtSearch2.Text

OG KUN vise det der passer med beggé.... det gør den så ikke.. den tager ALT hvad der passer med det der står ikke Textboksene.... HVORFOR??
Avatar billede ocp Nybegynder
27. august 2002 - 15:53 #1
Måske fordi du skriver OR i stedet for AND?
Avatar billede ocp Nybegynder
27. august 2002 - 15:56 #2
Du skal skrive:

strKeyword1 = txtSearch.text
strKeyword2 = txtSearch2.text

OG

strSQL = "SELECT SFdwg, Type, logstormat FROM logstor WHERE"
strSQL = strSQL & " (SFdwg LIKE '%" & strKeyword & "%' OR SFdwg LIKE '%" & strKeyword2 & "%')"
strSQL = strSQL & " OR (logstormat LIKE '%" & strKeyword & "%' OR logstormat LIKE '%" & strKeyword2 & "%')"
strSQL = strSQL & " OR (Type LIKE '%" & strKeyword & "%' OR Type LIKE '%" & strKeyword2 & "%')"
Avatar billede ocp Nybegynder
27. august 2002 - 15:58 #3
Det første var en lille smutter. Jeg havde ikke set hvad du forsøgte at gøre øverst.
Avatar billede domino1977 Nybegynder
28. august 2002 - 08:14 #4
Jeg skal vel bruger AND fordi den skal finde de dataer der passer ind i BEGGE felterne??
Avatar billede ocp Nybegynder
28. august 2002 - 09:53 #5
Det kommer an på hvad du mener med at det skal passe i begge felter.

AND bruges når BEGGE betingelserne SKAL være opfyldt. Dvs. at der skal stå både teksten fra txtSearch og txtSearch2 i f.eks. SFdwg.

OR bruges når MINDST EN af betingelser skal være opfyldt.
Avatar billede ocp Nybegynder
28. august 2002 - 09:57 #6
Eksempel:

AND: Find personer hvis fornavn er både "Jens" OG "Ole". (det giver nok ikke så mange "hits" ;-).

OR:  Find personer hvis fornavn er "Jens" ELLER "Ole".
Avatar billede domino1977 Nybegynder
28. august 2002 - 10:08 #7
Jamen lad os sige at du vil finde varenummer!!

Dine varenummer har flere forskellige info.. feks længde, brede og højde.

Kan så har du 3 bokse... den ene er til længde, en til brede og en til højde....

Man indtaster så Længde: 100 og brede: 50... og højden er man ligeglad med...

Så kommer alle kasserne frem der har en længde: 100 og en brede på 50!!
Avatar billede ocp Nybegynder
28. august 2002 - 10:13 #8
Så må du opbygge din forespørgsel således:

sql = "SELECT * FROM box where "
if txtLength.text <> "" then
  where = " AND "
  where = where & "length = " & txtLength.text
end if

if txtHeight.text <> "" then
  if len(where)>0 then where = where & " AND "
  where = where & "height = " & txtHeight.text
end if

if txtWidth.text <> "" then
  if len(where)>0 then where = where & " AND "
  where = where & "width = " & txtWidth.text
end if

sql = sql & where
Avatar billede domino1977 Nybegynder
28. august 2002 - 10:17 #9
Hmmmm..... det er jeg ikke helt med på... fordi jeg har en liste som alle resultaterne bliver vidst i... hvad så med den???
Avatar billede ocp Nybegynder
28. august 2002 - 10:26 #10
Dit problem er at din SQL-sætning er forkert opbygget i forhold til hvad du vil. Måden du opbygger din liste på er helt fin.
Jeg prøvede bare at få dig til at forstå hvordan SQL egentlig virker og hvordan du kan sikre at der bliver søgt korrekt selv om der ikke er udfyldt noget i den en af dine textbox'e.
Avatar billede domino1977 Nybegynder
29. august 2002 - 10:50 #11
Jamen nu skal du høre....

Den først du skrev virker fint....

Jeg vil jo bare gerne have det sådan at den skal gå ind i tre ComboBOXE og se efter hvad man har valgt... og liste alle de emner det passer ind i søgningen... og hvis man ikke udfylde det skal den tage det som om at det er ligemeget...!!!
Avatar billede domino1977 Nybegynder
04. september 2002 - 10:35 #12
Hvad nu hvis jeg bruger DAO og allerede har denne kode:
---------------------------------------------------------------------------
Private Sub cmdSearch_Click()
    List1.Clear
   
    Dim soegenavn As String
    soegenavn = txtSearch
            recRecordset.MoveFirst
            If Not recRecordset.EOF Then
            UpdateFelter
            Do While recRecordset.EOF = False
            If recRecordset("Navn") = soegenavn Then
            List1.AddItem "" & recRecordset("navn") & ""
            Exit Sub
            End If
            recRecordset.MoveNext
            Loop
            MsgBox "Søgeord ikke fundet"
End If
End Sub
---------------------------------------------------------------------------
Avatar billede ocp Nybegynder
04. september 2002 - 14:12 #13
Tja, tjo... det er jo ikke helt sådan det er meningen man skal bruge det. Hvordan kan det være at du nu kan klare dig med kun en parameter, soegenavn?
Avatar billede domino1977 Nybegynder
13. september 2002 - 11:54 #14
Okay......... takker!!!

OG DENNE SAG ER LUKKET!!!!!!
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