|
| Loop i tabel - hvad gør man ved tomme felt~ Fra : Jakob Munck |
Dato : 07-07-02 08:51 |
|
Her nedenfor har jeg en velfungerende loop, men den har et problem. Den
viser 5 records pr. række i tabellen, men hvis nu der er f.eks. 23 records,
så betyder det at de 2 sidste felter i tabellens sidste række bliver tomme,
og det ødelægger tabellen design. Derfor vil jeg gerne have, at tabellen
vises sådan, at en række altid er afsluttet med en form for indhold. Hvis
der kun er 23 records, så skal de 2 sidste felter i tabellens sidste række
vises som streger "-" der indikerer at der ikke er noget indhold.
Men hvordan gøre det, rent kodemæssigt?
Her er den eksisterende velfungerende kode:
<%
Set conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver
(*.mdb)};DBQ="&Server.MapPath("db.mdb")
%>
<html><head></head><body>
<%
SQL = "SELECT * FROM favorit ORDER BY Id"
set RS = Conn.execute(SQL)
if RS.EOF or RS.BOF then
response.redirect("topdating.asp?mode=fejl")
End if
%>
<TABLE WIDTH=50% CELLPADDING=0 align=center CELLSPACING=0 BORDER=1
bordercolor="0000ff">
<TR ALIGN=CENTER valign=middle class=sort11>
<%
nummer = 1
Do While Not RS.Eof
nummer = nummer + 1
%>
<TD ALIGN="CENTER" VALIGN="middle" width="20%">
<%= rs("Id")%>
</TD>
<%
' 5 records pr. række:
If nummer Mod 5 = 1 Then
response.write " </TR><TR>"
end if
RS.MoveNext
Loop
response.write "</tr></table>"
RS.Close
Set RS = Nothing
Conn.Close
%>
</body>
</html>
Hvad skal ændres, så den viser "-" i de sidste tomme felter i tabellens
sidste række?
v.h.
Jakob Munck
| |
Jakob Møbjerg Nielse~ (07-07-2002)
| Kommentar Fra : Jakob Møbjerg Nielse~ |
Dato : 07-07-02 12:25 |
|
Jakob Munck wrote:
> <%
> nummer = 1
> Do While Not RS.Eof
> %>
>
> <TD ALIGN="CENTER" VALIGN="middle" width="20%">
> <%= rs("Id")%>
<%
if Trim(rs("id")) <> "" then
response.write rs("id")
else
response.write "-"
end if
%>
> </TD>
>
> <%
> ' 5 records pr. række:
> If nummer Mod 5 = 1 Then
If nummer Mod 5 = 0 Then
> response.write " </TR><TR>"
> end if
nummer = nummer + 1 '(Samme funktionalitet, men IMHO pænere)
> RS.MoveNext
> Loop
--
Jakob Møbjerg Nielsen | "Five exclamation marks, the
jakob@dataloger.dk | sure sign of an insane mind."
http://www.jakobnielsen.dk/ | -- Terry Pratchett, Reaper Man
| |
Jakob Munck (07-07-2002)
| Kommentar Fra : Jakob Munck |
Dato : 07-07-02 17:09 |
|
Hejsa
tak for de gode råd, men enten forstår jeg dem ikke, eller også virker de
ikke. Det hele virker præcis som før. Her er min kode, rettet som jeg
forstår dine forslag.
<%
Set conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver
(*.mdb)};DBQ="&Server.MapPath("db.mdb")
%>
<html><head></head><body>
<%
SQL = "SELECT * FROM favorit ORDER BY Id"
set RS = Conn.execute(SQL)
if RS.EOF or RS.BOF then
response.redirect("topdating.asp?mode=fejl")
End if
%>
<TABLE WIDTH=50% CELLPADDING=0 align=center CELLSPACING=0 BORDER=1
bordercolor="0000ff">
<TR ALIGN=CENTER valign=middle class=sort11>
<%
nummer = 1
Do While Not RS.Eof
nummer = nummer + 1
%>
<TD ALIGN="CENTER" VALIGN="middle" width="20%">
<%
if Trim(rs("id")) <> "" then
response.write rs("id")
else
response.write "-"
end if
%>
</TD>
<%
' 5 records pr. række:
If nummer Mod 5 = 0 Then
response.write " </TR><TR>"
end if
nummer = nummer + 1 '(Samme funktionalitet, men IMHO pænere)
RS.MoveNext
Loop
response.write "</tr></table>"
RS.Close
Set RS = Nothing
Conn.Close
%>
</body>
</html>
Hvad gør jeg galt?
v.h.
Jakob Munck
| |
Jakob Møbjerg Nielse~ (07-07-2002)
| Kommentar Fra : Jakob Møbjerg Nielse~ |
Dato : 07-07-02 17:30 |
|
Jakob Munck wrote:
> <%
> nummer = 1
> Do While Not RS.Eof
> nummer = nummer + 1
^^^^^^^^^^^^^^^^^^^
Slet denne linje
--
Jakob Møbjerg Nielsen | "Five exclamation marks, the
jakob@dataloger.dk | sure sign of an insane mind."
http://www.jakobnielsen.dk/ | -- Terry Pratchett, Reaper Man
| |
Jakob Munck (07-07-2002)
| Kommentar Fra : Jakob Munck |
Dato : 07-07-02 19:13 |
|
> > <%
> > nummer = 1
> > Do While Not RS.Eof
> > nummer = nummer + 1
> ^^^^^^^^^^^^^^^^^^^
> Slet denne linje
Tak for rådet, men det hjælper ikke. Stadig bliver der ikke vist noget i de
nederste højre felter i tabellen, hvor der ikke er tabeldata til at udfylde.
Den viser heller ikke "-" ??
v.h.
Jakob Munck
| |
Jørn Andersen (13-07-2002)
| Kommentar Fra : Jørn Andersen |
Dato : 13-07-02 22:22 |
|
On Sun, 7 Jul 2002 18:08:35 +0200, "Jakob Munck"
<jakob.munck@tdcadsl.dk> wrote:
>tak for de gode råd, men enten forstår jeg dem ikke, eller også virker de
>ikke. Det hele virker præcis som før. Her er min kode, rettet som jeg
>forstår dine forslag.
<snip>
>nummer = nummer + 1
- slettes
<snip>
>Loop
' Indsæt:
Do While (nummer - 1) Mod 5 <> 0
Response.Write "<td> - </td>" & vbcrlf
nummer = nummer + 1
Loop
>response.write "</tr></table>"
<SNIP>
Du kan droppe den If, som Jakob MN foreslog indsat, hvis du ikke har
tomme felter.
>Hvad gør jeg galt?
Når du skal "fylde op" efter at dit recordset er tømt, gælder
betingelsen for loopen (Do While Not RS.Eof) jo ikke længere, og du
kan derfor ikke fylde de tomme felter op med kode, der står *inden i*
loopen - koden skal stå udenfor.
Good luck!
--
Jørn Andersen,
Brønshøj
| |
|
|