Avatar billede mr.meincke Nybegynder
21. januar 2002 - 12:46 Der er 11 kommentarer og
1 løsning

Hjælp til Søge funktion....HASTER MEGET

Hej!
Jeg vil godt have lavet en søgefunktion hvor man kan bruge: +, -, AND, OR osv.....
Det haster lidt så du får 90 point hvis du klarer det :)
Avatar billede coltau Juniormester
21. januar 2002 - 12:58 #1
strSql = \"select * from tabel where felt1 = 2 and felt 2 = 3;\"

Det er vel ikke bare ovenstående du søger. ?
Lad mig høre nærmere.
Avatar billede mr.meincke Nybegynder
21. januar 2002 - 13:01 #2
OK...hør godt efter :o)

Man skal kunne indtaste fx: \"USA -Calefornia\" så den søger efter USA, men den viser ikke det sites hvor calefornia er i....Var det nok?
Avatar billede coltau Juniormester
21. januar 2002 - 13:13 #3
Jeg ville gerne - men kan ikke nå det før i aften. Jeg er på arbejde.

Avatar billede mr.meincke Nybegynder
21. januar 2002 - 13:14 #4
oki......men jeg er ikke på i aften...tror jeg :o)
Avatar billede erb Nybegynder
21. januar 2002 - 13:19 #5
Avatar billede mr.meincke Nybegynder
21. januar 2002 - 13:21 #6
<%
\'Function GetSQLSearchString(Str As String, Records As String) As String
Function GetSQLSearchString(Str, Records)
    Do While CBool(InStr(1, Str, \"( \")) Or CBool(InStr(1, Str, \" )\")) Or CBool(InStr(1, Str, \"  \"))
        Str = Replace(Str, \" )\", \")\")
        Str = Replace(Str, \"( \", \"(\")
        Str = Replace(Str, \"  \", \" \")
    Loop
   
\'    Dim bExp As Boolean, BoolStop As Boolean, i As Integer, nStr As String, strExp As String, BoolStart As Boolean
   
    bExp = False
    BoolStop = False
    Str = Str & \" \"
    For i = 1 To Len(Str)
        s = Mid(Str, i, 1)
        If s = Chr(34) Then bExp = Not bExp
        If s = \" \" Then
            If Not bExp Then
                If strExp <> \"\" Then
                    If nStr = \"\" Then
                        nStr = strExp
                        t = UCase(strExp)
                        If (CBool(InStr(1, t, \"AND\")) Or CBool(InStr(1, t, \"OR\")) Or CBool(InStr(1, t, \"NOT\"))) Then BoolStart = True
                    Else
                        t = UCase(strExp)
                        If Not ((t = \"AND\") Or (t = \"OR\") Or (t = \"NOT\")) Then
                            If BoolStop Or BoolStart Then
                                nStr = nStr & \" \" & strExp & \" \"
                                BoolStop = False
                                BoolStart = False
                            Else
                                nStr = nStr & \" AND \" & strExp & \" \"
                            End If
                        Else
                            BoolStop = True
                            nStr = nStr & \" \" & t & \" \"
                        End If
                    End If
                End If
                strExp = \"\"
            Else
                strExp = strExp & \" \"
            End If
        Else
            strExp = strExp & s
        End If
    Next
    nStr = nStr & strExp
    nStr = Replace(nStr, \"  \", \" \")
    Str = Replace(nStr, \"\'\", \"\")
   
\'    Dim ReplExp As String, rec() As String
   
    If InStr(1, Records, \",\") Then
        rec = Split(Records, \",\")
        ReplExp = \"(\"
        For i = 0 To UBound(rec)
            ReplExp = ReplExp & \"(\" & rec(i) & \" LIKE \'%<exp>%\')\"
            If i <> UBound(rec) Then
                ReplExp = ReplExp & \" OR \"
            Else
                ReplExp = ReplExp & \")\"
            End If
        Next
    Else
        ReplExp = \"(\" & Records & \" = \'<exp>\')\"
    End If
   
\'    Dim SQLSearch As String, ParanWritten As Boolean
   
    ParanWritten = False
    bExp = False
    SQLSearch = \"\"
    If InStr(1, Str, \" \") Then
        For i = 1 To Len(Str)
            s = Mid(Str, i, 1)
            If s = Chr(34) Then bExp = Not bExp
            If (s = \"(\") Or (s = \")\") Or (s = \" \") Or (s = Chr(34)) Then
                If Not bExp Then
                    If strExp <> \"\" Then
                        t = UCase(strExp)
                        If (t = \"AND\") Or (t = \"OR\") Or (t = \"NOT\") Then
                            SQLSearch = SQLSearch & \" \" & t & \" \"
                        Else
                            SQLSearch = SQLSearch & Replace(ReplExp, \"<exp>\", strExp)
                        End If
                        strExp = \"\"
                        SQLSearch = SQLSearch & s
                    Else
                        If (s = \"(\") Then
                            SQLSearch = SQLSearch & \"(\"
                            ParanWritten = True
                        End If
                    End If
                Else
                    strExp = strExp & \" \"
                End If
            Else
                If s <> Chr(34) Then strExp = strExp & s
            End If
        Next
    Else
        SQLSearch = Replace(ReplExp, \"<exp>\", Str)
    End If
   
    Do While InStr(1, SQLSearch, \"  \")
        SQLSearch = Replace(SQLSearch, \"  \", \" \")
    Loop
   
    Do While CBool(InStr(1, SQLSearch, \"% \")) Or CBool(InStr(1, SQLSearch, \" %\"))
        SQLSearch = Replace(SQLSearch, \"% \", \"%\")
        SQLSearch = Replace(SQLSearch, \" %\", \"%\")
    Loop

    SQLSearch = Replace(SQLSearch, Chr(34), \"\")
   
    SQLSearch = Trim(SQLSearch)
    If UCase(Left(SQLSearch, 2)) = \"OR\" Then SQLSearch = Right(SQLSearch, Len(SQLSearch) - 2)
    If UCase(Left(SQLSearch, 3)) = \"AND\" Then SQLSearch = Right(SQLSearch, Len(SQLSearch) - 3)
   
    GetSQLSearchString = \"(\" & Trim(SQLSearch) & \")\"
    GetSQLSearchString = Trim(SQLSearch)
       
       
End Function
%>


--------------
Hvordan sætter jeg det ind ... eller rettere sagt hvordan bruger jeg det?
Avatar billede coltau Juniormester
21. januar 2002 - 15:16 #7
Jeg tror ikke at du kan anvende ovenstående, da det kode forventer at brugeren indtaster OR, AND osv.

Jeg går ud fra at du forventer at brugeren anvender + og -.

I øvrigt. ! Skal der søges i database eller tekster.
Avatar billede mr.meincke Nybegynder
21. januar 2002 - 20:07 #8
Der skal søges i databaser.....
Avatar billede coltau Juniormester
21. januar 2002 - 20:12 #9
Et eller flere felter. ?
Avatar billede mr.meincke Nybegynder
23. januar 2002 - 11:06 #10
flere
Avatar billede mr.meincke Nybegynder
23. januar 2002 - 11:06 #11
lukket....!
Avatar billede mr.meincke Nybegynder
23. januar 2002 - 11:07 #12
igen
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