Avatar billede jmc Nybegynder
03. november 2002 - 00:42 Der er 7 kommentarer og
1 løsning

SQL

Hvordan laver jeg denne SQL med følgende krav:

er cid tom listes alle
tilføjes der flere cid i querystring skal alle records med cid listes. eksempel i.asp?cid=1&cid=4&cid=15
(findes der måske en bedre måde for at undgå alle dette cid i querystring?)

Her er hvad jeg foreløbigt har:

produkter.Source = "SELECT DISTINCT *  FROM hent_produkt  WHERE pid = " + Replace(produkter__MMpid, "'", "''") + " or cid = " + Replace(produkter__MMcid, "'", "''") + " and valgt = True  ORDER BY " + Replace(produkter__MMorder, "'", "''") + ""
Avatar billede dawin_dk Nybegynder
03. november 2002 - 08:57 #1
brug:

liste=request("cid")
if liste="" then liste="0"

sql="select * from table where id in ("&liste&") order by felt"
Avatar billede jmc Nybegynder
03. november 2002 - 11:09 #2
Jeg prøvede:

<%
Dim produkter
Dim produkter_numRows

Set produkter = Server.CreateObject("ADODB.Recordset")
produkter.ActiveConnection = MM_bst_STRING

liste=request("cid")
if liste="" then liste="0"

if liste = "0" then
sql="select * from tablehent_produkt where cid in ("&liste&") order by " + Replace(produkter__MMorder, "'", "''")
else
produkter.Source = "SELECT DISTINCT *  FROM hent_produkt  WHERE pid = " + Replace(produkter__MMpid, "'", "''") + " or cid = " + Replace(produkter__MMcid, "'", "''") + " and valgt = True  ORDER BY " + Replace(produkter__MMorder, "'", "''") + ""
end if

produkter.CursorType = 0
produkter.CursorLocation = 2
produkter.LockType = 1
produkter.Open()

produkter_numRows = 0
%>

DEN GIVER FEJLEN:

Microsoft OLE DB Provider for ODBC Drivers error '80040e0c'

Der er ikke angivet nogen kommandotekst for kommandoobjektet.

doc.asp, line 46  som er linien: produkter.Open()
Avatar billede jmc Nybegynder
03. november 2002 - 11:12 #3
jeg har rettet fejlen:
sql="select * from hent_produkt where cid in ("&liste&") order by " + Replace(produkter__MMorder, "'", "''")

men det giver samme fejl:
Der er ikke angivet nogen kommandotekst for kommandoobjektet
Avatar billede jmc Nybegynder
03. november 2002 - 19:50 #4
hvis jeg kalder f.eks: i.asp?cid=2&cid=4

fejl:
Syntax error (comma) in query expression 'cid = 2, 4
Avatar billede fiemming Nybegynder
03. november 2002 - 22:18 #5
<%
' Prøv følgende:
strCid = "0" ' ikke eksistrende nøgle
For each Key in Request.QueryString("cid")
  strCid = strCid &"," &Key
Next
sql = "SELECT * FROM hent_produkt WHERE cid IN ("  &strCid &")"
Response.Write("<BR>SQL=" &sql)
%>
Resten har du ok ...

--
!!
Avatar billede jmc Nybegynder
05. november 2002 - 22:10 #6
desværre:
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access Driver] Syntax error (comma) in query expression 'cid = 1, 2 and valgt = True and deaktiveret = False'.


sql:
strCid = "0" ' ikke eksistrende nøgle
For each Key in Request.QueryString("cid")
  strCid = strCid &"," &Key
Next

produkter.Source = "SELECT DISTINCT *  FROM hent_produkt WHERE cid IN ("  &strCid &") and valgt = " + Replace(produkter__MMvalgt, "'", "''") + " and deaktiveret = " + Replace(produkter__MMdeaktiv, "'", "''") + "  ORDER BY " + Replace(produkter__MMorder, "'", "''") + ""
Avatar billede jmc Nybegynder
06. november 2002 - 18:56 #7
det ser ud til at virke, takker
Avatar billede jmc Nybegynder
06. november 2002 - 19:52 #8
Danm, jeg kan bare ikke tjekke på om

if strCid = "0" then det bliver en liste ... eller et eller andet.
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