Avatar billede jtc Nybegynder
26. maj 2003 - 22:30 Der er 44 kommentarer og
1 løsning

Loop i loop

Hej er der nogen der kan hjælpe med et loop i et loop

Hvordan gør jeg???????

Er helt på bar bund
Avatar billede jtc Nybegynder
26. maj 2003 - 22:31 #1
Her er noget af mit script!!!

<%
While NOT indlaeg.EOF
%>
                    </font> <table width="400" border="0" cellpadding="0" cellspacing="0">
                      <tr>
                        <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong><font color="#000000">
                          <% = indlaeg.Fields("turnering")%>
                          </font></strong></font> </td>
                      </tr>
                      <tr>
                        <td><font face="Verdana, Arial, Helvetica, sans-serif" size="1"><img src="pic/gul.gif" width="400" height="2"><br>
                          </font> <font face="Verdana, Arial, Helvetica, sans-serif">
                          <%
Do While NOT rs.EOF
%>
                          </font>
<table width="400" border="0" cellspacing="0" cellpadding="0">
                            <tr>
                              <td width="219"><div align="left"><em> </em> <em><font size="1" face="Verdana, Arial, Helvetica, sans-serif"><font color="#000000">
                                  <% = FormatMinDato(indlaeg.Fields("dato")) %>
                                  </font></font></em></div></td>
                              <td width="181"> <div align="right"><em><font face="Verdana, Arial, Helvetica, sans-serif" size="1"><%=indlaeg.Fields("snit")%></font></em></div></td>
                            </tr>
                            <tr>
                              <td><em><font size="1" face="Verdana, Arial, Helvetica, sans-serif"><font color="#000000">
                                </font></font></em></td>
                              <td> <div align="right"></div></td>
                            </tr>
                          </table>
                          <font face="Verdana, Arial, Helvetica, sans-serif">
                          <%
rs.MoveNext
loop
%>
                          </font></td>
                      </tr>
                      <tr>
                        <td> <div align="left"><font face="Verdana, Arial, Helvetica, sans-serif" size="1">
                            <br>
                            <font size="2"> </font></font> <font size="2" face="Verdana, Arial, Helvetica, sans-serif">
                            </font><font size="1" face="Verdana, Arial, Helvetica, sans-serif">
                            </font></div></td>
                      </tr>
                    </table>
                    <font face="Verdana, Arial, Helvetica, sans-serif">
                    <%
indlaeg.MoveNext
Wend
%>
Avatar billede eagleeye Praktikant
26. maj 2003 - 22:33 #2
For du kan køre det andet loop med rs så skal du havde en SQL sætninger som hendter noget ind i rs så du kan skrive ud:


Do While NOT rs.EOF
%>


Så du skal vel bruger noget fra recordsetet indlaeg??


SQL = "SELECT * FROM tabel WHERE id = " & indlaeg("ID")
Set rs = Conn.Execute(SQL)

Do While NOT rs.EOF
%>
Avatar billede jtc Nybegynder
26. maj 2003 - 22:36 #3
Er det det her du mener

Set indlaeg = Server.CreateObject ("ADODB.Recordset")
indlaeg.Open "SELECT * FROM qryOversigt WHERE turnering LIKE " & soegestreng & " ORDER BY dato " & tid, database

Set rs = Server.CreateObject ("ADODB.Recordset")
rs.Open "SELECT * FROM qryOversigt WHERE turnering LIKE " & soegestreng & " ORDER BY dato " & tid, database
Avatar billede jtc Nybegynder
26. maj 2003 - 22:40 #4
Det er i forbindelse med en søgefunktion
Avatar billede eagleeye Praktikant
26. maj 2003 - 22:41 #5
Ja eksvis, normalt når man har loops i loop er det fordi man hendter fra en tabel og for hver record skal man hendte noget fra en anden tabel som så skal vises.

SQL = "SELECT * FROM kategori"
RS1.Open SQL, database
do while not RS1.EOF
  '.. udskriv kategori datae

 
'Så skal alle vare i kategorien hendtes
  SQL2 = "SELECT vare FROM varer WHERE kategori = " & RS1("kategori")
  RS2.Open SQL2,databse
  do while not RS2.EOF
    'Udskriv vare.
     
    RS2.MoveNext
  loop

  RS1.Movenext
loop
Avatar billede jtc Nybegynder
26. maj 2003 - 22:50 #6
Men hvad skal jeg så skrive
Avatar billede eagleeye Praktikant
26. maj 2003 - 22:52 #7
Ja men hvad skal den finde og hvordan skal de to loops kædes sammen?
Avatar billede jtc Nybegynder
26. maj 2003 - 22:58 #8
jeg skal søge i et turneringsnavn og når jeg så strykker på søg skal de enkelte turneringer med samme søgestring være overskrift og de enkelte resultater fra enkeltpersoner skal være underoverskrifter under hver turnering
Avatar billede jtc Nybegynder
26. maj 2003 - 23:01 #9
Sådan ser min kode ud nu, men det fungere ikke optimalt kig selv på
http://www.insideout.dk/snit_soegresultat.asp?soeg=udm&Submit=++S%F8g++&tid=DESC

<%@LANGUAGE="VBSCRIPT"%>

<%
Set database = Server.CreateObject ("ADODB.Connection")
database.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("/db/Bowling.mdb")
%>

<%
tid = Request.QueryString("tid")
If Request.QueryString("Submit") = "" Then
    If tid = "" Then
        tid = "DESC"
    ElseIf tid = "DESC" Then
        tid = "ASC"
    Else
    tid = "DESC"
    End If
End If

soeg = Request.QueryString("soeg")
If soeg = "" Then
    soegestreng = "'%'"
Else
    soegestreng = "'%" & soeg & "%'"
End If

Set indlaeg = Server.CreateObject ("ADODB.Recordset")
indlaeg.Open "SELECT * FROM qryOversigt WHERE turnering LIKE " & soegestreng & " ORDER BY dato " & tid, database

%>

<%
Function FormatMinDato(Datoen)
    Dim strYYYY
    Dim strMM
    Dim strDD

        strYYYY = CStr(DatePart("yyyy", Datoen))

        strMM = CStr(DatePart("m", Datoen))
        If Len(strMM) = 1 Then strMM = "0" & strMM

        strDD = CStr(DatePart("d", Datoen))
        If Len(strDD) = 1 Then strDD = "0" & strDD

        FormatMinDato = strDD & "-" &  strMM & "-" & strYYYY

End Function
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>

            <table width="740" border="0" align="center" cellpadding="0" cellspacing="0">
        <tr>
          <td valign="top"><font size="3" face="Verdana, Arial, Helvetica, sans-serif"><strong>Nyheder<br>
            </strong></font><img src="pic/moerkeblaa.gif" width="400" height="2"></td>
          <td width="60" valign="top">&nbsp;</td>
          <td valign="top">&nbsp;</td>
        </tr>
        <tr>
          <td width="400" valign="top"> <form name="form1" method="get" action="snit_soegresultat.asp">
              <table width="400" border="0" cellpadding="0" cellspacing="0">
                <tr>
                  <td height="267" valign="top"> <div align="left"></div>
                    <table width="400" border="0">
                      <tr>
                        <td width="285" rowspan="2" valign="middle"><div align="center"></div>
                          <font face="Verdana, Arial, Helvetica, sans-serif" size="2">Søg:
                          <input type="text" name="soeg" value="<% = soeg%>" size="20">
                          <input name="Submit" type="submit" class="knap" value="  S&oslash;g  ">
                          </font></td>
                        <td width="105"><div align="right"></div></td>
                      </tr>
                      <tr>
                        <td width="105" align="right">&nbsp;</td>
                      </tr>
                      <tr>
                        <td colspan="2"><div align="center"><font face="Verdana, Arial, Helvetica, sans-serif" size="1">
                            <%
If soeg <> "" Then Response.Write("<br>Vil du se alle indlæg så slet indholdet i søgefeltet og klik på søg")
%>
                            </font></div></td>
                      </tr>
                    </table>
                    <font face="Verdana, Arial, Helvetica, sans-serif"><br>
                    <%
While NOT indlaeg.EOF
%>
                    </font> <table width="400" border="0" cellpadding="0" cellspacing="0">
                      <tr>
                        <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong><font color="#000000">
                          <% = indlaeg.Fields("turnering")%>
                          </font></strong></font> </td>
                      </tr>
                      <tr>
                        <td><font face="Verdana, Arial, Helvetica, sans-serif" size="1"><img src="pic/gul.gif" width="400" height="2"><br>
                          </font> <font face="Verdana, Arial, Helvetica, sans-serif">
                          <%Set rs = Server.CreateObject ("ADODB.Recordset")
rs.Open "SELECT * FROM qryOversigt WHERE turnering LIKE " & soegestreng & " ORDER BY dato " & tid, database
%>                         
                          <%
Do While NOT rs.EOF
%>
                          </font>
<table width="400" border="0" cellspacing="0" cellpadding="0">
                            <tr>
                              <td width="219"><div align="left"><em> </em> <em><font size="1" face="Verdana, Arial, Helvetica, sans-serif"><font color="#000000">
                                  <% = FormatMinDato(indlaeg.Fields("dato")) %>
                                  </font></font></em></div></td>
                              <td width="181"> <div align="right"><em><font face="Verdana, Arial, Helvetica, sans-serif" size="1"><%=indlaeg.Fields("navn")%></font></em></div></td>
                            </tr>
                            <tr>
                              <td><em><font size="1" face="Verdana, Arial, Helvetica, sans-serif"><font color="#000000">
                                </font></font></em></td>
                              <td> <div align="right"></div></td>
                            </tr>
                          </table>
                          <font face="Verdana, Arial, Helvetica, sans-serif">
                          <%
rs.MoveNext
loop
%>
                          </font></td>
                      </tr>
                      <tr>
                        <td> <div align="left"><font face="Verdana, Arial, Helvetica, sans-serif" size="1">
                            <br>
                            <font size="2"> </font></font> <font size="2" face="Verdana, Arial, Helvetica, sans-serif">
                            </font><font size="1" face="Verdana, Arial, Helvetica, sans-serif">
                            </font></div></td>
                      </tr>
                    </table>
                    <font face="Verdana, Arial, Helvetica, sans-serif">
                    <%
indlaeg.MoveNext
Wend
%>
                    </font></td>
                </tr>
              </table>
              <font face="Verdana, Arial, Helvetica, sans-serif">
              <input type="hidden" name="tid" value="<% = tid%>">
              </font></form></td>
          <td width="60" align="center" valign="top">&nbsp;</td>
          <td width="280" valign="top"> <table width="280" height="28" border="0" cellpadding="0" cellspacing="0">
              <tr>
                <td valign="top"> <table width="280" border="0" cellpadding="0" cellspacing="0">

                    <tr>
                      <td valign="top"> <table width="280" border="0" cellpadding="0" cellspacing="0">
                          <tr valign="top">
                            <td width="77" bordercolor="#6391A9">&nbsp;</td>
                            <td width="203" bordercolor="#6391A9"><p>&nbsp;</p></td>
                          </tr>
                          <tr valign="top">
                            <td colspan="2" bordercolor="#6391A9">&nbsp;</td>
                          </tr>
                        </table></td>
                    </tr>

                  </table></td>
              </tr>
            </table></td>
        </tr>
      </table>
Avatar billede eagleeye Praktikant
26. maj 2003 - 23:04 #10
Ok.Inde i dette loop, udskrives fra  recordsetet  indlaeg  det ville jeg forvendte var recordetet rs

Do While NOT rs.EOF
%>
                          </font>
<table width="400" border="0" cellspacing="0" cellpadding="0">
                            <tr>
                              <td width="219"><div align="left"><em> </em> <em><font size="1" face="Verdana, Arial, Helvetica, sans-serif"><font color="#000000">
                                  <% = FormatMinDato(indlaeg.Fields("dato")) %>
                                  </font></font></em></div></td>
                              <td width="181"> <div align="right"><em><font face="Verdana, Arial, Helvetica, sans-serif" size="1"><%=indlaeg.Fields("navn")%></font></em></div></td>
                            </tr>
                            <tr>
                              <td><em><font size="1" face="Verdana, Arial, Helvetica, sans-serif"><font color="#000000">
                                </font></font></em></td>
                              <td> <div align="right"></div></td>
                            </tr>
                          </table>
                          <font face="Verdana, Arial, Helvetica, sans-serif">
                          <%
rs.MoveNext
loop




Så koden i rs loopet bliver:


Do While NOT rs.EOF
%>
                          </font>
<table width="400" border="0" cellspacing="0" cellpadding="0">
                            <tr>
                              <td width="219"><div align="left"><em> </em> <em><font size="1" face="Verdana, Arial, Helvetica, sans-serif"><font color="#000000">
                                  <% = FormatMinDato(rs.Fields("dato")) %>
                                  </font></font></em></div></td>
                              <td width="181"> <div align="right"><em><font face="Verdana, Arial, Helvetica, sans-serif" size="1"><%=rs.Fields("navn")%></font></em></div></td>
                            </tr>
                            <tr>
                              <td><em><font size="1" face="Verdana, Arial, Helvetica, sans-serif"><font color="#000000">
                                </font></font></em></td>
                              <td> <div align="right"></div></td>
                            </tr>
                          </table>
                          <font face="Verdana, Arial, Helvetica, sans-serif">
                          <%
rs.MoveNext
loop
Avatar billede jtc Nybegynder
26. maj 2003 - 23:08 #11
Ja det halp lidt som du kan se på
http://www.insideout.dk/snit_soegresultat.asp?soeg=udm&Submit=++S%F8g++&tid=DESC
Der er nu forskellige navne og datoer på men den viser de samme datoer og navne under hver overskrift
Avatar billede jtc Nybegynder
26. maj 2003 - 23:11 #12
Jeg tror selv problemet ligger i dette

<%Set rs = Server.CreateObject ("ADODB.Recordset")
rs.Open "SELECT * FROM qryOversigt WHERE turnering LIKE " & soegestreng & " ORDER BY dato " & tid, database
%>
Avatar billede eagleeye Praktikant
26. maj 2003 - 23:12 #13
Jeps det er fordi du bruger samme SQL til hver recordset så derfor vil alle listerne blive ens.

Der kommer det ind at der i recordsetet indlaeg er en kolonne med data som gør de rigtige dato/navne vælges for hver record i indlaeg?
Avatar billede eagleeye Praktikant
26. maj 2003 - 23:13 #14
Evt skal kolonnen turnring bare være lig indlaeg("turnering") sådan her:


rs.Open "SELECT * FROM qryOversigt WHERE turnering = '" & indlaeg.Fields("turnering") & "' ORDER BY dato " & tid, database
Avatar billede jtc Nybegynder
26. maj 2003 - 23:14 #15
ja det er nok rigtig nok det du siger men hvad skal jeg så gøre
Avatar billede eagleeye Praktikant
26. maj 2003 - 23:16 #16
Prøv at rette rs.Open linjen til det som er vist i 26/05-2003 23:13:50
Avatar billede jtc Nybegynder
26. maj 2003 - 23:18 #17
Ja okay det indlæg lige før blev skrevet inden du skrev hvad jeg skulle skrive så jeg undskylder

Det hjalp også men der er stadig problemer
Den skriver stadig en overskrift 3 gange hvis der er 3 personer og 2 gange hvis der er 2 personer osv

Hvad gør jeg
Avatar billede eagleeye Praktikant
26. maj 2003 - 23:21 #18
Prøv at tilføje distinct til denne:


indlaeg.Open "SELECT distinct turnering, * FROM qryOversigt WHERE turnering LIKE " & soegestreng & " ORDER BY dato " & tid, database
Avatar billede jtc Nybegynder
26. maj 2003 - 23:22 #19
Det er nok fordi jeg har flere poster med samme turnering såsom

Navn                Turnering
Bo Winther Pedersen  UDM Junior indledende runde, Rødovre (Double)
Rune Jensen          UDM Junior indledende runde, Rødovre (Double)

Men hvordan undgår jeg dette
Avatar billede jtc Nybegynder
26. maj 2003 - 23:23 #20
Det hjalp ikke det forslag du kom med
Avatar billede eagleeye Praktikant
26. maj 2003 - 23:27 #21
Ja det er fordi der er flere som indeholder Turnerings nanvetet

Prøv i stedet for * at skrive de kolonner som du bruger i loopet, den virker nok med * fordi navn er forskellig i hver record.

indlaeg.Open "SELECT distinct turnering FROM qryOversigt WHERE turnering LIKE " & soegestreng & " ORDER BY dato " & tid, database
Avatar billede jtc Nybegynder
26. maj 2003 - 23:30 #22
jeg er ikke helt med på hvad jeg skal skrive

Hvis jeg bare skriver du du har skrevet ovenfor får jeg en fejlmeddelelse

Hvad skal jeg erstatte med hvad
Avatar billede eagleeye Praktikant
26. maj 2003 - 23:35 #23
Hvilken fejl får du ??

For kun at få en turnering ud , bruger man distinct kolonnenavn

SELECT distinct kolonnenavn FROM tabel

Da det ikke går at skrive * skal alle de kolonnenavn som man bruger indlaeg.Fields("xxxx") listes med komman mellem:

SELECT distinct turnering, xxxx, yyyy FROM tabel
Avatar billede jtc Nybegynder
26. maj 2003 - 23:41 #24
Hvis jeg skriver
indlaeg.Open "SELECT distinct turnering, navn, dato, * FROM qryOversigt WHERE turnering LIKE " & soegestreng & " ORDER BY dato " & tid, database
er der stadig samme problem med 2 af de samme overskrifter

Se selv på
http://www.insideout.dk/snit_soegresultat.asp?soeg=udm&Submit=++S%F8g++&tid=DESC
Avatar billede eagleeye Praktikant
26. maj 2003 - 23:43 #25
Du skal ikke også hvade * med. Det går ikke at skrive navn da navn jo ikke er unikt.


indlaeg.Open "SELECT distinct turnering, dato FROM qryOversigt WHERE turnering LIKE " & soegestreng & " ORDER BY dato " & tid, database
er der stadig samme problem med 2 af de samme overskrifter
Avatar billede jtc Nybegynder
26. maj 2003 - 23:48 #26
Okay nu ser det delvist ud til at fungere men hvordan så jeg den til at sortere efter dato
Den funktioner jeg har nu virker ikke, men jeg kan heller ikke selv finde ud af at fjerne den så hvordan gør jeg det
Avatar billede eagleeye Praktikant
26. maj 2003 - 23:50 #27
hvilken data type er kolonnen dato ?
Avatar billede jtc Nybegynder
26. maj 2003 - 23:53 #28
dato
Avatar billede jtc Nybegynder
26. maj 2003 - 23:53 #29
altså datoformat
Avatar billede eagleeye Praktikant
26. maj 2003 - 23:53 #30
umiddelbart virker din sortering på dato da fint?
Avatar billede eagleeye Praktikant
26. maj 2003 - 23:57 #31
I dette bestemmes om sorteringen er stigne eller faldne.:

Det kan så vælges på søge formen så vist jeg kan se og det kommer med i querystingen i linket : http://www.xxx.dk?..&tid=DESC  <--- tid = DESC altså faldene.


tid = Request.QueryString("tid")
If Request.QueryString("Submit") = "" Then
    If tid = "" Then
        tid = "DESC"
    ElseIf tid = "DESC" Then
        tid = "ASC"
    Else
    tid = "DESC"
    End If
End If
Avatar billede jtc Nybegynder
26. maj 2003 - 23:58 #32
ja det gør den da egentlig undskyld
Men hvordan sorterer jeg så de enkelte underoverskrifter efter størrelsen af snittet som er et felt i databasen
Avatar billede eagleeye Praktikant
27. maj 2003 - 00:00 #33
Det skal laves på denne så:

rs.Open "SELECT * FROM qryOversigt WHERE turnering = '" & indlaeg.Fields("turnering") & "' ORDER BY dato " & tid, database


I stedet for kolonnen dato så prøv med den kolonne som indeholder snittet:

rs.Open "SELECT * FROM qryOversigt WHERE turnering = '" & indlaeg.Fields("turnering") & "' ORDER BY SNIT_KOLONNE ", database


Så kan du skrive DESC hvis den skal starte med det højste snit først.
Avatar billede eagleeye Praktikant
27. maj 2003 - 00:01 #34
Sådan her:

rs.Open "SELECT * FROM qryOversigt WHERE turnering = '" & indlaeg.Fields("turnering") & "' ORDER BY SNIT_KOLONNE DESC", database
Avatar billede jtc Nybegynder
27. maj 2003 - 00:04 #35
jamen det virkede jo
venter du lige lidt så jeg får det hele set igennem og set om det skulle være mere jeg kan spørge dig om
Avatar billede jtc Nybegynder
27. maj 2003 - 00:11 #36
Kan man lave en side som opdatere og opretter resultater???
Avatar billede eagleeye Praktikant
27. maj 2003 - 00:14 #37
Det kan man da.. Du kan prøve at tage et kig på en tutorial omrking det som de har på www.html.dk

http://www.html.dk/tutorials/asp/lektion17.asp
...
... ned til
...
http://www.html.dk/tutorials/asp/lektion22.asp
Avatar billede jtc Nybegynder
27. maj 2003 - 00:14 #38
hvordan kan det være den laver fejl ved
JBU's ungdomsstævne

Må man ikke bruge ' i databasen eller hvad
Avatar billede eagleeye Praktikant
27. maj 2003 - 00:15 #39
Jo. Det er fordi man lige skal udskrifte en ' med to '' i det ord man søger efter. Det skal rettes i denne linje:

soeg = Request.QueryString("soeg")


Til dette:

soeg = Replace(Request.QueryString("soeg"),"'","''")
Avatar billede jtc Nybegynder
27. maj 2003 - 00:18 #40
en skriver der er fejl i
rs.Open "SELECT * FROM qryOversigt WHERE turnering = '" & indlaeg.Fields("turnering") & "' ORDER BY snit DESC ", database
Avatar billede jtc Nybegynder
27. maj 2003 - 00:18 #41
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'turnering = 'KBU's Ungdomsstævne trinfinaler' ORDER BY snit DESC'.

/snit_soegresultat.asp, line 288
Avatar billede eagleeye Praktikant
27. maj 2003 - 00:20 #42
Så skal den også lige havde en replace sådan her:


rs.Open "SELECT * FROM qryOversigt WHERE turnering = '" & replace(indlaeg.Fields("turnering"),"'","''") & "' ORDER BY snit DESC ", database
Avatar billede jtc Nybegynder
27. maj 2003 - 00:23 #43
Okay jeg takker og håber jeg må vende tilbage med spørgsmål til dig???

Og hvis du så lige opretter er svar skal du nok få point
Avatar billede eagleeye Praktikant
27. maj 2003 - 00:25 #44
Ok, ;)
Avatar billede jtc Nybegynder
27. maj 2003 - 00:27 #45
Jeg takker mange mange mange gange for hjælpen
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