webForumDet fria alternativet

Problem med söknings kod

ASP

5 svar · 181 visningar · startad av Addeladde

Medlem sedan jan. 20013 406 inlägg
Frågan#1

Hej

Detta kanske är bättre att posta i SQL-forumet. (vet inte)

Min kod här har jag lite problem med eftersom om exempelvis visaSida är tomt så blir det fel med kommateckenet. Är titel tomt så blir det fel med where. hur löser jag detta på bästa sätt.
Har funderat på att sätta were sida_id <> "" i början och i slutet så att det blir rätt.

  sqlString = "SELECT sida_titel, sida_id, sida_typ " &_ 
  "FROM sidor " 
  IF titel <> "" THEN
   sqlString = sqlstring &_
   " WHERE sida_titel LIKE '"& titel &"', "
  END IF
  IF forfattare <> "" THEN
   sqlString = sqlstring &_
   " AND sida_forfattare LIKE '"& forfattare &"', "
  END IF
  IF visaSida <> "" THEN
    sqlString = sqlstring &_
     " AND sida_visa = "& visaSida &", " &_
  END IF
  sqlString = sqlstring &_
     "ORDER BY sida_titel "
SET sidorRS = Con.Execute( sqlString )
Medlem sedan dec. 200012 464 inlägg
#2

Det skall inte vara något komma där.

du kan använda

sqlString = "SELECT sida_titel, sida_id, sida_typ " &_ 
  "FROM sidor where 1 = 1 " 
IF titel <> "" THEN
   sqlString = sqlstring &_
   " and sida_titel = '"& titel &"'"
END IF

Om du inte har något wildcard så finns ingen anledning att använda like. (Det kan bli fel också.)

Medlem sedan jan. 20013 406 inlägg
#3

Tack! Jag hade glömde wildcard

Medlem sedan jan. 20013 406 inlägg
#4

Får det forfarande inte att fungera. Komma tecknen bråkar:

  sqlString = "SELECT sida_titel, sida_id, sida_typ " &_ 
  "FROM sidor where 1 = 1" 
  IF titel <> "" THEN
   sqlString = sqlstring &_
   " AND sida_titel = '"& titel &"', "
  END IF
  IF forfattare <> "" THEN
   sqlString = sqlstring &_
   " AND sida_forfattare = '"& forfattare &"', "
  END IF
  IF visaSida <> "" THEN
    sqlString = sqlstring &_
    " AND sida_visa = "& visaSida &", " 
  END IF
  sqlString = sqlstring &_
  " AND 1 = 1 " &_
  " ORDER BY sida_titel "

Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][Drivrutin för ODBC Microsoft Access] Syntaxfel (komma) i frågeuttrycket '1 = 1 AND sida_forfattare = 'test', AND 1 = 1'.

Medlem sedan dec. 200012 464 inlägg
#5

Det skall inte vara något komma där.

 sqlString = "SELECT sida_titel, sida_id, sida_typ " &_ 
  "FROM sidor where 1 = 1" 
  IF titel <> "" THEN
   sqlString = sqlstring &_
   " AND sida_titel = '"& titel &"' "
  END IF
  IF forfattare <> "" THEN
   sqlString = sqlstring &_
   " AND sida_forfattare = '"& forfattare &"' "
  END IF
  IF visaSida <> "" THEN
    sqlString = sqlstring &_
    " AND sida_visa = "& visaSida &" " 
  END IF
  sqlString = sqlstring &_
    " ORDER BY sida_titel "
Medlem sedan jan. 20013 406 inlägg
#6

Det har du så rätt i

264 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
130 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
130 ms — ändringar (db)