Jag sitter här med min första webb-butik och vill nu försöka få ut en bild (färgad fyrkant) framför namnet på den kund i mitt kundregister som har gjort en order. Nu undrar hur jag ska gå tillväga för att få den funktionen visad?
Här är koden som visar kundregistret:
<%
Set Connect = Server.CreateObject("ADODB.Connection")
MdbFilePath = Server.MapPath("data/db.mdb")
Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & MdbFilePath & ";"
Set RStemp = Connect.Execute("Select * From KONTO Order by FORNAMN, EFTERNAMN, USER")
%>
<CENTER>
<TABLE width="100%" border="0" cellspacing="0" cellpadding="2">
<%
Do Until RStemp.EOF
cnt = cnt + 1
strColor = "#F5F5F5"
If cnt Mod 2 = 0 then strColor = "#FFFFFF"
Response.Write "<tr bgcolor='" & strColor & "' onMouseOver=this.style.backgroundColor='#c5dbff'; onMouseOut=this.style.backgroundColor='';>" &_
"<td width=80 class=text> " & RStemp("FORNAMN") & "</td>" &_
"<td width=100 class=text> " & RStemp("EFTERNAMN") &"</td>"
%>
<%
If IsNull(RStemp("EPOST")) then
Response.Write "<td class=text1> </td>"
Else
Response.Write "<td width=20 class=text align=left> <A href=mailto:" & RStemp("EPOST") & "><IMG src=""bilder/email.gif"" border=0 width=12 height=10></A> </td>"
End If
%>
<%
Response.Write "<td width=70 class=text align=left> " & RStemp("USER") & " </td>" &_
"<td class=text align=right><i> " & RStemp("DATUM") &" </td></tr>" &_
RStemp.MoveNext
Loop
Connect.close
Set Connect = nothing
%>
</TABLE>
Nu vill jag alltså att bilden (fyrkanten) ska visas om kunden har en order liggandes från tabellen ORDER.
Set RStemp = Connect.Execute("Select [red]k.* [/red],[blue]o.Orderkolumn[/BLUE] From [red]KONTO k[/red],[blue] [ORDER] o [/blue]Order by [red]k.FORNAMN, k.EFTERNAMN, k.USER[/red]")
Röd = tabellen "Konto"
Blå = tabellen "Order"
bokstäverna framför kolumnnamnen är för att hålla reda på vilken kolumn som tillhör vilken tabell.
Ex select k.kontokolumn From Kontotabell k
När jag använde din IF sats sedan (valde att visa ett T för att göra det enkelt så länge) så blev resultat att T'et visades på alla även fast det bara är en order gjord för användare 1?
Jo, kanske det förståss:
Set RStemp = Connect.Execute("Select k.* ,o.Orderkolumn From KONTO k, [ORDER] o Where o.user = k.User Order by k.FORNAMN, k.EFTERNAMN, k.USER")
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][Drivrutin för ODBC Microsoft Access] Typblandningsfel i uttryck.
kundregister.asp, line 30
Njae, då kommer enbart de kunder som har en order med. Om samma kund har flera order så kommer den kunden flera gånger i resultatet också.
set rstemp = "select k.*,(select count(*) " & _
" from orders where user = k.user) as antalOrder " & _
" from konto "
'
'
'
if rstemp("antalOrder") > 0 then
'har order
else
'har inte order
end if
Du har väl bytt namn på tabellen order? Jag gissar lite på övriga kolumnnamn så du får ändra så att det stämmer.
Jadå.. bytte namn på den till ORDERS som du använda dig av..
Hmm.. får nu felmeddelandet:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][Drivrutin för ODBC Microsoft Access] Det går inte att identifiera 'k.*' som ett giltigt fältnamn eller uttryck i Microsoft Jet.
Jag kanske ska tillägga att jag INTE gjort databasen ORDERS som du tänker utan där lagras alla artiklar tillsammans med den inloggades IDNR.
i tabellen orders kan det se ut så här:
IDNR , ARTIKEL, KATEGORI, PRIS
IDNR är användarens IDNR alltså.. sedan när en kund lägger till en order så läggs den ordern på samma order ;) kan man säga så ;)
Ska väl säga att detta är den första butiken jag gör och jag har egentligen ingen aning om hur man ska göra, men så här långt fungerar den som jag tänkt mig ;)
Jo, men det är fel på det eftersom jag får felmeddelandet: (den tidigare du skrev)
Feltyp:
Körningsfel i Microsoft VBScript (0x800A01A8)
Objekt krävs.: '[string: "select k.*,(select c"]'
testade även att
lägga till detta:
set rstemp = Connect.Execute("select k.\*,(select count(\*) from orders where userid = k.idnr) as antalOrder from konto k Order by k.FORNAMN, k.EFTERNAMN, k.USER" )
men då får jag felmeddelandet:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)
[Microsoft][Drivrutin för ODBC Microsoft Access] Typblandningsfel i villkorsuttryck.
Och sedan så är det egentligen INTE antal ordrar som regisistreras i tabellen ORDERS utan det är antal artiklar med referenser till ANVÄNDARID/MEDLEMSID (kan se ut så här)
USERID_____________ARTIKEL_____________KATEGORI___________PRIS
1 TV TV/VIDEO 300
2 KÖTTBULLE MAT 2
1 HÖRNSOFFA MÖBEL 1300
så även om en medlem/kund gjort flera beställningar så har det ingen betydelse.. vill bara veta om den personen har gjort en beställning/order
269 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2