/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
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 "&nbsp;</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 "&nbsp;</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 "&nbsp;</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

Søg
Reklame
Statistik
Spørgsmål : 177503
Tips : 31968
Nyheder : 719565
Indlæg : 6408545
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste