vet att detta är fel men ni förstår nog principen av vad jag vill göra. Du tänker rätt men man uttrycker sig inte riktig så i T-SQL (som språket som Access/SQL Server använder kallas) - Du bär namnge vilka kolumner du vill ta ut, men vad står p:na för ex. p,ID Gör så här: Kompileringsfel i Microsoft VBScript (0x800A0409) Slå ihop hela sql-satsen till en rad och sätt en slutparentes efter objCon.Execute(strSQL! Det har inte angetts något värde för en eller flera nödvändiga parametrar. <CODE> Förresten, om det bara är pNamn du är ute efter så ska du istället skriva så här: nä, tyvärr det verkar inte fungera, har en databas koppling och jag har testat att den funkar men dev svarar fortfarande att värde saknas för en eller fler nödvändiga parametrar... Om du inte vill använda alias (p och t) så byt bara ut dem till rätt tabellnamn. Om SQL-uttrycket är giltigt eller inte beror ju på vad användaren skriver i formuläret. Infoga en "Response.Write strSQL" på raden efter "strSQL = ...", kopiera och klistra in i frågeverktyget i Access så får du se var det går snett. Alias namn använder man bara för att slippa skriva ut långa tabellnamn i sql-frågorna. Det motsvarar samma sak som om du skulle skrivit tabellnamnet.fältet.SQL enkel fråga, matcha värden i två tabeller?
<code>
SELECT * FROM produkter WHERE ID = "&Request.Form("product")&" And SELECT * FROM TILLVARKARE WHERE ID = "&Request.Form("producer")&"
</code>Sv: SQL enkel fråga, matcha värden i två tabeller?
<code>
SELECT * FROM produkter p, ID.
SELECT produkter.ID, tillverkare.ID
FROM produkter INNER JOIN tillverkare
ON produkter.ID = tillverkare.ID
</code>Sv:SQL enkel fråga, matcha värden i två tabeller?
sen vart skall jag stoppa in <code>"&Request.Form("product")&"</code> och
<code>"&Request.Form("producer")&"
</code>?Sv: SQL enkel fråga, matcha värden i två tabeller?
<CODE>
SELECT P.*, T.*
FROM produkter P, tillverkare t
WHERE p.ID = "&Request.Form("product")&"
AND t.ID = "&Request.Form("producer")&"
AND p.TillverkarId = t.Id
</CODE>
P och T är alias vars enda syfte är att man ska slippa skriva ut hela tabellnamnen mer än en gång.
/PelleSv:SQL enkel fråga, matcha värden i två tabeller?
Oavslutad strängkonstant
/webshop/default.asp, line 136, column 25
strSQL = "SELECT P.*, T.*
min kod
<code>
<%
Set objCon = openCon()
strSQL = "SELECT P.*, T.*
FROM tblProdukter P, tblVarumarke t
WHERE p.ID = "&Request.Form("product")&"
AND t.ID = "&Request.Form("producer")&"
AND p.TillverkarId = t.Id"
Set objRs = objCon.Execute(strSQL
Do Until objRs.Eof
' skriver ut produkt namnet
Response.Write ""&objRs("pNamn")&""
objRs.MoveNext
Loop
' Städar upp blad objekten
Set objRs = Nothing
closeCon(objCon)
%>
</code>Sv: SQL enkel fråga, matcha värden i två tabeller?
/PelleSv:SQL enkel fråga, matcha värden i två tabeller?
/webshop/default.asp, line 137
<code>
<%
Set objCon = openCon()
strSQL = "SELECT P.*, T.* FROM tblProdukter P, tblVarumarke t WHERE p.tID = "&Request.Form("product")&" AND t.tID = "&Request.Form("producer")&" AND p.TillverkarId = t.Id"
Set objRs = objCon.Execute(strSQL)
Do Until objRs.Eof
' skriver ut produkt namnet
Response.Write ""&objRs("pNamn")&""
objRs.MoveNext
Loop
' Städar upp blad objekten
Set objRs = Nothing
closeCon(objCon)
%>
</code>
vad är fel nu då för produkt idet heter pId och tillverknings idet heter tId?Sv: SQL enkel fråga, matcha värden i två tabeller?
strSQL = "SELECT P.*, T.* FROM tblProdukter P, tblVarumarke t WHERE p.pID = "&Request.Form("product")&" AND t.tID = "&Request.Form("producer")&" AND p.tId = t.tId"
</CODE>
Fixat på två ställen. P.pId jämförs med Request.Form("product") och join-villkoret mellan tabellerna borde bli p.tId = t.tId.
Om det blir mer problem med sql-satsen så kan du väl skriva ner alla fältnamnen i tabellerna, så slipper jag gissa.
/PelleSv:SQL enkel fråga, matcha värden i två tabeller?
<CODE>
strSQL = "SELECT P.pNamn FROM tblProdukter P, tblVarumarke t WHERE p.pID = "&Request.Form("product")&" AND t.tID = "&Request.Form("producer")&" AND p.tId = t.tId"
</CODE>
Det är onödigt och fult att returnera samtliga kolumner genom att skriva * om man inte behöver. Det är oftast bättre att ange de kolumner som man är ute efter.
Har du förresten angett alla nödvändiga parametrar för databasuppkopplingen? I koden som du postade finns inga sådana parametrar.
/PelleSv: SQL enkel fråga, matcha värden i två tabeller?
hmm, kan man inte göra det på nått enklare sätt utan att blanda in enn massa p och t?Sv:SQL enkel fråga, matcha värden i två tabeller?
Testa att köra enklast tänkbara sql-fråga och se om den fungerar. Bygg sedan på den med joinar mm. På så vis är det enklare att spåra felet.
/PelleSv:SQL enkel fråga, matcha värden i två tabeller?
Om du bara behöver fältet pNamn behöver du inte blanda in tabellen tblVarumarke över huvud taget vad jag kan se...
<code>
strSQL = "SELECT pNamn FROM tblProdukter WHERE pID = " & Request.Form("product") _
& " AND TillverkarId = " & Request.Form("producer")
</code>
Jag hittade den här länken i en tråd längre ner på sidan där Jesper Holmberg talar om faran med user input och dynamisk SQL:
http://msdn.microsoft.com/msdnmag/issues/04/09/SQLInjection/default.aspxSv:SQL enkel fråga, matcha värden i två tabeller?
Angående dynamiska sql frågor så hänvisar jag till mitt tidigare inlägg i
http://www.pellesoft.se/communicate/forum/view.aspx?msgid=161465&forumid=21&sum=0
Mitt tips är att först skriva frågan i frågeverktyget med hårdkodade where villkor. Sen klistrar man in hela frågan i vb-koden och byter ut de hårdkodade värdena med värdena från urvalsformuläret.
/Åsa