Avatar billede ameq Nybegynder
08. januar 2002 - 20:46 Der er 36 kommentarer og
1 løsning

Do løkke + tæller

Hvordan laver jeg en do løkke hvor jeg + en vær gang den kører så jeg kan skrive den ud?
Avatar billede egede Nybegynder
08. januar 2002 - 20:48 #1
vær = hver?

Med skrive ud mener du da til en printer, en tekstfil eller en variabel, eller hvad?
Avatar billede ameq Nybegynder
08. januar 2002 - 20:51 #2
dim
nr
Avatar billede ameq Nybegynder
08. januar 2002 - 20:51 #3
    <%
<% If Rs.BOF Or Rs.EOF Then

        response.write \"<br>Du har ingen mail\"
    else %>
<table width=\"80%\" border=\"0\" align=\"center\">
  <tr>
    <td width=\"26%\">
      <div align=\"right\"><b>.:</b> Mail Titel <b>:.</b></div>
    </td>
    <td width=\"26%\">
      <div align=\"center\"><b>.:</b> From <b>:.</b></div>
    </td>
    <td width=\"26%\">
      <div align=\"left\"><b>.:</b> Read? <b>:.</b></div>
    </td>
  </tr>
</table>
<%    Do  %>
<table width=\"50%\" border=\"0\" align=\"center\">
  <% if rs(\"readuser\") = \"no\" then %>
  <tr bgcolor=\"#FFFFCC\">
<% else %>
<tr>
<% end if %>
    <td width=\"26%\">
      <a href=\"mailinfo.asp?id=<%=rs(\"id\")%>&mail=show\"><%=rs(\"mailtiteluser\")%></a>
    </td>
    <td width=\"26%\">
      <div align=\"center\">
      <%=rs(\"fromuser\")%>
      </div>
      </td>
    <td width=\"26%\">
      <div align=\"center\">
        <% if rs(\"readuser\") = \"yes\" then %>
        <a href=\"mailinfo.asp?id=<%=rs(\"id\")%>&mail=show\"><img src=\"readmail.gif\" width=\"28\" height=\"26\" border=\"0\"></a>
        <% end if %>
        <% if rs(\"readuser\") = \"no\" then %>
        <a href=\"mailinfo.asp?id=<%=rs(\"id\")%>&mail=show\"><img src=\"notreadmail.gif\" width=\"28\" height=\"26\" border=\"0\">
        </a>
        <% end if %>
      </div>
    </td>
  </tr>
</table>
<%    rs.MoveNext
    Loop While Not rs.EOF    %>
   
    <% end if %>
Avatar billede ameq Nybegynder
08. januar 2002 - 20:52 #4
og hvor skal jeg sætte den ind??
Avatar billede egede Nybegynder
08. januar 2002 - 20:54 #5
Altså det skal ind som en tæller?
Har du adgang til FSO?
Ellers bliver det bare lavet i en db
Avatar billede ameq Nybegynder
08. januar 2002 - 20:54 #6
det er lavet i en database
Avatar billede egede Nybegynder
08. januar 2002 - 20:57 #7
altså du har en database hvor der er plads til rs(\"nr\")?
Avatar billede ameq Nybegynder
08. januar 2002 - 21:00 #8
nej nr er en dim var. den kan også hedde newmail eller blaminr.. =)
Avatar billede egede Nybegynder
08. januar 2002 - 21:05 #9
Men hvad skal en do-løkke gøre godt for?
Kan det ikke bare klares med:
<%
minvar = rs(\"minvar\") + 1
Conn.Execute(\"Update TABEL set minvar = & \"minvar\" & where id = 1\")
%>
Avatar billede ameq Nybegynder
08. januar 2002 - 21:08 #10
jeg skal se hvor mange gang en \"rs\" bliver skrive/kalt på.... kan jeg det med dit script?
Avatar billede tmceu Praktikant
09. januar 2002 - 01:02 #11
Hvis jeg forstår dit spørgsmål korrekt skal du bruge noget i stil med dette:

Counter = 1

do
- kode -
Response.Write \"Tælleren er: \" & Counter
Counter = Counter + 1
loop

Hvis du eks. vil begrænse den til 10 gennemløb, kan du bruge dette:

do while Counter <= 10
- kode -
Response.Write \"Tælleren er: \" & Counter
Counter = Counter + 1
loop
Avatar billede ameq Nybegynder
09. januar 2002 - 06:39 #12
ja men jeg ved ikke om jeg skal lave et andet scritp som \"tæller\" for der er kun når der står \"yes\" i en kolonne der skal tælle
Avatar billede tmceu Praktikant
09. januar 2002 - 08:15 #13
Så skulle du kunne gøre noget i stil med dette

do
- kode -
Response.Write \"Tælleren er: \" & Counter
If LCase(rs(\"FeltNavn\")) = \"yes\" then\"
Counter = Counter + 1
End If
loop

Dette inkrementer kun tælleren hvis feltet \"FeltNavn\" i dit recordset har værdien \"yes\". Grunden til LCase er at tvinge den til små bogstaver, så If også fanger eks. \"Yes\" og \"YES\"
Avatar billede ameq Nybegynder
09. januar 2002 - 11:11 #14
<%
   
    Set Conn = Server.CreateObject(\"ADODB.Connection\")
    DSN = \"DRIVER={Microsoft Access Driver (*.mdb)}; \"
    DSN = DSN & \"DBQ=\" & Server.MapPath(\"database.mdb\")
    Conn.Open DSN
   
    Set Rs = Conn.Execute(\"Select * From mail where readuser = \'yes\'\")
    %>
<%
do
Response.Write \"Tælleren er: \" & Counter
If LCase(rs(\"readuser\")) = yes then
Counter = Counter + 1
End If
loop
%>
<%    Conn.Close
    Set Conn = Nothing

%>
Laver den her fejl:
Tælleren er: error \'80020009\'
Exception occurred.

/j/mail.asp, line 83
Avatar billede tmceu Praktikant
09. januar 2002 - 11:17 #15
Jeg kan ikke se at du har linien

Counter = 1

nogen steder i din kode.

Kører du med option explicit, skal du huske at lave en

dim Counter
Avatar billede ameq Nybegynder
09. januar 2002 - 11:17 #16
jeg har sidet og arbejde med mit script og jeg tror det skal se sådan ud:
<%
    Counter = 1
   
    Set Conn = Server.CreateObject(\"ADODB.Connection\")
    DSN = \"DRIVER={Microsoft Access Driver (*.mdb)}; \"
    DSN = DSN & \"DBQ=\" & Server.MapPath(\"database.mdb\")
    Conn.Open DSN
   
    Set Rs = Conn.Execute(\"Select * From mail where touser = \'\"& Session(\"brugernavn\") &\"\' and where readuser = \'yes\'\")
    %>
<%
do
Response.Write \"Tælleren er: \" & Counter
Response.Write rs(\"readuser\")
If rs(\"readuser\") = \"yes\" then
Counter = Counter + 1
End If
loop
%>
<%    Conn.Close
    Set Conn = Nothing

%>
men den laver den her fejl :
Microsoft OLE DB Provider for ODBC Drivers error \'80040e14\'

[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression \'touser = \'Ameq\' and where readuser = \'yes\'\'.

/j/mail.asp, line 79
Avatar billede tmceu Praktikant
09. januar 2002 - 11:21 #17
Fjern din 2. WHERE i denne linie

Set Rs = Conn.Execute(\"Select * From mail where touser = \'\"& Session(\"brugernavn\") &\"\' and where readuser = \'yes\'\")

så det bliver

Set Rs = Conn.Execute(\"Select * From mail where touser = \'\"& Session(\"brugernavn\") &\"\' and readuser = \'yes\'\")
Avatar billede tmceu Praktikant
09. januar 2002 - 11:22 #18
I øvrigt er denne linie overflødig, da du allerede i dit SQL statement vælger kun at vise readuser=yes

If rs(\"readuser\") = \"yes\" then
Avatar billede ameq Nybegynder
09. januar 2002 - 11:27 #19
ja eller nej den skal kun tælle dem som er \"yes\"
men den lavede den her fejl
Tælleren er: 1
ADODB.Field error \'80020009\'

Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.

/j/index.asp, line 0
Avatar billede ameq Nybegynder
09. januar 2002 - 11:35 #20
men er det fordi at at der ikke er nolge i database?? jeg det skal den også kunne
Avatar billede ameq Nybegynder
09. januar 2002 - 11:41 #21
ja det var det =), men nu bliv den bare ved + 1 og skrife ud, +1 og skrive ud =) så...
Avatar billede tmceu Praktikant
09. januar 2002 - 11:55 #22
Prøv med denne i stedet

<%
    Counter = 1
   
    Set Conn = Server.CreateObject(\"ADODB.Connection\")
    DSN = \"DRIVER={Microsoft Access Driver (*.mdb)}; \"
    DSN = DSN & \"DBQ=\" & Server.MapPath(\"database.mdb\")
    Conn.Open DSN
   
    Set Rs = Conn.Execute(\"Select * From mail where touser = \'\"& Session(\"brugernavn\") &\"\' and where readuser = \'yes\'\")
    %>
<%
if not rs.eof then

do until rs.eof
Response.Write \"Tælleren er: \" & Counter
Response.Write rs(\"readuser\")
If rs(\"readuser\") = \"yes\" then
Counter = Counter + 1
End If
loop

else
Response.Write \"Der er ikke nogen poster i databasen\"
end if
%>
<%    Conn.Close
    Set Conn = Nothing

%>
Avatar billede ameq Nybegynder
09. januar 2002 - 12:03 #23
den går helt af amork lige som før add den 1 og skrive ud og add en og skrive ud...
Avatar billede tmceu Praktikant
09. januar 2002 - 12:11 #24
Prøv at poste den kode du anvender lige nu.
Avatar billede ameq Nybegynder
09. januar 2002 - 12:12 #25
<%
    Counter = 0
   
    Set Conn = Server.CreateObject(\"ADODB.Connection\")
    DSN = \"DRIVER={Microsoft Access Driver (*.mdb)}; \"
    DSN = DSN & \"DBQ=\" & Server.MapPath(\"database.mdb\")
    Conn.Open DSN
   
    Set Rs = Conn.Execute(\"Select * From mail where touser = \'\"& Session(\"brugernavn\") &\"\' and where readuser = \'yes\'\")
    %>
<%
if not rs.eof then

do until rs.eof
Response.Write \"Tælleren er: \" & Counter
Response.Write rs(\"readuser\")
If rs(\"readuser\") = \"yes\" then
Counter = Counter + 1
End If
loop

else
Response.Write \"Der er ikke nogen poster i databasen\"
end if
%>
<%    Conn.Close
    Set Conn = Nothing

%>
Avatar billede tmceu Praktikant
09. januar 2002 - 12:14 #26
Sorry, havde overset at du mangler en rs.MoveNext. Din kode kører lige nu en uendelig løkke :-)

<%
    Counter = 0
   
    Set Conn = Server.CreateObject(\"ADODB.Connection\")
    DSN = \"DRIVER={Microsoft Access Driver (*.mdb)}; \"
    DSN = DSN & \"DBQ=\" & Server.MapPath(\"database.mdb\")
    Conn.Open DSN
   
    Set Rs = Conn.Execute(\"Select * From mail where touser = \'\"& Session(\"brugernavn\") &\"\' and where readuser = \'yes\'\")
    %>
<%
if not rs.eof then

do until rs.eof
Response.Write \"Tælleren er: \" & Counter
Response.Write rs(\"readuser\")
If rs(\"readuser\") = \"yes\" then
Counter = Counter + 1
End If
rs.MoveNext
loop

else
Response.Write \"Der er ikke nogen poster i databasen\"
end if
%>
<%    Conn.Close
    Set Conn = Nothing

%>
Avatar billede ameq Nybegynder
09. januar 2002 - 12:19 #27
den tager meget lang tid at load ind?!?!?
Avatar billede tmceu Praktikant
09. januar 2002 - 12:23 #28
Det kan skyldes en langsom database forbindelse, eller at der er mange poster i databasen og/eller dit recordset.

Hov. Hvorfor har du ikke fjernet den 2. where i dit SQL statement som jeg sagde ? Der må ikke være 2 where.
Avatar billede ameq Nybegynder
09. januar 2002 - 12:27 #29
det kan jeg godt side dig... det er ikke database men det er side den laver den sammen med før med at add og skrive ud....
Avatar billede tmceu Praktikant
09. januar 2002 - 12:30 #30
Vis venligst den kode du bruger lige nu, jeg fatter ikke meget af hvad du lige skrev ?
Avatar billede ameq Nybegynder
09. januar 2002 - 12:31 #31
<%
    Counter = 0
   
    Set Conn = Server.CreateObject(\"ADODB.Connection\")
    DSN = \"DRIVER={Microsoft Access Driver (*.mdb)}; \"
    DSN = DSN & \"DBQ=\" & Server.MapPath(\"database.mdb\")
    Conn.Open DSN
   
    Set Rs = Conn.Execute(\"Select * From mail where touser = \'\"& Session(\"brugernavn\") &\"\' and where readuser = \'yes\'\")
    %>
<%
if not rs.eof then

do until rs.eof
Response.Write \"Tælleren er: \" & Counter
Response.Write rs(\"readuser\")
If rs(\"readuser\") = \"yes\" then
Counter = Counter + 1
End If
rs.MoveNext
loop

else
Response.Write \"Der er ikke nogen poster i databasen\"
end if
%>
<%    Conn.Close
    Set Conn = Nothing

%>
Avatar billede tmceu Praktikant
09. januar 2002 - 12:38 #32
Får du ikke samme fejl som før ?

Microsoft OLE DB Provider for ODBC Drivers error \'80040e14\'

[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression \'touser = \'Ameq\' and where readuser = \'yes\'\'.

Prøv at trykke ctrl + F5 eller at skrive adressen til din asp fil i browseren i stedet for eks. at bruge frem/tilbage knapperne. Jeg tror du kører på en gammel version af filen.
Avatar billede ameq Nybegynder
09. januar 2002 - 13:33 #33
jeg har sidet og skrive om kode om igen så, sætte jeg min sidste postede kode ind og fik den her fjel:
Microsoft OLE DB Provider for ODBC Drivers error \'80040e14\'

[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression \'touser = \'Ameq\' and where readuser = \'yes\'\'.

/j/mail.asp, line 77


JUBII =)
Avatar billede ameq Nybegynder
09. januar 2002 - 13:45 #34
jeg har fået det til at virke =) og jeg syns du har gjort en så stort indsats, så du skal have lidt fjere point... =)
men i sidste spørgsmål hvordan får jeg skrivet Counter ud i en Session
Avatar billede tmceu Praktikant
09. januar 2002 - 13:47 #35
Altså gemt Counter i en sessions variabel ?

I så fald kan du blot skrive

Session(\"Counter\") = Counter

Og hvis du senere skal skrive den ud et andet sted, kan du bruge

Response.Write Session(\"Counter\")

Godt vi trods alt fik skovlen under den :-)
Avatar billede ameq Nybegynder
09. januar 2002 - 13:49 #36
ja men hvor mange point vil du have ???
Avatar billede tmceu Praktikant
09. januar 2002 - 13:53 #37
Ikke mere end du synes det var værd, point er ikke det altafgørende :-)

Jeg accepterer din vurdering betingelsesløst.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester