Avatar billede Boddicker Seniormester
27. august 2001 - 18:47 Der er 24 kommentarer og
1 løsning

Loop med kun x antal gange

do while not RS.eof

response.write \"\" & RS(\"Titel\") & \"</A><br>

RS.MoveNext
loop

Ovenstående skulle gerne dumpe feltet Titel fra en db ud.

Men hvis der er 100 entries, dumper den jo alle ud. Hvordan får man den til kun at dumpe eksempelvis 5 ud?
Avatar billede nute Nybegynder
27. august 2001 - 18:50 #1
<%
Dim counter
counter = 5
do while not RS.eof AND counter <= 5

response.write \"\" & RS(\"Titel\") & \"</A><br>

RS.MoveNext
loop

%>


/nute
Avatar billede Slettet bruger
27. august 2001 - 18:57 #2
er det ik letter bare og bruge det her

SELECT TOP 5 * FROM dintabel\"

Avatar billede Boddicker Seniormester
27. august 2001 - 19:04 #3
Det her begriber jeg ikke... Jeg kan s** ikke få det til at du. Org. koden ser således ud:

RS.Open sql, conn
          If (Area = 1) Then
          response.write \"<b><span class=underskrift>[VHS]</span></b><br>\"
          End If
         
          If (Area = 2) Then
          response.write \"<br><b><span class=underskrift>[DVD]</span></b><br>\"
          End If

Dim counter
counter = 5
do while not RS.eof AND counter <= 5
    if RS(\"WebDate\") => udtraekDato1 and RS(\"WebDate\") <= udtraekDato2 then
    if RS(\"WebDate\") <= date or Request.Cookies(\"LoginInfo\")(\"LoggetInd\") = \"yes\" and Request.QueryString(\"nextweek\") > 0 then
    %>
       
        <%  response.write \"<span class=underskrift>\"
            If (Area = 1) Then
            %>
<A href=\"VisFilm.asp?ID=<% = RS(\"ID\") %>\" onmouseout=\"window.status=\'\'; return true\" onmouseover=\"window.status=\'Læs mere om filmen\'; return true\">         
          <%
          response.write \"\" & RS(\"Titel\") & \"</A><br>\"
          %>

          <% ElseIf (Area = 2 Or Area = 4 Or Area = 6) Then %>
       
          <A href=\"VisDVD.asp?ID=<% = RS(\"ID\") %>\"
           
          onmouseout=\"window.status=\'\'; return true\"
          onmouseover=\"window.status=\'Læs mere om filmen\'; return true\">
         
          <%
          response.write \"\" & RS(\"Titel\") & \"</A><br>\"%>
          <%
            End If
            %>
            </span>
          <%
    end if
    end if
RS.MoveNext
loop
RS.Close
Next
Avatar billede nute Nybegynder
27. august 2001 - 19:04 #4
den peneste måten vil absolutt være å la SQL styre det (ved å bruke TOP kommandoen.

(( selv om det er sagt, så vil jeg bare legge til at det mangler en linje i min posting:

counter = counter + 1

skal settes inn under

RS.MoveNext

/nute
Avatar billede nute Nybegynder
27. august 2001 - 19:05 #5
neeei.....jeg postet noe fullstendig svineri. Sånn skal det være:

<%
Dim counter
counter = 0
do while not RS.eof AND counter <= 5

response.write \"\" & RS(\"Titel\") & \"</A><br>

RS.MoveNext
counter = counter + 1
loop

%>

/nute
Avatar billede Slettet bruger
27. august 2001 - 19:07 #6
bare smæk mit ind i din sql så kører det
Avatar billede Boddicker Seniormester
27. august 2001 - 19:11 #7
Hmmm... jeg er mest til nute\'s kode, men det vil bare ikke fungere...

Koden ser nu således ud:

Dim counter
counter = 0
do while not RS.eof AND counter <= 5
    if RS(\"WebDate\") => udtraekDato1 and RS(\"WebDate\") <= udtraekDato2 then
    if RS(\"WebDate\") <= date or Request.Cookies(\"LoginInfo\")(\"LoggetInd\") = \"yes\" and Request.QueryString(\"nextweek\") > 0 then
    %>
       
        <%  response.write \"<span class=underskrift>\"
            If (Area = 1) Then
            %>
<A href=\"VisFilm.asp?ID=<% = RS(\"ID\") %>\" onmouseout=\"window.status=\'\'; return true\" onmouseover=\"window.status=\'Læs mere om filmen\'; return true\">         
          <%
          response.write \"\" & RS(\"Titel\") & \"</A><br>\"
          %>

          <% ElseIf (Area = 2 Or Area = 4 Or Area = 6) Then %>
       
          <A href=\"VisDVD.asp?ID=<% = RS(\"ID\") %>\"
           
          onmouseout=\"window.status=\'\'; return true\"
          onmouseover=\"window.status=\'Læs mere om filmen\'; return true\">
         
          <%
          response.write \"\" & RS(\"Titel\") & \"</A><br>\"%>
          <%
            End If
            %>
            </span>
          <%
    end if
    end if
RS.MoveNext
counter = counter + 1
loop

Problemet er, at den nu ingenting viser. Altså 0 entries.
Avatar billede nute Nybegynder
27. august 2001 - 19:14 #8
prøv med space sitt forslag...
Avatar billede Boddicker Seniormester
27. august 2001 - 19:16 #9
Det dur ikke, da der er andre faktorer som gør, at den lette måde ikke kan bruges...
Avatar billede Slettet bruger
27. august 2001 - 19:17 #10
må vi se din sql da
Avatar billede Boddicker Seniormester
27. august 2001 - 19:25 #11
It\'s like this:

Den hentes x antal entries udfra en startdato og slutdato, der er angivet i db\'en. Derfor vil en top5 ikke virke...
Avatar billede kenzo Nybegynder
27. august 2001 - 19:56 #12
Jeg går ud fra at problemet ligger i counter variablen, og at du er sikker på at alle række inden for det aktuelle datointerval vil blive udskrevet hvis du fjerne AND counter <=5.
Prøv at ændre: do while not RS.eof AND counter <= 5 til do while not RS.eof AND (counter <= 5)
Avatar billede Boddicker Seniormester
27. august 2001 - 20:01 #13
Jep, alle rækker indenfor det aktuelle datointerval bliver udskrevet, hvis jeg fjerne AND counter <=5.

Men desværre gør paranteserne ingen forskel - når counter <= 5 er med dumper den ingenting ud.
Avatar billede Slettet bruger
27. august 2001 - 20:05 #14
hvorfor kan du ikke bruge top 5 ?
Avatar billede Boddicker Seniormester
27. august 2001 - 20:10 #15
You tell me. ;) Jeg prøvede det - og det virkede ikke.

Jeg har fortalt tidliger, hvorfor jeg ikke tror det dur...
Avatar billede Slettet bruger
27. august 2001 - 20:16 #16
ja og jeg spurgte om vi ikke måtte se din sql
Avatar billede Boddicker Seniormester
27. august 2001 - 20:22 #17
Se sql\'en? Som i \"Jeg skal poste hele sql-db\'en\"? I givet fald nej.
Avatar billede Slettet bruger
27. august 2001 - 20:23 #18
nej bare fin forespørgelse
Avatar billede Slettet bruger
27. august 2001 - 20:23 #19
fin = din
Avatar billede Boddicker Seniormester
27. august 2001 - 20:28 #20
K... men jeg tror, det forvirrer mere, end det gør gavn:

Set RS = Server.CreateObject(\"ADODB.RecordSet\")
%><!-- #include file=DatabaseConnection.asp --><%

if WeekDay(date) >= 3 then
  udtraekAar = Year(date)
  udtraekUge = GetWeek(date)
else
  udtraekAar = Year(date-4)
  udtraekUge = GetWeek(date-4)
end if

\' Find startdato (for mandagen i ugen startende tirsdag...)
If(WeekDay(date)) = 1 Then \'Søndag
    udtraekDato1 = Date - 6
ElseIf(WeekDay(date)) = 2 Then \'Mandag
    udtraekDato1 = Date - 7
ElseIf(WeekDay(date)) = 3 Then \'Tirsdag
    udtraekDato1 = Date - 1
ElseIf(WeekDay(date)) = 4 Then \'Onsdag
    udtraekDato1 = Date - 2
ElseIf(WeekDay(date)) = 5 Then \'Torsdag
    udtraekDato1 = Date - 3
ElseIf(WeekDay(date)) = 6 Then \'Fredag
    udtraekDato1 = Date - 4
ElseIf(WeekDay(date)) = 7 Then \'Lørdag
    udtraekDato1 = Date - 5
End If
\' Find slutdato (for fredag i ugen startende tirsdag)
udtraekDato2 = udtraekDato1 + 4

if Request.Cookies(\"LoginInfo\")(\"LoggetInd\") = \"yes\" and Request.QueryString(\"nextweek\") > 0 then
    udtraekDato1 = udtraekDato1 + (Request.QueryString(\"nextweek\") * 7)
    udtraekDato2 = udtraekDato2 + (Request.QueryString(\"nextweek\") * 7)
    udtraekUge = udtraekUge + Request.QueryString(\"nextweek\")
end if
%>

<%
For Area = 1 To 6
    If (Area = 1) Then
        sql = \"SELECT * FROM Film where KulthjornetCheck NOT LIKE \'1\' and HuskerDuCheck NOT LIKE \'1\' and VurderingJaNej LIKE \'1\' order by Titel\"
        conn = \"driver={MySql};server=\"& SQLserveradr &\";database=\"& SQLdatabase &\";uid=\"& SQLlogin &\";pwd=\"& SQLpassword
Avatar billede Slettet bruger
27. august 2001 - 20:30 #21
If (Area = 1) Then
        sql = \"SELECT * FROM Film where KulthjornetCheck NOT LIKE \'1\' and HuskerDuCheck NOT LIKE \'1\' and VurderingJaNej LIKE \'1\' order by Titel\"
        conn = \"driver={MySql};server=\"& SQLserveradr &\";database=\"& SQLdatabase &\";uid=\"& SQLlogin &\";pwd=\"& SQLpassword

=============================

If (Area = 1) Then
        sql = \"SELECT TOP 5 * FROM Film where KulthjornetCheck NOT LIKE \'1\' and HuskerDuCheck NOT LIKE \'1\' and VurderingJaNej LIKE \'1\' order by Titel\"
        conn = \"driver={MySql};server=\"& SQLserveradr &\";database=\"& SQLdatabase &\";uid=\"& SQLlogin &\";pwd=\"& SQLpassword
Avatar billede Boddicker Seniormester
27. august 2001 - 20:32 #22
Hehe... jamen, jeg fortalte dig jo, at jeg havde prøvet det.

Resultatet er:

Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E09)
[TCX][MyODBC]You have an error in your SQL syntax near \'5 *
Avatar billede Slettet bruger
27. august 2001 - 20:36 #23
hmmm oki
Avatar billede jensaa Nybegynder
07. september 2001 - 13:50 #24
Et lille forslag...
Prøv at brug \"LIMIT 5\"
efter order by tror jeg (ok, måske før...prøv dig frem)
Svjv er TOP en MSSQL kommando og virker ikke med mySQL...LIMIT virker med mySQL.
Mvh Jens
Avatar billede Boddicker Seniormester
27. september 2001 - 08:02 #25
Det kom aldrig til at du, så jeg lukker og slukker.
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