🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: dk.edb.internet.webdesign.serverside.asp
8 messages
8 total messages Started by Michael Wed, 11 Jan 2012 19:09
Side skift ved udskrift af recordset med Do Loop
#316
Author: Michael
Date: Wed, 11 Jan 2012 19:09
69 lines
2890 bytes
Jeg har en Access database hvor jeg gerne vil have et sideskift
ind n�r der udskrives en r�kke poster. Det skal gerne komme til
at se s�dan ud:

<div style="page-break-before:always">
Elevnavn 1 - Opgave 1 - Score
Elevnavn 1 - Opgave 2 - Score
Elevnavn 1 - Opgave 3 - Score
</div>
<div style="page-break-before:always">
Elevnavn 2 - Opgave 1 - Score
Elevnavn 2 - Opgave 2 - Score
Elevnavn 2 - Opgave 3 - Score
</div>
<div style="page-break-before:always">
Elevnavn 3 - Opgave 1 - Score
etc....

Jeg bruger f�lgende til at f� udskrevet alle poster med. Men
hvordan f�r jeg lige sideskiftet ind.

<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("minedata.mdb")
Conn.Open DSN

strSQL = "SELECT * FROM Elevbruger LEFT JOIN Elevresultat ON
Elevbruger.ElevID = Elevresultat.ElevresultatElevID WHERE
ElevklasseID = 5 AND RMainopgaveID = 16"

Set rs = Conn.Execute(strSQL)

IF  rs.eof THEN
response.write "Ingen poster" 
	Conn.close
	set Conn=nothing
Else

Do While Not rs.EOF

Response.Write rs("Elevnavn") & "- Opgave " & rs("ROpgaveID") & "
- Score " & rs("Score") & "<br />"   

rs.MoveNext
Loop


Conn.Close
Set Conn = Nothing
end if
%>

Her kommer de jo bare ud s�dan her:

Elevnavn 1 - Opgave 1 - Score
Elevnavn 1 - Opgave 2 - Score
Elevnavn 1 - Opgave 3 - Score
Elevnavn 2 - Opgave 1 - Score
Elevnavn 2 - Opgave 2 - Score
Elevnavn 2 - Opgave 3 - Score
Elevnavn 3 - Opgave 1 - Score
etc....

-- 
Vil du l�re at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
 - P�dagogiske tutorials p� dansk
 - Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
Re: Side skift ved udskrift af recordset med Do Loop
#317
Author: Leif Neland
Date: Wed, 11 Jan 2012 21:29
46 lines
2265 bytes
Den 11-01-2012 20:09, Michael skrev:
> Jeg har en Access database hvor jeg gerne vil have et sideskift
> ind n�r der udskrives en r�kke poster. Det skal gerne komme til
> at se s�dan ud:
>
BeginDiv="<div....
EndDiv="</div>"

LastId=-1
>
> Do While Not rs.EOF

IF LastID <> Rs("ElevId") then 'Hvis ny elev
   IF LastID <> -1 then 'Hvis ikke den f�rste
     Response.Write EndDiv EndIf 'Afslut forrige blok
   Response.Write BeginDiv 'Start ny blok
   LastID = Rs("ElevId") 'Husk elevnr
End If


>
> Response.Write rs("Elevnavn")&  "- Opgave "&  rs("ROpgaveID")&  "
> - Score "&  rs("Score")&  "<br />"
>
> rs.MoveNext
> Loop
>
Response.Write EndDiv 'Afslut sidste blok

>
> Conn.Close
> Set Conn = Nothing
> end if
> %>
>
> Her kommer de jo bare ud s�dan her:
>
> Elevnavn 1 - Opgave 1 - Score
> Elevnavn 1 - Opgave 2 - Score
> Elevnavn 1 - Opgave 3 - Score
> Elevnavn 2 - Opgave 1 - Score
> Elevnavn 2 - Opgave 2 - Score
> Elevnavn 2 - Opgave 3 - Score
> Elevnavn 3 - Opgave 1 - Score
> etc....
>
Re: Side skift ved udskrift af recordset med Do Loop
#318
Author: Michael
Date: Thu, 12 Jan 2012 06:38
61 lines
2769 bytes
Leif Neland wrote in dk.edb.internet.webdesign.serverside.asp:

> BeginDiv="<div.... 
> EndDiv="</div>" 
>  
> LastId=-1 
> > 
> > Do While Not rs.EOF 
>  
> IF LastID <> Rs("ElevId") then 'Hvis ny elev 
>    IF LastID <> -1 then 'Hvis ikke den f�rste 
>      Response.Write EndDiv EndIf 'Afslut forrige blok 
>    Response.Write BeginDiv 'Start ny blok 
>    LastID = Rs("ElevId") 'Husk elevnr 
> End If 
>  
>  
> > 
> > Response.Write rs("Elevnavn")&  "- Opgave "&  rs("ROpgaveID")&
" 
> > - Score "&  rs("Score")&  "<br />" 
> > 
> > rs.MoveNext 
> > Loop 
> > 
> Response.Write EndDiv 'Afslut sidste blok 
>  
K�re Leif tak for din respons

Jeg har fors�gt mig med f�lgende ud fra dit:

Dim BeginDiv, EndDiv, LastId
BeginDiv="<div style=" & "page-break-before:always" & ">"
EndDiv="</div>"
LastId=-1 

Do While Not rs.EOF

IF LastID <> Rs("ElevId") then Response.Write rs("Elevnavn") & "-
Opgave " & rs("ROpgaveID") & " - Score " & rs("Score") & "</p>"
'Hvis ny elev 
IF LastID <>-1 then 
Response.Write EndDiv 'Afslut forrige blok
Response.Write BeginDiv 'Start ny blok 
LastID = Rs("ElevId") 'Husk elevnr 
End If 

rs.MoveNext
Loop

Response.Write EndDiv 'Afslut sidste blok

Det giver ikke �nskede resultat der kommer ingen page-break ind i
kildekoden.
Hvad g�r jeg forkert?

-- 
Vil du l�re at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
 - P�dagogiske tutorials p� dansk
 - Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
Re: Side skift ved udskrift af recordset med Do Loop
#319
Author: Leif Neland
Date: Thu, 12 Jan 2012 08:34
77 lines
3782 bytes
"Michael" <mail@opgavekassen.dk> skrev i en meddelelse 
news:4f0e7ff2$0$285$14726298@news.sunsite.dk...
> Leif Neland wrote in dk.edb.internet.webdesign.serverside.asp:
>
>> BeginDiv="<div....
>> EndDiv="</div>"
>>
>> LastId=-1
>> >
>> > Do While Not rs.EOF
>>
>> IF LastID <> Rs("ElevId") then 'Hvis ny elev
>>    IF LastID <> -1 then 'Hvis ikke den f�rste
>>      Response.Write EndDiv EndIf 'Afslut forrige blok
Her skulle "End If "nok p� en ny linie.
>>    Response.Write BeginDiv 'Start ny blok
>>    LastID = Rs("ElevId") 'Husk elevnr
>> End If
>>
>>
>> >
>> > Response.Write rs("Elevnavn")&  "- Opgave "&  rs("ROpgaveID")&
> "
>> > - Score "&  rs("Score")&  "<br />"
>> >
>> > rs.MoveNext
>> > Loop
>> >
>> Response.Write EndDiv 'Afslut sidste blok
>>
> K�re Leif tak for din respons
>
> Jeg har fors�gt mig med f�lgende ud fra dit:
>
> Dim BeginDiv, EndDiv, LastId
> BeginDiv="<div style=" & "page-break-before:always" & ">"
> EndDiv="</div>"
> LastId=-1
>
> Do While Not rs.EOF
>
> IF LastID <> Rs("ElevId") then Response.Write rs("Elevnavn") & "-
> Opgave " & rs("ROpgaveID") & " - Score " & rs("Score") & "</p>"
> 'Hvis ny elev
> IF LastID <>-1 then
> Response.Write EndDiv 'Afslut forrige blok
> Response.Write BeginDiv 'Start ny blok
> LastID = Rs("ElevId") 'Husk elevnr
> End If
>
> rs.MoveNext
> Loop
>
> Response.Write EndDiv 'Afslut sidste blok
>
> Det giver ikke �nskede resultat der kommer ingen page-break ind i
> kildekoden.

Der mangler en end if, medmindre "IF LastID <> Rs("ElevId") then 
Response.Write ...." fungerer uden en end if
Og s� vil du kun f� udskrevet det f�rste resultat for hver elev.

> Hvad g�r jeg forkert?

Pr�v f�rst at lave den som jeg viste, og gerne med
startdiv="<p>Start p� elev</p>"
slutdiv="<p>Slut p� elev</p>"
S� er det lettere at se i resultatet at opdelingen fungerer., s� kan man 
sl�s med selve html'en bagefter.

Hvis du skal g�re andet i slutningen af en elevblok end en "</div>" s� lav 
det som en funktion, ellers er det for let at glemme at duplikere koden; der 
skal jo ske det samme n�r man skifter fra en elev til den n�ste, som n�r man 
er f�rdig med den sidste.

Leif 
Re: Side skift ved udskrift af recordset med Do Loop
#320
Author: Michael
Date: Thu, 12 Jan 2012 14:56
35 lines
2386 bytes
K�re Leif tak for din respons og hj�lp. Nu er jeg ikke en asp-haj som du nok har
fundet ud af, men det lykkedes at finde l�sningen ud fra din hj�lp. Jeg flyttede
lidt rundt og �ndrede p� LastID, s� k�rte det.

Dim BeginDiv, EndDiv, LastId
BeginDiv="<p>Start p� elev</p>"
EndDiv="<p>Slut p� elev</p>"
LastId= rs("ElevID") 

Do While Not rs.EOF

IF LastID = rs("ElevId") then Response.Write rs("ElevId") & " - " &
rs("Elevnavn") & "- Opgave " & rs("ROpgaveID") & " - Score " & rs("Score") &
"</p>"   'Hvis ny elev 

IF LastID <> rs("ElevID") then 

Response.Write EndDiv 'Afslut forrige blok

Response.Write BeginDiv 'Start ny blok 

LastID = rs("ElevId")  'Husk elevnr 

End if

rs.MoveNext
Loop

Response.Write EndDiv 'Afslut sidste blok 

-- 
Vil du l�re at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
 - P�dagogiske tutorials p� dansk
 - Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
Re: Side skift ved udskrift af recordset med Do Loop
#321
Author: Leif Neland
Date: Fri, 13 Jan 2012 09:58
38 lines
2624 bytes
Den Thu, 12 Jan 2012 14:56:17 +0000 skrev Michael:

> Kære Leif tak for din respons og hjælp. Nu er jeg ikke en asp-haj som du
> nok har fundet ud af, men det lykkedes at finde løsningen ud fra din
> hjælp. Jeg flyttede lidt rundt og ændrede på LastID, så kørte det.

Du får så vidt jeg kan se ikke skrevet  BeginDiv ud før første elev.
Hvis jeg retter tilbage (Og fjerner citattegnene)

'-----------------------------
Dim BeginDiv, EndDiv, LastId 

BeginDiv="<p>Start på elev</p>"
EndDiv="<p>Slut på elev</p>"
LastId= -1 'Det antages at -1 ikke er et gyldigt ID
 
Do While Not rs.EOF
  IF LastID <> rs("ElevID") THEN 'Hvis ny elev
    IF LastID <> -1 THEN 'Hvis ikke første elev
      Response.Write EndDiv 'Afslut forrige blok
    END IF
    Response.Write BeginDiv 'Start ny blok
    LastID = rs("ElevId")  'Husk elevnr
  End if
  Response.Write rs("ElevId") & " - " & rs("Elevnavn") & _
  "- Opgave " & rs("ROpgaveID") & " - Score " &rs("Score") & "<br>"
 
  rs.MoveNext 
Loop
 
Response.Write EndDiv 'Afslut sidste blok
'--------------------------------

Rent designmæssigt ville jeg nok vælge at lave et i en tabel i stedet for 
at resultatet flyder frem og tilbage afhængig af elevnavnets længde, men 
smag og behag.

Leif
Re: Side skift ved udskrift af recordset med Do Loop
#322
Author: Michael
Date: Sat, 14 Jan 2012 14:08
79 lines
4178 bytes
On 13 Jan., 10:58, Leif Neland <l...@neland.dk> wrote:
>
> Du får så vidt jeg kan se ikke skrevet  BeginDiv ud før første elev.
> Hvis jeg retter tilbage (Og fjerner citattegnene)
>
> '-----------------------------
> Dim BeginDiv, EndDiv, LastId
>
> BeginDiv="<p>Start på elev</p>"
> EndDiv="<p>Slut på elev</p>"
> LastId= -1 'Det antages at -1 ikke er et gyldigt ID
>
> Do While Not rs.EOF
>   IF LastID <> rs("ElevID") THEN 'Hvis ny elev
>     IF LastID <> -1 THEN 'Hvis ikke første elev
>       Response.Write EndDiv 'Afslut forrige blok
>     END IF
>     Response.Write BeginDiv 'Start ny blok
>     LastID = rs("ElevId")  'Husk elevnr
>   End if
>   Response.Write rs("ElevId") & " - " & rs("Elevnavn") & _
>   "- Opgave " & rs("ROpgaveID") & " - Score " &rs("Score") & "<br>"
>
>   rs.MoveNext
> Loop
>
> Response.Write EndDiv 'Afslut sidste blok
> '--------------------------------
>
> Rent designmæssigt ville jeg nok vælge at lave et i en tabel i stedet for
> at resultatet flyder frem og tilbage afhængig af elevnavnets længde, men
> smag og behag.
>
> Leif

Du har helt ret.
Det var jeg ikke lige opmærksom på. En anden ting der også smutter er
ét resultat fra alle elever med undtagelse af den første elev der får
alle sine med.
Det fik jeg dog rettet. Du har ret i at designet ser forfærdeligt ud,
det skal jeg arbejde lidt med.
Igen 1000 tak for hjælpen!

Michael

Dim BeginDiv, EndDiv, LastId
BeginDiv="<div style=" & "page-break-before:always" & ">Hovedopgave "
& rs("Mainopgavenavn") & "<p><table border=1><tr><td>Navn</
td><td>Opgave</td><td>Dato</td><td>Score</td></tr>"
EndDiv="</table></div><p><p><hr>"
LastId= rs("ElevID")

Do While Not rs.EOF

IF LastID = rs("ElevId") then Response.Write "<tr><td>" &
rs("Elevnavn") & "</td><td>Opgave: " & rs("Opgaveoverskrift") & "</
TD><td>Besvaret d. " & rs("Resultatdato") & "</td><td>Point:" &
rs("Score") & "</td></TR><p>"   'Hvis ny elev

IF LastID <> rs("ElevID") then

Response.Write EndDiv 'Afslut forrige blok

Response.Write BeginDiv 'Start ny blok

Response.Write "<tr><td>" & rs("Elevnavn") & "</td><td>Opgave: " &
rs("Opgaveoverskrift") & "</TD><td>Besvaret d. " & rs("Resultatdato")
& "</td><td>Point:" & rs("Score") & "</td></TR><p>"   'Hvis ny elev

End if

LastID = rs("ElevId")  'Husk elevnr

rs.MoveNext

Loop
Re: Side skift ved udskrift af recordset med Do Loop
#323
Author: Leif Neland
Date: Mon, 16 Jan 2012 09:01
61 lines
3609 bytes
"Michael" <bogkassen@gmail.com> skrev i en meddelelse 
news:e28609e5-3baa-404e-bf19-debc61cc60ac@q8g2000yqa.googlegroups.com...
On 13 Jan., 10:58, Leif Neland <l...@neland.dk> wrote:
>
>> Du f�r s� vidt jeg kan se ikke skrevet BeginDiv ud f�r f�rste elev.
>> Hvis jeg retter tilbage (Og fjerner citattegnene)
>>
>Du har helt ret.
>Det var jeg ikke lige opm�rksom p�. En anden ting der ogs� smutter er
>�t resultat fra alle elever med undtagelse af den f�rste elev der f�r
>alle sine med.

Ja, s� pr�v dog at bruge det, jeg skriver!!! :-)


> Dim BeginDiv, EndDiv, LastId
> BeginDiv="<div style=" & "page-break-before:always" & ">Hovedopgave "
> & rs("Mainopgavenavn") & "<p><table border=1><tr><td>Navn</
> td><td>Opgave</td><td>Dato</td><td>Score</td></tr>"
> EndDiv="</table></div><p><p><hr>"
> LastId= rs("ElevID")

Nej!! brug -1


> Do While Not rs.EOF

> IF LastID = rs("ElevId") then Response.Write "<tr><td>" &

Denne test er forkert. Du vil skrive alle linier ud.

> rs("Elevnavn") & "</td><td>Opgave: " & rs("Opgaveoverskrift") & "</
> TD><td>Besvaret d. " & rs("Resultatdato") & "</td><td>Point:" &
> rs("Score") & "</td></TR><p>"   'Hvis ny elev

Kommentaren h�rer til denne linie:
> IF LastID <> rs("ElevID") then
Mangler "if LastID <> -1" ellers f�r du lavet en slutblok i starten af 
f�rste elev
>Response.Write EndDiv 'Afslut forrige blok
end if
> Response.Write BeginDiv 'Start ny blok

> Response.Write "<tr><td>" & rs("Elevnavn") & "</td><td>Opgave: " &
> rs("Opgaveoverskrift") & "</TD><td>Besvaret d. " & rs("Resultatdato")
> & "</td><td>Point:" & rs("Score") & "</td></TR><p>"   'Hvis ny elev

Overfl�dig, n�r du fjerner den f�rste IF

> End if
> LastID = rs("ElevId")  'Husk elevnr
> rs.MoveNext
> Loop

Mangler "Response.write EndDiv

Og der skal ikke v�re "<p>" efter "</TR>", de havner effektivt efter 
tabellen, eller f�r(?), det er ihvertfald "ulovligt".

Leif
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads