Hej ! Ett sätt är att ha en variabel som kan ha 2 state, grå/vit. Hur skriver man det i den befintliga Whilesatsen? Du får ha en variabel utanför loopen som håller reda på förra varvets Id. Hej Igen Variabeln ska deklareras innan loopen, men givetvis uppdateras i den för varje varv. * Men om vi säger att scriptet ser ut något som det här : Du måste uppdatera LastID för varje varv också (efter jämförelsen med NamnID). se till att du har en variabel som räknar raderna, t ex i som ökas innan varje rs.movenext Jonas, om du läser tråden så har han redan fungerande kod för att färglägga varannan rad. Det är inte det han försöker göra! Så här ser det ungefär ut nu: Ser rätt ut. Deklarerar du LastID innan loopen, så att den inte deklareras om hela tiden? Är som sagt en rookie, bara för att vara säker på att vi pratar samma språk. Alla variabler bör deklareras med Dim. Hej IgenGruppera Resultat med färg
En liten fråga:
Man kan ju i en tabell byta bakgrundsfärgen i fälten med t e x en IF sats så att varannan rad är tex grå respektive vit.
Kan man på samma eller liknande sätt "gruppera" denna färgkodning så att alla resultat med ett specifikt värde grupperas och att bakgrundsfärgen växlar.
Tex om det blir 5 poster med Id = 1 färgas dessa poster grå
O sedan om exempelvis 4 poster med Id = 2 färgas dessa poster vit
7 poster med id = 3 färgas grå
Osv
Själva grupperingen av poster har jag löst med ORDER BY i sql-satsen
Är tacksam för hjälp
//RookieSv: Gruppera Resultat med färg
I din while-loop som skriver db-resultaten till tabellen kollar du om Id != Föregående Id och togglar i så fall variabeln som styr formateringen.Sv:Gruppera Resultat med färg
Nu har jag gjort ungeför så här:
<table>
<%
Farg = "FFFFFF"
While Not Data.EOF
detta = data("detta")
är = data("är")
ett = data("ett")
exempel = data("exempel")
Sedan skriver jag ut resultaten i en tabell
<tr bgcolor="#<%=Farg%>">
<td><%=detta%></td>
<td><%=är%></td>
<td><%=ett%></td>
<td><%=exempel%></td>
</tr>
IF farg = "FFFFFF" Then
Farg = "CCCCCC"
Else
Farg = "FFFFFF"
End IF
Data.MoveNext
Wend
%>
</table>
Detta är ungefär som det ser ut. Hur menar du att jag skall skriva i WhileSatsen?
Tackar för svaret!!
//RookieSv: Gruppera Resultat med färg
Nu kör du toggle-koden för varje varv. Du ska bara köra den om Id inte är lika med Föregående Id.
<code>
If Id <> ForegaendeId
If farg = "FFFFFF" Then
Farg = "CCCCCC"
Else
Farg = "FFFFFF"
End If
End If
</code>Sv:Gruppera Resultat med färg
Tackar för svaret.
Om jag lägger varibeln utanför loopen uppdateras den väl inte? IF-satsen ligger ju inne i loopen.
Tänker jag fel??
//RookieSv: Gruppera Resultat med färg
Sv:Gruppera Resultat med färg
<%
Farg = "FFFFFF"
* Då deklarerar jag variabeln här?
* tex LastID = NamnID
While Not Data.EOF
detta = data("detta")
är = data("är")
ett = data("ett")
exempel = data("exempel")
NamnID = data("NamnID")
Sedan skriver jag ut resultaten i en tabell
<tr bgcolor="#<%=Farg%>">
<td><%=detta%></td>
<td><%=är%></td>
<td><%=ett%></td>
<td><%=exempel%></td>
</tr>
* Och sedan så här då?
If NamnID <> LastID Then
IF farg = "FFFFFF" Then
Farg = "CCCCCC"
Else
Farg = "FFFFFF"
End IF
End IF
Data.MoveNext
Wend
%>
</table>
* Stämmer det?Sv: Gruppera Resultat med färg
Vad den har för värde innan loopen är ointressant.Sv: Gruppera Resultat med färg
farg=""
if i mod 2 = 1 Then farg = "#ccc" else farg= "#fff"
response.write fargSv:Gruppera Resultat med färg
Sv: Gruppera Resultat med färg
Farg = "FFFFFF"
While Not data.eof
NamnId = data("Namn.NamnID")
Fornamn = data("Fornamn")
Efternamn = data("Efternamn")
Datum = data("Datum")
Kod = data("Kod")
%>
<tr bgcolor="#<%=Farg%>">
<td width="200"><%=Fornamn%></td>
<td width="200"><%=Efternamn%></td>
<td width="200"><%=Datum%></td>
<td width="200"><%=Kod%></td>
<td width="200"><%=NamnId%></td>
</tr>
<%
IF NamnId <> LastID Then
If Farg = "CCCCCC" Then
Farg = "FFFFFF"
Else
Farg = "CCCCCC"
End IF
End IF
LastID = NamnId
Data.MoveNext
WEND
%>
</table>
Då borde den väl ställa variablen "LastID" till det värde som variablen "NamnId" har i slutet på varje varv? När den då gör jämförelsen i början på IF-satsen så skall det ju fungera teoretiskt, inte sant?
Det funkar dock inte riktigt som jag vill:
Nu färgar den inte varannan rad utan ett par rader på måfå känns det som. Kan det vara ngt i IF satsen som spökar månntro?
//MickeSv:Gruppera Resultat med färg
Sv: Gruppera Resultat med färg
När du säger att jag skall deklarera variablen innan loppen menar du då att jag skriver typ "Dim LastID" ? eller menar du att jag skall ge den ett värde?
//MickeSv:Gruppera Resultat med färg
Om du ger den ett värde eller ej vet jag inte om det spelar någon roll, men det måste ju bli rätt vid första jämförelsen.
Kolla vad variabeln har för värden vid olika tillfällen, genom att skriva ut värdet.
Jag har inte haft asp installerat på ~10 år, det är därför jag inte gett dig ett färdigt exempel. Har/får du möjlighet att gå över till asp.net så gör det, då hade du även kunnat debugga koden.Sv: Gruppera Resultat med färg
Fick det att funka nu!!!! Gjorde som du sa och skrev ut variablen och den biten var helt OK. Problemet var att IF-satsen som byter färg låg EFTER stycket där jag skrev ut resultaten vilket innebär att den mycket rikigt konstaterade att variblerna var olika MEN den bytte inte färg förräns nästföljande varv.
Tack för hjälpen André!!, jag är som sagt rookie på detta ännu men precis som du säger skall jag börja snegla på asp.net så snart jag har möjlighet!
Så här ser det ut nu ( ifall någon annan behöver hjälp någon gång )
Farg = "CCCCCC"
While Not data.eof
NamnId = data("Namn.NamnID")
Fornamn = data("Fornamn")
Efternamn = data("Efternamn")
Datum = data("Datum")
Kod = data("Kod")
IF NamnId <> LastID Then
IF Farg = "CCCCCC" Then
Farg = "FFFFFF"
Else
Farg = "CCCCCC"
End IF
End IF
%>
<tr bgcolor="#<%=Farg%>">
<td width="200"><%=Fornamn%></td>
<td width="200"><%=Efternamn%></td>
<td width="200"><%=Datum%></td>
<td width="200"><%=Kod%></td>
<td width="200"><%=NamnId%></td>
<td width="200"><%=LastID%></td>
</tr>
<%
LastID = NamnId
Data.MoveNext
WEND
%>
</table>
Tackar igen!
//Micke