webForumDet fria alternativet

Fastnat . Vanlig loop

13 svar · 271 visningar · startad av CatZ

CatZMedlem sedan jan. 20022 440 inlägg
#1
Dim i, j, plac
plac = 1
Response.Write "<table width='100%' border='0' cellpadding='3' cellspacing='0' class='table'>" _
	& "<tr class='td1'>" _
		& "<td>Plac.</td>" _
		& "<td>Lag</td>"
		j = 1
		For i = 1 to AntalOmg()
			Response.WRite "<td>Omg " &  j & "</td>"
		j = j + 1
		Next
Response.Write "<td>VP</td>" _
	& "</tr>"

Do While Not objRS.EOF
'
'Samlar Information här och placerar dem i variabler
'
Response.Write "<tr class='td2'>" _
		& "<td>" & plac & "</td>" _
		& "<td>" & Klubb  & "</td>" 
[b]		If HemmaID = LagID Then 
			Response.Write	"<td>" & HemmaVP & "</td>"
		Else 
			Response.Write	"<td>" & BortaVP & "</td>"
		End If[/b]
plac = plac + 1 
objRS.MoveNext
Loop

Den koden i fet stil skriver bara HemmaVP eller BortaVP en gång hur ska jag göra för att få det att fungera ? så att det skrivs för varje gång det finns ett värde i antingen HemmaVP el BortaVP ?

h0lgerMedlem sedan nov. 2002105 inlägg
#2

Ser inget rs.MoveNext endast objRS.MoveNext

CatZMedlem sedan jan. 20022 440 inlägg
#3

Det är inget fel på koden, bara det att inte If HemmaID osv skriver ut mer än ett värde, hur ska man lösa en sådan sak ?

h0lgerMedlem sedan nov. 2002105 inlägg
#4
 if HemmaVP <> "" then
            varLocation = HemmaVP
         elseif BortaVP <> "" then
            varLocation = BortaVP
         End If

         Response.Write "<td>" & varLocation & "</td>"
CatZMedlem sedan jan. 20022 440 inlägg
#5

Försöker med detta men får det inte att fungera riktigt

Dim stromg, strMatchID, strImp, strVP 
Do While NOT objRS2.EOF
	If objRS2("HemmaID") = LagID Then
		strImp = Array(objRS2("HemmaImp"))
	Else
		strImp = Array(objRS2("BortaImp"))
	End If
objRS2.MoveNext
Loop
for i = 1 to UBound(strImp,1)
	Response.Write "<td>" & strImp(0) & "</td>"
Next

Det verkar inte som om något sparas i min söta lilla array :l

CatZMedlem sedan jan. 20022 440 inlägg
#6

Hmm nu har jag suttit och tragglar hur länge som helst det enklaste vore kanske att samla in alltihop med getrows och sedan sortera på det.

h0lgerMedlem sedan nov. 2002105 inlägg
#7

Du måste Redim:a Arrayen för varje varv du gör

Dim stromg, strMatchID, strImp, strVP, lngCount
Redim strImp(0)  'Vet inte om denna raden behövs när jag 
'gör Redim Preserve inne i loopen. Pröva!
lngCount = 0
Do While NOT objRS2.EOF
                Redim Preserve strImp(lngCount)
	If objRS2("HemmaID") = LagID Then
		strImp(lngCount) = objRS2("HemmaImp")
	Else
		strImp(lngCount) = objRS2("BortaImp")
	End If
            lngCount = lngCount + 1
objRS2.MoveNext
Loop
for i = 0 to UBound(strImp,1)
	Response.Write "<td>" & strImp(i) & "</td>"
Next
CatZMedlem sedan jan. 20022 440 inlägg
#8
Set objRS2 = dbCom.Execute ("SELECT rImp, rVP, Omgang FROM tblResultat WHERE LagID = " & strLagID & " ")
Dim strImp, strVP
If objRS2.EOF Then
	strImp =	""
	strVP  = "<td>&nbps;</td>"

Else
Do while NOT objRS.EOF
	strImp = objRS2("rImp")
	strVP = "<td>" & objRS2("rVP") & "</td">
objRS2.MoveNext
Loop
End If
	
For i = 1 to AntalOmg()
	If
	Response.Write "<td>" & strVP & "</td>"
Next

Nu har jag strulat till det ordentligt... hur ska jag lösa det hela ?

h0lgerMedlem sedan nov. 2002105 inlägg
#9
Do while NOT objRS.EOF
	strImp = objRS2("rImp")
	strVP = "<td>" & objRS2("rVP") & "</td">
objRS2.MoveNext

För varje "rad" i recordsetet du itererar igenom skriver du över strVP

Gör så här

Set objRS2 = dbCom.Execute ("SELECT rImp, rVP, Omgang FROM tblResultat WHERE LagID = " & strLagID & " ")
Dim strImp, strVP, lngCount, aryOmg

redim aryOmg(0,0)

lngCount = 0
If objRS2.EOF Then
	strImp =	""
	strVP  = "<td>&nbps;</td>"
                aryOmg(0,0) = strImp
                aryOmg(1,0) = strVP
Else
Do while NOT objRS.EOF
          redim preserve aryOmg(2, lngCount)
	strImp = objRS2("rImp")
	srtVP = "<td>" & objRS2("rVP") & "</td">
                aryOmg(0,lngCount) = strImp
                aryOmg(1,lngCount) = strVP
                lngCount = lngCount + 1
objRS2.MoveNext
Loop
End If
	
For i = 0 to UBound(aryOmg, 2)
	strVP = aryOmg(1, i)
	Response.Write "<td>" & strVP & "</td>"
Next

Jag tror att detta skall fungera. Har dock inte testat det.

Om du inte tycker att du får rätt svar så skicka med HELA koden och en beskrivning över vad du vill att koden skall göra. :)

h0lgerMedlem sedan nov. 2002105 inlägg
#10

Jag lyckas inte få min indentering att fungera ordentligt här på wF därför ser koden konstig ut. :)

CatZMedlem sedan jan. 20022 440 inlägg
#11

Det vore iofs enklare om man kunde öppna som AdOpenDynamic... hur gör man det med Server.Execute ? Jag läste tidigare idag att det går med någon sifferkod.

För OM det går kan man placera deklarationen och själva variablen innan loopen, man får då oerhört mycket större böjligheter. Sedan får folk säga vad de vill om god programmering §e

CatZMedlem sedan jan. 20022 440 inlägg
#12

tack för hjälpen h0lger!!! Det fungerar faktiskt.............

Kanske ska börja öppna med Open igen, Execute's riktiga prestanda vinst ligger ju i stored procedures när det gäller öppna?

Set objRS2 = dbCom.Execute ("SELECT rImp, rVP, Omgang FROM tblResultat WHERE LagID = " & strLagID & " ")
Dim strVP
For i = 1 to AntalOmg()
If objRS2.EOF Then
	strVP  = "<td>&nbps;</td>"
Else
	strVP = "<td>" & objRS2("rVP") & "</td>"
End If
Next
Do While NOT objRS2.EOF
	Response.Write strVP
objRS2.Movenext
Loop

Och helt plötsligt var det lite lättare....

CatZMedlem sedan jan. 20022 440 inlägg
#13

Nu är jag där igen.... det är speciellt IF sats-saken som behöver pussas lite på

[red]Dim SQL2, objRS2	

SQL2 = " SELECT rVP FROM tblResultat WHERE LagID = " & strLagID & " "
Set objRS2 = dbCom.Execute(SQL2)
Dim strVP[/red]
[blue]Do While NOT objRS2.EOF
	If objRS2("rVP") = Empty Then
		strVP  = "<td>&nbps;</td>"
	ElseIf objRS2.EOF Then 		
		strVP  = "<td>&nbps;</td>"
	Else
		strVP = "<td>" & objRS2("rVP") & "</td>"	
	End If[/blue]
[red]	Response.Write strVP
objRS2.MoveNext
Loop[/red]
h0lgerMedlem sedan nov. 2002105 inlägg
#14

Denna raden kommer aldrig bli sann

ElseIf objRS2.EOF Then

då Loopen avbryts när objRS.Eof.

Ta bort det villkoret och byt ut detta

If objRS2("rVP") = Empty Then

mot

If objRS2("rVP") = "" Then

Så skall det nog funka

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