charkprodukter.asp består av ram1 (chark.asp), en sida som listar produkterna från databasen och ram2 (produktsvar.asp) där information om produkten spaltas upp.
chark.asp:
[KOD]
<%Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "DBQ=" & Server.MapPath("admin/jm.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};"
Set RecSet = Server.CreateObject("ADODB.Recordset")
Visa = "SELECT * FROM Produkt ORDER BY Namn"
RecSet.Open Visa, Connect, adOpenStatic, adLockOptimistic %>
<%Do Until RecSet.EOF %>
<a href="produktsvar.asp?id=<%=RecSet("ProduktID")%>" target="svar"><%=RecSet("Namn") %></a><br>
<% RecSet.MoveNext
Loop
RecSet.Close %>
Denna kod fungerar bra och produkterna listas från db:n.
produktsvar.asp:
[KOD]
<%Set Connect = Server.CreateObject("ADODB.Connection")Connect.Open "DBQ=" & Server.MapPath("admin/jm.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};"
Set RecSet = Server.CreateObject("ADODB.Recordset")
strSQL = "SELECT Namn, Bild, Kottmangd FROM Produkt, Kottmangd WHERE ProduktID = " & Request.Querystring("id")
Set RecSet = Connect.Execute (strSQL)%>
<ul>
<li><b><% =RecSet("Namn") %></b><br>
<br>
<img src="<% =RecSet("Bild") %>"<br>
<br>
<b>Köttmängd: </b><% =RecSet("Kottmangd") %>
Namn och bild som hämtas från produkt-tabellen visas rätt när man klickar på produkt-länken i ram1 (chark.asp) men köttmängden som hämtas från tabellen Kottmangd blir densamma för alla produkter även om de har olika värden i db:n. Någon som kan svara på varför det blir så?
@ndersMedlem sedan juni 200032 967 inläggDu måste applicera where-villkoret på alla tabeller som ingår i frågan, annars vet du aldrig vilken data du får.
Om jag tolkar det rätt borde koden isf se ut så här:
[ Set RecSet = Server.CreateObject("ADODB.Recordset")
strSQL = "SELECT Namn FROM Produkt WHERE ProduktID = " & Request.Querystring("id")
strSQL = "SELECT Bild FROM Produkt WHERE ProduktID = " & Request.Querystring("id")
strSQL = "SELECT Info FROM Svensk_ravara WHERE ProduktID = " & Request.Querystring("id")
strSQL = "SELECT Kottmangd FROM Kottmangd WHERE ProduktID = " & Request.Querystring("id")
strSQL = "SELECT Fetthalt FROM Fetthalt WHERE ProduktID = " & Request.Querystring("id")
strSQL = "SELECT Forvaring FROM Kylvara WHERE ProduktID = " & Request.Querystring("id")
strSQL = "SELECT Anvandningsomrade FROM Anvandningsomrade WHERE ProduktID = " & Request.Querystring("id")
strSQL = "SELECT Telefon FROM Konsumentkontakt WHERE ProduktID = " & Request.Querystring("id")
strSQL = "SELECT Ovrigt FROM Ovrigt WHERE ProduktID = " & Request.Querystring("id")
Set RecSet = Connect.Execute (strSQL)%\>\]
Får då följande:
Feltyp:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E10)
[Microsoft][Drivrutin för ODBC Microsoft Access] För få parametrar angavs. 1 förväntades.
/magnus/produktsvar.asp, line 39
Rad 39: Set RecSet = Connect.Execute (strSQL)%>
???
@ndersMedlem sedan juni 200032 967 inläggNej, du behöver bara göra förändring i WHERE-satsen.
strSQL = "SELECT Namn, Bild, Kottmangd FROM Produkt, Kottmangd WHERE Produkt.ProduktID = Kottmangd.ProduktID AND Produkt.ProduktID = " & Request.Querystring("id")
Men, jag vill ändå rekommendera dig att lägga all denna produktdata i en och samma tabell. Eller finns det kanske någon anledning som jag inte ser att alla attribut ligger i en egen tabell?
Mvh,
Jag använder olika tabeller för att undvika redundans, men jag är kanske fel ute!? Provade att lägga in sql-satsen men får följande:
Feltyp:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E10)
[Microsoft][Drivrutin för ODBC Microsoft Access] För få parametrar angavs. 1 förväntades.
/magnus/produktsvar2.asp, line 33
Rad 33: <% Set RecSet = Connect.Execute (strSQL) %>
???
@ndersMedlem sedan juni 200032 967 inläggJag kan inte förstå hur det kan bli redundant om du lägger all relaterad produktdata i en och samma tabell.
Felmeddelandet betyder att det är något felaktigt tabell- eller fältnamn. Heter nyckeln ProduktID i båda tabellerna? Prova annars ange tabellnamn före fältnamn, dvs Produkt.Namn, Produkt.Bild, Kottmangd.Kottmangd.
Mvh,
Problemet löst!
Den korrekta sql-satsen ska i mitt fall vara:
strSQL = "SELECT Namn, Bild, Kottmangd FROM Produkt, Kottmangd WHERE Produkt.KottmangdID = Kottmangd.KottmangdID AND Produkt.ProduktID = " & Request.Querystring("id")
Nu fungerar det. Tack för hjälpen!