webForumDet fria alternativet

Recordsetstrul

13 svar · 211 visningar · startad av Gein

GeinMedlem sedan sep. 20005 700 inlägg
#1
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("knivbas.mdb")&";"
Set RecSet = Server.CreateObject("ADODB.Recordset")
Set rs = Server.CreateObject("ADODB.Recordset")
SQL = "SELECT bt.namn, bt.id as tid, bg.id, bg.titel FROM bilder_typ bt, bilder_grupp bg WHERE bt.id = bg.sektion ORDER BY bg.sektion ASC"
RecSet.Open SQL, Connect, adOpenStatic, adLockOptimistic
lasttyp = ""
Do until RecSet.EOF
    if not lasttyp = RecSet("tid") then
        lasttyp = RecSet("tid")
        %>
        <br/><b><%=RecSet("namn")%></b><br/>
        <%
    end if
    SQL2 = "SELECT count(*) as totalt FROM bilder WHERE gid='"&RecSet("id")&"'"
    *rs.Open SQL2, Connect, adOpenStatic, adLockOptimistic
    'Response.Write SQL2
    %>
    <a href="pics_more.asp?gid=<%=RecSet("id")%>"><%=RecSet("titel")%></a> - (<%'=rs("totalt")%> bilder)<br/>
<%
    RecSet.MoveNext
Loop

RecSet.Close
rs.Close
Connect.Close
Set Connect = Nothing

Felmeddelande på den rad som jag har markerat med en *.

Feltyp:
ADODB.Recordset (0x800A0E79)
Åtgärden är inte tillåten när objektet är öppet.
/pics.asp, line 73

vad är felet?

TobbsterMedlem sedan mars 2001309 inlägg
#2

Här försöker du öppna recordsetet varje varv i loopen ......

*rs.Open SQL2, Connect, adOpenStatic, adLockOptimistic

då måste du ju stänga det efter varje varv också !!!!!!

Fattar du vad jag menar !

GeinMedlem sedan sep. 20005 700 inlägg
#3

ahaaa, ja just ja!
va dum jag är, jag provar!

Jesper TMedlem sedan nov. 20017 144 inlägg
#4

Jag tror att du inte skall lägga detta i loopen:


    SQL2 = "SELECT count(*) as totalt FROM bilder WHERE gid='"&RecSet("id")&"'"
    *rs.Open SQL2, Connect, adOpenStatic, adLockOptimistic
    'Response.Write SQL2

MVH Jesper

GeinMedlem sedan sep. 20005 700 inlägg
#5

funkade såklart utmärkt!
Tackar!

GeinMedlem sedan sep. 20005 700 inlägg
#6

Jesper T skrev:

Jag tror att du inte skall lägga detta i loopen:


    SQL2 = "SELECT count(*) as totalt FROM bilder WHERE gid='"&RecSet("id")&"'"
    *rs.Open SQL2, Connect, adOpenStatic, adLockOptimistic
    'Response.Write SQL2

MVH Jesper

jo, det ska vara innanför loopen

Jesper TMedlem sedan nov. 20017 144 inlägg
#7

Ja, ha.

Förlåt då! :r

GeinMedlem sedan sep. 20005 700 inlägg
#8

Jesper T skrev:

Ja, ha.

Förlåt då! :r

;) :f

solbulleMedlem sedan mars 20015 287 inlägg
#9

Fast hur som helst vore det väl onekligen bäst med en join mellan databaserna och hämta allt i en öppning, om det är möjligt, i stället för att öppna o stänga som en liten tok.
Fråga dock inte mig hur den joinen skall se ut...

GeinMedlem sedan sep. 20005 700 inlägg
#10

Jag vet inte exakt hur join funkar, men det är väl att man kopplar ihop tabeller, och det har jag ju redan gjort.
Jag tror jag är tvungen att öppna o stänga "som en tok" precis som jag gör just nu faktiskt :)

solbulleMedlem sedan mars 20015 287 inlägg
#11

Ja, men se det har du ju! :)
Njo, det jag tänkt var att kan man inte få reda på antalet bilder (din count) i den första frågan direkt?
Men som sagt, det kanske inte går och hur som helst vet inte jag hur det skulle gå till. Bara en tanke.

Jesper TMedlem sedan nov. 20017 144 inlägg
#12

funkar det inte med recset.recordcount i loopen?

LarsGMedlem sedan dec. 200012 464 inlägg
#13

Gör en skalär subselect, vetja.

SQL = "SELECT bt.namn, bt.id as tid, bg.id, bg.titel, " & _
" (SELECT count(*) FROM bilder WHERE gid=bg.id ) as totalt " & _
" FROM bilder_typ bt, bilder_grupp bg " & _
" WHERE bt.id = bg.sektion " & _
" ORDER BY bg.sektion ASC"

Borde gå bra om du inte har soppat till det med datatyperna ;)

Har dessa två, gid och bg.id, samma datatyp?

Jesper TMedlem sedan nov. 20017 144 inlägg
#14

skalär subselect
Visste inte äns att ordet existerade... :)

298 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
296 ms — hämta tråd, inlägg och bilagor (db)