Avatar billede stausholm Nybegynder
06. februar 2001 - 20:37 Der er 6 kommentarer og
1 løsning

Søgning i flere kolonner

Jeg bruger følgende streng til at returnere et søgeresultat . Vil en eller anden forklare mig hvordan jeg får den til at søge i eks 3 andre kolonner i den pågældende tabel, som den er her, er det kun en søgning på kolonnen INIT,det virker fint, men jeg har problemer med at løbe flere kolonner igennem.

<%
set conn=server.createobject(\"adodb.connection\")
conn.open \"DSN=Personer\"


init = Trim(Request(\"init\"))

WhereClause = \"WHERE \"

If init <> \"\" Then
WhereClause = WhereClause & \"InStr(Init,\'\" & Init & \"\') AND \"
End If


If Right(WhereClause,4) = \"AND \" Then
WhereClause = Left(WhereClause, Len(WhereClause) -4)

Query = \"SELECT * FROM Person \" & WhereClause

Set klasse = Conn.Execute(query)
%>

/Stausholm
Avatar billede eagleeye Praktikant
06. februar 2001 - 20:41 #1
WHERE kolonne1=xx AND kolonne2=yy OR kolonne3=zz

Så søger den på flere kolonner.
Avatar billede eagleeye Praktikant
06. februar 2001 - 20:43 #2
InStr returnere et tal for hvor en streng er i en anden streg... Så du bygger vist din Where forkert op.

Hvad kan init indeholde, kom med et eksempel.
Avatar billede stigc Nybegynder
06. februar 2001 - 20:44 #3
Jer er ikke hlet med på din kode, men denne skulle søge i INIT2 og INIT3 også!


init = Trim(Request(\"init\"))

                    WhereClause = \"WHERE \"

                    If init <> \"\" Then
                    WhereClause = WhereClause & \"InStr(Init,\'\" & Init & \"\') OR \"
                    End If

                    If init2 <> \"\" Then
                    WhereClause = WhereClause & \"InStr(Init2,\'\" & Init2 & \"\') OR \"
                    End If

                    If init3 <> \"\" Then
                    WhereClause = WhereClause & \"InStr(Init3,\'\" & Init3 & \"\') OR \"
                    End If



                    If Right(WhereClause,4) = \"OR \" Then
                    WhereClause = Left(WhereClause, Len(WhereClause) -3)

                    Query = \"SELECT * FROM Person \" & WhereClause

                    Set klasse = Conn.Execute(query)
Avatar billede stigc Nybegynder
06. februar 2001 - 20:49 #4
Ja nu kan jeg se det. DU bruger ASP i den SQL streng, hvilket du ikke kan! Brug følgende:
Følgende kræver 3 fields: init, init2, init3




                      init = Trim(Request(\"init\"))
                      init2 = Trim(Request(\"init2\"))
                      init3 = Trim(Request(\"init3\"))

                                          WhereClause = \"WHERE \"

                                          If init <> \"\" Then
                                          WhereClause = WhereClause &  \"init LIKE \'%\" & init & \"%\'\"
                                          End If

                                          If init2 <> \"\" Then
                                          WhereClause = WhereClause &  \"OR  init2 LIKE \'%\" & init2 & \"%\'\"
                                          End If

                                          If init3 <> \"\" Then
                                          WhereClause = WhereClause &  \"OR init3 LIKE \'%\" & init3 & \"%\'\"
                                          End If


                                          Query = \"SELECT * FROM Person \" & WhereClause

                                          Set klasse = Conn.Execute(query)
Avatar billede stigc Nybegynder
06. februar 2001 - 20:50 #5
læs mere om \"like\" her:

http://www.w3scripts.com/sql/sql_where.asp
Avatar billede stausholm Nybegynder
06. februar 2001 - 21:35 #6
Tak Stigc
Jeg kan se ideen i det du skriver, håber at det er ok med jer begge at Stigc løber med pointene

/Stausholm
Avatar billede tdaugaard Nybegynder
07. februar 2001 - 16:35 #7
sticgc:> det er da lidt sløset det kode der ;-)

WhereClause = \"WHERE \"

If init > \"\" Then WhereClause = WhereClause &  \"init LIKE \'%\" & init & \"%\'\"
If init2 > \"\" Then WhereClause = WhereClause &  \"OR  init2 LIKE \'%\" & init2 & \"%\'\"
If init3 > \"\" Then WhereClause = WhereClause &  \"OR init3 LIKE \'%\" & init3 & \"%\'\"

Query = \"SELECT * FROM person \" & WhereClause

ser da pænere ud.

Hvad vil du forøvrigt gøre hvis init2 og 3 indeholder noget, men \"init\" er tom ? Så får du en streng der ser ud som flg.

SELECT * FROM person WHERE OR init2 LIKE \'%...%\' ...
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