Har en fråga mot två tabeller i en access db som ser ut såhär: <code> nja! Inte riktigt siffran 39 är ju inskickat i en variabel (thisUsrId) egentligen.. Så här ser mina tabeller ut: Du skriver så här: Då får jag till svar /i access / att den vill ha ett värde för med_kategorier.usr_USRORIGIN. i ASP samma sat, det har inte angetts något värde för osv.. huhm?! OK! Skall förklarara vad jag vill åstadkomma... Detta generear <CODE ASP>Feltyp:
Microsoft JET Database Engine (0x80040E14)
Syntaxfel (operator saknas) i frågeuttrycket 'med_kategorier.usr_KATID med_kategorier.usr_KATEGORI'.
/inme/medlemmar_profil_edit.asp, line 73</CODE> Jag var slarvig. Det saknas ett komma tecken mellan fälten. Då får jag Ser din fråga ut å här: Nja, det är rätt stavat så vitt jag kan se... Om jag förstått dig rätt nu ska du skriva ut checkboxar och vill bestämma om de ska vara ikryssade eller inte. Denna bestämmelse vill du göra med en variabel som innehåller till exempel 39? Jag får fortfarande samma fel med din fråga Thomas. ... eller skall man läsa in alla poster från med_origin i an array som man sedan jämför med... ...suck, det verkar inge bra det heller... Ok, nu har jag gjort en snabb kopia på din databas och tagit fram en SQL sats jag tror ska göra det du vill, se nedan... Du har löst ett stort bekymmer ! Tack skall du ha! Det svåraste var att förstå vad du ville ha ut och vad du hade att arbeta med, tabeller etc...få ut ett värde mha. en subfråga
<CODE ASP>SELECT usr_KATEGORI, (SELECT 1 FROM med_origin
WHERE usr_usrorigin=39 AND usr_kategori = t2.usr_katid)
FROM med_kategorier t2
ORDER BY usr_katid
Hur får jag ut värdet från fältet usr_usrorigin?
Jag vill kunna loopa ut allt såhär typ:
<CODE ASP> do while not rs.eof
response.write rs("usr_usrorigin") & rs("t2.usr_katID")
rs.movenext
loop
</CODE>Sv: få ut ett värde mha. en subfråga
SELECT med_kategorier.usr_KATEGORI, med_origin.usr_usrorigin FROM med_kategorier
INNER JOIN med_origin ON med_origin.usr_kategori = med_kategorier.usr_katid
WHERE med_origin.usr_usrorigin = 39
ORDER BY med_kategorier.usr_katid
</code>
Förstår inte riktigt problemet egentligen, du vill få ut ett värde som du själv specifierat, alltså usr_usrorigin (usr_usrorigin = 39)...Sv:få ut ett värde mha. en subfråga
<CODE ASP>med_kategorier
---------------
usr_KATID
usr_KATEGORI
t.ex
usr_KAT ID | 1 - usr_KATEGORI | bla
usr_KAT ID | 2 - usr_KATEGORI | bla
usr_KAT ID | 3 - usr_KATEGORI | bla
usr_KAT ID | 4 - usr_KATEGORI | bla
usr_KAT ID | 5 - usr_KATEGORI | bla
med_origin
----------
usr_ORIGINID
usr_USRORIGIN
usr_KATEGORI
t.ex
usr_ORIGINID | 373 - usr_USRORIGIN | 2 - usr_KATEGORI | 1
usr_ORIGINID | 374 - usr_USRORIGIN | 2 - usr_KATEGORI | 2
usr_ORIGINID | 375 - usr_USRORIGIN | 2 - usr_KATEGORI | 3
usr_ORIGINID | 376 - usr_USRORIGIN | 39 - usr_KATEGORI | 1
usr_ORIGINID | 377 - usr_USRORIGIN | 39 - usr_KATEGORI | 6
</CODE>
Då vill jag få en utsrift som ser ut såhär (ungefär) om jag vill veta vad för kategorier usr_USRORIGIN( 39 ) tillhör?
<CODE ASP>odlare null
uppfödare null
förädlare null
matlagare 39
butik null
resurs 39</CODE>Sv: få ut ett värde mha. en subfråga
SELECT med_kategorier.usr_KATEGORI, med_origin.usr_USRORIGIN
FROM med_kategorier LEFT JOIN med_origin ON ((med_kategorier.usr_KATID = med_origin.usr_KATEGORI) AND (med_kategorier.usr_USRORIGIN = 39))
Sv:få ut ett värde mha. en subfråga
Sv:få ut ett värde mha. en subfråga
Jag skall med ASP skriva ut checkboxar i ett formulär. Jag har i tabellen med_katergorier alla 6 (tror jag att det är) kategorier som jag vill skriva ut som en checkbox typ:
<CODE ASP><input name=""usr_KATEGORI"" type=""checkbox"" value="""&rsKAT("usr_KATID")&""" /></CODE>
Så det jag vill göra är att kolla igenom hela tabellen med_ktegorier och skriva ut alla kategorier som finns i den tabellen.. Men, jag vill samtidigt kolla igenom tabellen med_origin för att kolla med variabel ( thisUsrId t.ex) vilka kateogier som skall markeras med checked...
Det kanske inte enkelt går att lösa med en join utan det kanske krävs lite mer ASP... ?! Men hur...Sv: få ut ett värde mha. en subfråga
UserId = 39
strSQL = "SELECT med_kategorier.usr_KATID med_kategorier.usr_KATEGORI, med_origin.usr_USRORIGIN" & vbCrLf & _
"FROM med_kategorier LEFT JOIN med_origin ON ((med_kategorier.usr_KATID = med_origin.usr_KATEGORI) AND (med_kategorier.usr_USRORIGIN = " & UserId & "))"
rsKAT.Open strSQL con
Do Until rsKAT.EOF
Response.Write "<input name=""usr_KATEGORI"" type=""checkbox"" value=""" & rsKAT("usr_KATID") & """"
If rs("usr_USRORIGIN") Then
Response.Write " selected"
End If
Response.Write " />"
rsKAT.MoveNext
Loop
Sv:få ut ett värde mha. en subfråga
och jag ändrade din kod till:
<CODE ASP>usrId = 39
strSQL5 = "SELECT med_kategorier.usr_KATID med_kategorier.usr_KATEGORI, med_origin.usr_USRORIGIN
FROM med_kategorier LEFT JOIN med_origin ON ((med_kategorier.usr_KATID = med_origin.usr_KATEGORI)
AND (med_kategorier.usr_USRORIGIN = " & usrId & "))"
set rsKAT = conndb1.execute(strSQL5)
Do Until rsKAT.EOF
Response.Write "<input name=""usr_KATEGORI"" type=""checkbox"" value=""" & rsKAT("usr_KATID") & """"
If rs("usr_USRORIGIN") Then
Response.Write " selected"
End If
Response.Write " />"
rsKAT.MoveNext
Loop %></CODE>Sv: få ut ett värde mha. en subfråga
Sv:få ut ett värde mha. en subfråga
<CODE ASP>Feltyp:
Microsoft JET Database Engine (0x80040E10)
Det har inte angetts något värde för en eller flera nödvändiga parametrar.</CODE>Sv: få ut ett värde mha. en subfråga
strSQL5 = "SELECT med_kategorier.usr_KATID, med_kategorier.usr_KATEGORI, med_origin.usr_USRORIGIN" & vbCrLf & _
"FROM med_kategorier LEFT JOIN med_origin ON ((med_kategorier.usr_KATID = med_origin.usr_KATEGORI)
AND (med_kategorier.usr_USRORIGIN = " & usrId & "))"
Är du säker på att du inte stavat fel på ett fält i frågan?
Sv:få ut ett värde mha. en subfråga
detta börjar förbrylla mig... ?!Sv: få ut ett värde mha. en subfråga
<code>
usrId = 39
strSQL = "SELECT med_kategorier.usr_KATID, med_kategorier.usr_KATEGORI, med_origin.USRORIGIN = " & usrId & " FROM med_kategorier LEFT OUTER JOIN med_origin ON med_origin.usr_KATEGORI = med_kategorier.usr_KATID ORDER BY med_kategorier.usr_KATID"
set rsKAT = conndb1.execute(strSQL)
Do Until rsKAT.EOF
Response.Write "<input name=""usr_KATEGORI"" type=""checkbox"" value=""" & rsKAT(0) & """"
If rs(2) Then
Response.Write " selected=""selected"""
End If
Response.Write " />"
rsKAT.MoveNext
Loop
</code>Sv:få ut ett värde mha. en subfråga
Lägger en länk till ett screencap. av hur tabellerna ser ut i databsen kanske är lättare att få en tydlig bild då... BORTREDIGERAD
Det finns sex poster i tabellen med_kategorier.
Jag vill skriva ut alla så här.
<CODE ASP><input type="checkbox" name="<%=rs("usr_kategori") value="<%=rs("usr_KATID")" /></CODE> där kat id blir 1,2,3,4,5,6
Nu: Beroende på om det finns någon post i tabellen med_origin (fältet usr_KATEGORI) som matchar någon av kategorierna i tabellen med_kategorier (fältet usr_KATID) så skall checkboxen skrivas ut som "CHECKED" eller inte "CHECKED" ...
Det kanske bara finns två poster i tabellen med_origin (USRID=39 fältet usr_USRORIGINID) som matchar med_kategorier fältet... det verkar som om när man matchar NULL så får man felet "det har inte angets någon osv..." hur kommer man runt det? Går det överhuvud taget att göra i SQLfrågan...Sv: få ut ett värde mha. en subfråga
Sv: få ut ett värde mha. en subfråga
<code>
usrId = 39
strSQL = "SELECT usr_KATID, usr_KATEGORI, (SELECT COUNT(0) FROM med_origin WHERE usr_USRORIGIN = " & usrId & " AND usr_KATEGORI = med_kategorier.usr_KATID) AS checked FROM med_kategorier ORDER BY usr_KATID"
set rsKAT = conndb1.execute(strSQL)
Do Until rsKAT.EOF
Response.Write "<input name=""" & Server.HTMLEncode(rsKAT(1)) & """ type=""checkbox"" value=""" & rsKAT(0) & """"
If CInt(rs(2)) = 1 Then
Response.Write " selected=""selected"""
End If
Response.Write " />"
rsKAT.MoveNext
Loop
</code>Sv:få ut ett värde mha. en subfråga
Jag fick pyssla lite med din kod dock:
<CODE ASP>strSQL = "SELECT usr_KATID, usr_KATEGORI, (SELECT COUNT(0) FROM med_origin WHERE usr_USRORIGIN = " & usrId & " AND usr_KATEGORI = med_kategorier.usr_KATID) AS checked FROM med_kategorier ORDER BY usr_KATID"
set rsKAT = conndb1.execute(strSQL)
Do Until rsKAT.EOF
Response.Write "<input name=""" & Server.HTMLEncode(rsKAT(1)) & """ type=""checkbox"" value=""" & rsKAT(0) & """"
If CInt(rsKAT(2)) = 1 Then
Response.Write " checked"
End If
Response.Write " />"
rsKAT.MoveNext
Loop
</CODE>Sv: få ut ett värde mha. en subfråga
Såg att jag skrivit selected istället för checked och rs istället för rsKAT, ett par små misstag...
Men om du vill ha XHTML kompatibel HTML kod skriver du checked="checked", bara som ett litet tips.
Bra att det fungerade som du ville i alla fall!