webForumDet fria alternativet

For each...

7 svar · 217 visningar · startad av Jörgen HP

Jörgen HPMedlem sedan feb. 20012 179 inlägg
#1

Hej!

Oj, det blev ju flera frågor ikväll. Jag ska försöka förklara mitt beskymmer.

Jag har lite adminfunktioner till mitt forum. När jag har raderat, flyttat så vill jag räkna om hur många trådar det finns i varje forumavdelning.

Jag har 3 tabeller:

Categorier:
Innehåller samtliga forumavdelningar

Inlagg:
Innehåller alla orginalmeddelande

Svar:
Innehåller alla svar

Nu vill jag loopa igenom tabellen Categorier och för varje categoriId räkna antal inlägg i tabellen Inlagg som har just det categoriId. Samt uppdatera med rätt antal Inlagg i tabellen Categorier.

jag satt och pulade men fick inte rätt på det:

strSQL = "SELECT IntForumId FROM Categorier ORDER BY IntForumId"
arrPoster = objConn.Execute(strSQL).GetRows()

For each IntForumId In arrPoster

IntForumId = arrPoster(0)

sql ="SELECT COUNT DISTINCT(IntForumId) AS Antal FROM Inlagg WHERE IntForumId = "&IntForumId&""
SET RS = objConn.Execute(sql)

sql ="UPDATE Categorier SET ForumThreads = "& RS("Antal") &" WHERE IntForumId = "&IntForumId&""
objConn.Execute sql,,128

Next

Tacksam för vägledning :)

Mvh Jörgen

------------------
Varför bråka när man kan kramas?

[Redigerat av jorgen den 07 okt 2001]

PaceMedlem sedan juni 20015 947 inlägg
#2
strSQL = "SELECT IntForumId FROM Categoreier ORDER BY IntForumId"
arrPoster = objConn.Execute(strSQL).GetRows()

[b]For IntForumId = 0 To UBound(arrPoster, 2)[/b]

IntForumId = [b]arrPoster(0, intForumID)[/b]

sql ="SELECT COUNT DISTINCT(IntForumId) AS Antal FROM Inlagg WHERE IntForumId = "&IntForumId&""
SET RS = objConn.Execute(sql)

sql ="UPDATE Categorier SET ForumThreads = "& RS("Antal") WHERE IntForumId = "&IntForumId&""
objConn.Execute sql,,128

Next

SQL satsen SELECT COUNT DIST... är jag inte riktigt säker på... vi får vänta på LarsG! ;)

------------------
"Tål det inte att skämtas om, är det inte värt att ta på allvar."

jorgenMedlem sedan feb. 20012 179 inlägg
#3

Hej!

Har kommit så här långt, den räknar och ger ut en siffra bara:


strSQL = "SELECT IntForumId FROM Categorier ORDER BY IntForumId"
arrPoster = objConn.Execute(strSQL).GetRows()

For IntForumId = 0 To UBound(arrPoster, 2)

IntForumId = arrPoster(0, intForumID)

sql ="SELECT COUNT(*) AS Antal FROM Inlagg WHERE IntForumId = "&IntForumId&""
SET RS = objConn.Execute(sql)

Response.Write "Antal "& RS("Antal") &" "

sql ="UPDATE Categorier SET ForumThreads = "& RS("Antal") &" WHERE IntForumId = "&IntForumId&""
objConn.Execute sql,,128

Next

Skriver ut:

Antal 2

Tips någon?

mvh Jörgen :)

------------------
Varför bråka när man kan kramas?

@ndersMedlem sedan juni 200026 914 inlägg
#4

Vad är det som inte fungerar nu alltså?

Mvh,

------------------
All your base are belong to me.

jorgenMedlem sedan feb. 20012 179 inlägg
#5

Hej!

Den borde skriva ut:

Antal 2
Antal 3

Sedan sker det ingen update alls, men jag får inget felmess heller.

mvh Jörgen :)

------------------
Varför bråka när man kan kramas?

@ndersMedlem sedan juni 200026 914 inlägg
#6

Ah!

Du använder variabeln intForumID lite galet, dels som kontrollvariabel i din loop, men också som något helt annat.

For [b]IntForumId[/b] = 0 To UBound(arrPoster, 2)

[b]IntForumId[/b] = arrPoster(0, intForumID)

Byt namn på den ena är mitt förslag. :)

Mvh,

------------------
All your base are belong to me.

jorgenMedlem sedan feb. 20012 179 inlägg
#7

Hej!

Nu ser den ut enligt följande. Då räknar den båda, men uppdaterar bara första forumet.

<%

Set objDB = GetDBConn()

strSQL = "SELECT IntForumId FROM Categorier ORDER BY IntForumId"
arrPoster = objDB.Execute(strSQL).GetRows()

For I = 0 To UBound(arrPoster, 2)

I = arrPoster(0,I)

sql ="SELECT COUNT(*) AS Antal FROM Inlagg WHERE IntForumId = "&IntForumId&" OR Flyttat = "&IntForumId&""
SET RS = objDB.Execute(sql)

Response.Write "Antal "& RS("Antal") &" <br>"

sql ="UPDATE Categorier SET ForumThreads = "& RS("Antal") &" WHERE IntForumId = "&IntForumId&""
objDB.Execute sql,,128

Next
%>

mvh Jörgen :)

------------------
Varför bråka när man kan kramas?

[Redigerat av jorgen den 07 okt 2001]

jorgenMedlem sedan feb. 20012 179 inlägg
#8

Hej!

Den slutliga och fungerande versionen blev: (tack @nders och tack Pace!)

strSQL = "SELECT IntForumId FROM Categorier ORDER BY IntForumId"
arrPoster = objDB.Execute(strSQL).GetRows()

For I = 0 To UBound(arrPoster, 2)

Id = arrPoster(0,I)

sql ="SELECT COUNT(*) AS Antal FROM Inlagg WHERE IntForumId = "&Id&" OR Flyttat = "&Id&""
SET RS = objDB.Execute(sql)

Response.Write "Antal "& RS("Antal") &" <br>"

sql ="UPDATE Categorier SET ForumThreads = "& RS("Antal") &" WHERE IntForumId = "&Id
objDB.Execute sql,,128

Next

Mvh Jörgen :)

------------------
Varför bråka när man kan kramas?

[Redigerat av jorgen den 07 okt 2001]

Genererad på 378 ms · cache AV · v20260730165559-full.f96bc7eb