Säg att jag har en användare som tillhör kategorierna 1 och 3 t.ex.
Nu vill jag kunna uppdatera denna informationen genom att kolla igenom hela tabellen med_origin och skriva ut en chockbox för varje kategori, om användaren tillhör en kategori redan skall ceckboxen markeras "checked"... min kod nu ser ut såhär och den fungerar inte alls bra... den skriver ut hela settet flera gånger.... Det bör väl finnas bättre sätt?
sql1 = "SELECT * from med_origin where usr_USRORIGIN = "& thisUsrId
set rs1 = conndb1.execute(sql1)
do until rs1.eof
if rs1("usr_KATEGORI") = 1 then
response.write "<input name=""usr_KATEGORI"" type=""checkbox"" value=""1"" checked/>Odlare<br />"
else
response.write "<input name=""usr_KATEGORI"" type=""checkbox"" value=""1"" />Odlare<br />"
end if
if rs1("usr_KATEGORI") = 2 then
response.write "<input name=""usr_KATEGORI"" type=""checkbox"" value=""2"" checked/>Uppfödare<br />"
else
response.write "<input name=""usr_KATEGORI"" type=""checkbox"" value=""2"" />Uppfödare<br />"
end if
if rs1("usr_KATEGORI") = 3 then
response.write "<input name=""usr_KATEGORI"" type=""checkbox"" value=""3"" checked/>Förädlare<br />"
else
response.write "<input name=""usr_KATEGORI"" type=""checkbox"" value=""3"" />Förädlare<br />"
end if
if rs1("usr_KATEGORI") = 4 then
response.write "<input name=""usr_KATEGORI"" type=""checkbox"" value=""4"" checked/>Matlagare<br />"
else
response.write "<input name=""usr_KATEGORI"" type=""checkbox"" value=""4"" />Matlagare<br />"
end if
if rs1("usr_KATEGORI") = 5 then
response.write "<input name=""usr_KATEGORI"" type=""checkbox"" value=""5"" checked/>Butik<br />"
else
response.write "<input name=""usr_KATEGORI"" type=""checkbox"" value=""5"" />Butik<br />"
end if
if rs1("usr_KATEGORI") = 6 then
response.write "<input name=""usr_KATEGORI"" type=""checkbox"" value=""6"" checked/>Resurs<br />"
else
response.write "<input name=""usr_KATEGORI"" type=""checkbox"" value=""6"" />Resurs<br />"
end if
rs1.movenext
loop
Vet inte om det stämmer precis men det borde ge dig en idé om hur man kan gå till väga. Har absolut inte testat koden men om du knåpar lite får du nog ihop det :)
sql1 = "SELECT * from med_origin where usr_USRORIGIN = "& thisUsrId
set rs1 = conndb1.execute(sql1)
dim intUsrCat, funcTitel
do while not rs1.eof
intUsrCat = CInt(rs1("usr_KATEGORI"))
for i = 1 to 6
response.write "<input name=""usr_KATEGORI"" type=""checkbox"" value=""" & i & """ "
If i = intUsrCat Then
response.write " selected"
end if
response.write "/>" & funcTitel & "<br />"
i = i + 1
next
rs1.movenext
loop
Vet inte om det stämmer precis men det borde ge dig en idé om hur man kan gå till väga. Har absolut inte testat koden men om du knåpar lite får du nog ihop det :)
Det fungerar ju så långt att den skriver ut alla checkboxarna, men att sedan få in rätt värde från med_kategorier.usr_KATEGORI till funcTitel är en annan femma... Jag har provat att sätta ihop några olika JOIN baserade frågor men ofta får jag undantag inträffade fel
Den skriver inte ut någonting... Inget felmeddelande.
Det kan bero på två saker.
Antingen matchar inte sql-uttrycket något - vilket är väldigt enkelt att testa.
Eller så jämförs inte rätt saker i if-satsen - vilket också är enkelt för dig att kolla, eftersom det är din databas kan du ju se vad som ska testas.
Det blir inget felmeddelande, eftersom inga fel orsakas. :OO
strSQL = "SELECT t1.usr_KATID AS t1KatId, t1.usr_KATEGORI AS t1Kat, t2.usr_KATEGORI AS t2KatId" & _
" FROM med_kategorier t1" & _
" LEFT JOIN med_origin t2 ON t1.usr_KATID = t2.usr_KATEGORI" & _
" WHERE t2.[b]usr_USRORIGIN[/b] = " & thisUserId & _
" ORDER BY t1.usr_KATEGORI"
Den var tidigare usr_ORIGINID. Som du sade lite att jämföra fel saker...
Nu skriver den endast ut dom kategorier man redan tillhör.... inte dom som skall lämnas tomma...
Ok. Testa kör frågan direkt i ditt DBMS. Jag chansade lite på dina kolumner när jag skrev ihop det och du kanske kan se om det är någon missmatch på join-villkoret eller om möjligen användarid:t är galet.
Om jag skickar in 39 i thisUsrId så får jag ut två poster, i både Access och Visual Studios QUERYhanterare. Det är ju det jag skall ha ut också. Men jag vill också få ut dom som inte matchar för att kunna skriva ut dom också... Går det att åstadkomma med samma fråga?
Jag skickar med en liten bild av hur tabellerna ser ut...
Tja... det är ju typiskt det du använder left join till.
Left join innebär lite löst: ta med allt från vänstra tabellen och det som matchar från den högra tabellen. Det som matchar är vad du anger i ON-villkoret.
Men här verkar ju något gå snett av någon anledning och just nu kommer jag inte på varför... följande ska fungera helt enkelt
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
WHERE med_origin.usr_USRORIGIN = 39
ORDER BY med_kategorier.usr_KATID
Glom inte markera traden som lost! djavla engelska tangentbord!! Mwhahahah
Nejdå! Jag brukar vara duktigt på det, men jag tänkte att när jag fått hela utskriften att fungera så kan jag posta läsningen här och då när jag fått det att fungera markera tråden... :)
277 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e