Avatar billede haase Nybegynder
14. november 2002 - 23:13 Der er 18 kommentarer og
3 løsninger

søgestreng med tekst

jeg skal gennemsøge en tabel med en tekststreng men kan ikke få nedenstående til at virke...

( i uddrag )


strSearch = Replace((Request.Form("search")), "'", "''")

strSQL = "SELECT * FROM personer WHERE  navn = '%" & strSearch & "%' ORDER BY navn"

og så lige et spørgsmål til. hvordan gør man så den ikke søger på eksakte ord?
Avatar billede a-torsten Nybegynder
14. november 2002 - 23:15 #1
Er ikke 100% sikker... Men prøv...

strSearch = Replace((Request.Form("search")), "'", "''")

strSQL = "SELECT * FROM personer WHERE  navn LIKE '%" & strSearch & "%' ORDER BY navn"
Avatar billede kovalt Nybegynder
14. november 2002 - 23:17 #2
du mangler et LIKE i stedet for =

strSQL = "SELECT * FROM personer WHERE  navn LIKE '%" & strSearch & "%' ORDER BY navn"

hvad mener du med det sidste? det du har lavet søger også på dele af og eller bogstavekombinationer
Avatar billede haase Nybegynder
14. november 2002 - 23:28 #3
Nu skriver den:

Fejltype:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)
[Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression.
Avatar billede haase Nybegynder
14. november 2002 - 23:29 #4
- og det er i den line hvor databasen bliver åbnet
Avatar billede a-torsten Nybegynder
14. november 2002 - 23:31 #5
strSQL = "SELECT * FROM personer WHERE (navn LIKE '" & strSearch & "') ORDER BY navn"
Avatar billede haase Nybegynder
14. november 2002 - 23:31 #6
Det er måske lettere hvis I får hele min kode. Det her er fra resultat siden. På søgesiden er der et tekstfelt(search) og en dropdownmenu(valg) med værdierne 1,2 og 3.


<%

strSearch = Replace((Request.Form("search")), "'", "''")

Set Recordset1 = Server.CreateObject("ADODB.Recordset")
Recordset1.ActiveConnection = MM_Conn_STRING

select case Request.form("valg")
case "1"
  Recordset1.Source = "SELECT * FROM KompetencePersonSamlet, Kompetencedatabase, Gradboejning, billeder, Anciennitet WHERE KompetenceID = KompetencePersonSamlet.samKompetenceID AND GradboejningsID = KompetencePersonSamlet.samGradboejningsID AND billedarkivID = KompetencePersonSamlet.samPersonID AND KompetencePersonSamlet.samAnciennitetsID = Anciennitetsbetegnelse AND navn LIKE '%" & strSearch & "%' ORDER BY navn"
   
Case "2"
  Recordset1.Source = "SELECT * FROM KompetencePersonSamlet, Kompetencedatabase, Gradboejning, billeder, Anciennitet WHERE KompetenceID = KompetencePersonSamlet.samKompetenceID AND GradboejningsID = KompetencePersonSamlet.samGradboejningsID AND billedarkivID = KompetencePersonSamlet.samPersonID AND KompetencePersonSamlet.samAnciennitetsID = Anciennitetsbetegnelse AND kompetencer LIKE '%" & strSearch & "%' ORDER BY navn"
 
case "3"
  Recordset1.Source = "SELECT * FROM KompetencePersonSamlet, Kompetencedatabase, Gradboejning, billeder, Anciennitet WHERE KompetenceID = KompetencePersonSamlet.samKompetenceID AND GradboejningsID = KompetencePersonSamlet.samGradboejningsID AND billedarkivID = KompetencePersonSamlet.samPersonID AND KompetencePersonSamlet.samAnciennitetsID = Anciennitetsbetegnelse AND anciennitet LIKE '%" & strSearch & "%' ORDER BY navn"

case ELSE
  Recordset1.Source = "SELECT * FROM KompetencePersonSamlet, Kompetencedatabase, Gradboejning, billeder, Anciennitet WHERE KompetenceID = KompetencePersonSamlet.samKompetenceID AND GradboejningsID = KompetencePersonSamlet.samGradboejningsID AND billedarkivID = KompetencePersonSamlet.samPersonID AND KompetencePersonSamlet.samAnciennitetsID = Anciennitetsbetegnelse AND navn LIKE '%" & strSearch & "%' ORDER BY navn"
end select

Recordset1.CursorType = 0
Recordset1.CursorLocation = 2
Recordset1.LockType = 1
Recordset1.Open()
%>
Avatar billede a-torsten Nybegynder
14. november 2002 - 23:32 #7
strSQL = "SELECT * FROM personer WHERE (navn LIKE '%" & strSearch & "%') ORDER BY navn"

even
Avatar billede haase Nybegynder
14. november 2002 - 23:32 #8
kan det været noget med cursortype, cursorlocation eller locktype?
Avatar billede kovalt Nybegynder
14. november 2002 - 23:41 #9
strSQL = "SELECT * FROM personer WHERE  navn LIKE '% '"& strSearch &"' %' ORDER BY navn"

Prøv lige det her.....
Avatar billede haase Nybegynder
14. november 2002 - 23:41 #10
nu er der 100 point til den heldige - håber det hjælper :D
Avatar billede kovalt Nybegynder
14. november 2002 - 23:44 #11
prøv lige at udskrive den SQL ....

response.write(strSQL).... hvad skriver den?
Avatar billede eagleeye Praktikant
14. november 2002 - 23:45 #12
er der ikke et linie nummer hvor fejlen kommer?
Avatar billede kovalt Nybegynder
14. november 2002 - 23:49 #13
Det er der hvor SQL-sætningen eksekveres

/Kovalt
Avatar billede eagleeye Praktikant
14. november 2002 - 23:51 #14
dåha men der er ligesom 4 muligheder ikke, se kommentar (14/11-2002 23:31:48)
Avatar billede eagleeye Praktikant
14. november 2002 - 23:52 #15
Du har denne del i WHERE delen:

KompetencePersonSamlet.samAnciennitetsID = Anciennitetsbetegnelse

HVis de to kolonner ikke begge er af samme type (tal og tal) så kommer fejlen også så tjek at de kolonenr du har sat lig hinanden i WHERE delen er af samme type.
Avatar billede eagleeye Praktikant
14. november 2002 - 23:53 #16
Det var lige den enste hvor de to kolonner ikke begge hed noget med xxxID så kunne det måske være den ene var tal og den anden tekst.
Avatar billede haase Nybegynder
14. november 2002 - 23:53 #17
ja, men den jeg tester på er mulighed 1
Avatar billede kovalt Nybegynder
14. november 2002 - 23:54 #18
sorry my bad
Avatar billede eagleeye Praktikant
14. november 2002 - 23:56 #19
helt ioden..
Det kan også være hvis valg er = "3" og  kolonnen  anciennitet  er defineret som tal.
Avatar billede kovalt Nybegynder
14. november 2002 - 23:59 #20
er du sikker på at strSearch altid er en streng og ikke et tal - det kan vel også være det
Avatar billede haase Nybegynder
15. november 2002 - 00:03 #21
nu fik i alle point. jeg havde set mig blind på det med kolonnerne og nu virker det!!!
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