webForumDet fria alternativet

Once more unto the breach

ASP

8 svar · 185 visningar · startad av His Divine Shadow

Medlem sedan sep. 20004 079 inlägg
Frågan#1

Hej igen, ännu mera frågor

Här har vi den underbara SQL koden som ni hjälpte mig med:) :

<%
Set Conn = Server.CreateObject("ADODB.Connection")
SQL= "SELECT * FROM Art " &_
"WHERE (EXTRA_9 LIKE '" & Produkt & Produkt & "%[0-9]') AND " &_
"(Extra_7 LIKE 'J') ORDER BY LagerPlats, Extra_9"
Conn.Open Session("GB_ConnectionString")
Set RS_prod = Conn.Execute(SQL)
%>

Här är en exempel länk:

produkt.asp?Produkt=A

denna länk kommer att visa upp alla produkter som har i EXTRA_9 2st A+siffra efter sig.
Det tillåter också att efter AA det kommer mera bokstäver men dom visas icke om dom inte har siffor efter sig, vilket är precis vad jag ville ha sista gången jag var här.

Nu skulle jag vilja ha lite hjälp med att göra det så att man kan ha mer än bara gruppen AA* utan också AA* oc BB* osv.
Jag tänkte att en string som denna i länken kanske skulle funka:

produkt.asp?Produkt=A&C&D

Men icke, det behövs nog en ny SQL sats, men riktig hur vet jag inte.

------------------
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning.

Medlem sedan dec. 200012 464 inlägg
#2
<%
Set Conn = Server.CreateObject("ADODB.Connection")
SQL= "SELECT * FROM Art Where ("
addon = ""
for each produkt in request.querystring
    if  addon = "" then
        addon = addon & " or "
    end if
    addon = addon & " (EXTRA_9 LIKE '" & Produkt & Produkt & "%[0-9]') " 
next
sql = sql & addon & ") AND (Extra_7 LIKE 'J') ORDER BY LagerPlats, Extra_9"

Conn.Open Session("GB_ConnectionString")
Set RS_prod = Conn.Execute(SQL)
%>

Något sådant.

------------------
essentitia preter non sans multiplicandum

Medlem sedan sep. 20004 079 inlägg
#3

Microsoft JET Database Engine error '80040e14'
Syntax error (missing operator) in query expression '( or (EXTRA_9 LIKE 'produktprodukt%[0-9]') (EXTRA_9 LIKE 'BB%[0-9]') ) AND (Extra_7 LIKE 'J')'.

Fattar inte vad som kan saknas här...

------------------
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning.

Medlem sedan dec. 200012 464 inlägg
#4

Nu blir jag lite osäker på hur et fungerar, men kan du testa så här

<%
Set Conn = Server.CreateObject("ADODB.Connection")
SQL= "SELECT * FROM Art Where ("
addon = ""
for each produkt in request.querystring
if addon = "" then
addon = addon & " or "
end if
[b]p = request.querystring(produkt)[/b]
addon = addon & " (EXTRA_9 LIKE '" & p & p & "%[0-9]') " 
next
sql = sql & addon & ") AND (Extra_7 LIKE 'J') ORDER BY LagerPlats, Extra_9"
Conn.Open Session("GB_ConnectionString")
Set RS_prod = Conn.Execute(SQL)
%>

Om det inte blir bättre så kan du väl lägga in lite traceutskrifter på variabeln p. Eller så får vi vänta på någon som kan hur dessa samlingar fungerar med for each.

En fråga, hur ser din querystring ut nu?

------------------
essentitia preter non sans multiplicandum

Medlem sedan sep. 20004 079 inlägg
#5

Nå ett exempel:
alla_produkt.asp?produkt=A&B&C

Felmeddelandet är nog samma än.

------------------
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning.

Medlem sedan dec. 200012 464 inlägg
#6

Jag tror nog att du får skriv din quereystring annorlunda.


  <a href='sida.asp?produkt=AA&produkt=BB'>Hej hopp</a>

och då borde det gå att få varje enskilt värde för produkt med

  for each produkt in request.querystring("produkt")
   'gör något
  next

Alltså om man slår ihop det hela

<%
Set Conn = Server.CreateObject("ADODB.Connection")
SQL= "SELECT * FROM Art Where ("
addon = ""
for each p in request.querystring("produkt")
if addon = "" then
addon = addon & " or "
end if
addon = addon & " (EXTRA_9 LIKE '" & p & p & "%[0-9]') " 
next
sql = sql & addon & ") AND (Extra_7 LIKE 'J') ORDER BY LagerPlats, Extra_9"
Conn.Open Session("GB_ConnectionString")
Set RS_prod = Conn.Execute(SQL)
%>

------------------
essentitia preter non sans multiplicandum

Medlem sedan sep. 20004 079 inlägg
#7

Tänker en stund nu och så flyger samma meddelande fram igen.

Syntax error (missing operator) in query expression '( or (EXTRA_9 LIKE 'AA%[0-9]') (EXTRA_9 LIKE 'BB%[0-9]') ) AND (Extra_7 LIKE 'J')'.

Kanske det borde vara AND eller ',' mellan dom där 2 stringarna?

------------------
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning.

Medlem sedan dec. 200012 464 inlägg
#8

Nej, jag skrev = istf <> vid if addon. Så här då

<%
Set Conn = Server.CreateObject("ADODB.Connection")
SQL= "SELECT * FROM Art Where ("
addon = ""
for each p in request.querystring("produkt")
if addon [b]<>[/b] "" then
addon = addon & " or "
end if
addon = addon & " (EXTRA_9 LIKE '" & p & p & "%[0-9]') " 
next
sql = sql & addon & ") AND (Extra_7 LIKE 'J') ORDER BY LagerPlats, Extra_9"
Conn.Open Session("GB_ConnectionString")
Set RS_prod = Conn.Execute(SQL)
%>

------------------
essentitia preter non sans multiplicandum

[Redigerat av LarsG den 14 aug 2001]

Medlem sedan sep. 20004 079 inlägg
#9

super! tack!

------------------
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning.

390 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
128 ms — deklarationer (db)
124 ms — hämta statistik (db)
133 ms — hämta tråd, inlägg och bilagor (db)
130 ms — ändringar (db)