Avatar billede kovalt Nybegynder
13. august 2002 - 11:00 Der er 34 kommentarer og
1 løsning

Hvad er galt?

Jeg har nogle ugenr lageret i en database efter formed 0102 for uge 1 år 2002. Jeg skal nu ha lavet en menu, hvor ugenummeret opdeles i to - en uge-del og en år-del således der kan vælges et år hvorefter alle de uger der er oprettet herunder kommer hjem - jeg har prøvet men kan ikke rigtig finde ud af det.

<body topmargin="0" leftmargin="0">

<table border="0" width="100%">
  <tr><td width="100%" align="center"><b><font size="1">År</font></b></td></tr>
  <tr>
    <td width="100%" align="center"><a href="?saar=01"><u><span style="text-decoration: overline">2001</font></span></u></a></td>
  </tr>
  <tr>
    <td width="100%" align="center"><a href="?saar=02"><u><span style="text-decoration: overline">2002</font></span></u></a></td>
  </tr>
  <tr>
    <td width="100%" align="center"><a href="?saar=03"><u><span style="text-decoration: overline">2003</font></span></u></a></td>
  </tr>
</table>

<br>
<br>

<% saar = Request.QueryString("saar")

If saar <> "" Then

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" + Server.MapPath("../../../../database/tips.mdb"))

strUgerSQL = "SELECT ugenr FROM uge ORDER BY ugenr"
set rs = Conn.Execute(strUgerSQL)

%>

<table border="0" width="100%">
  <tr>
    <td width="101%" colspan="3" align="center"><b>Uge</b></td>
  </tr>

<% While Not rs.EOF

If Len(rs("ugenr")) = 1 Then
    ugenr = "000"&rs("ugenr")
End If

If Len(rs("ugenr")) = 2 Then
    ugenr = "00"&rs("ugenr")
End If

If Len(rs("ugenr")) = 3 Then
    ugenr = "0"&rs("ugenr")
End If

noColPrRow = 0
maxColsPrRow = 3
do while not rs.EOF

if noColPrRow = 0 then
    Response.Write "<tr>"
end if %>

<td width="33%" align="center"><u><span style="text-decoration: overline">
<a onFocus="blur()" href="java script:popWin('rapport.asp?ugenr=<% =ugenr %>','','width=700,height=500,status=0,scrollbars=1')"><% =ugenr %></a></td>

<% noColPrRow = noColPrRow + 1

if noColPrRow = maxColsPrRow then
    Response.Write "</tr>"
    noColPrRow = 0
end if
loop
if noColPrRow <> 0 then Response.Write "</tr>" %>

<% End If %>

</body>
Avatar billede eagleeye Praktikant
13. august 2002 - 11:05 #1
du skal lave det hele i en loop:



<%
noColPrRow = 0
maxColsPrRow = 3
do while not rs.EOF

If Len(rs("ugenr")) = 1 Then
    ugenr = "000"&rs("ugenr")
End If

If Len(rs("ugenr")) = 2 Then
    ugenr = "00"&rs("ugenr")
End If

If Len(rs("ugenr")) = 3 Then
    ugenr = "0"&rs("ugenr")
End If

  if noColPrRow = 0 then
    Response.Write "<tr>"
  end if %>

<td width="33%" align="center"><u><span style="text-decoration: overline">
<a onFocus="blur()" href="java script:popWin('rapport.asp?ugenr=<% =ugenr %>','','width=700,height=500,status=0,scrollbars=1')"><% =ugenr %></a></td>

<% noColPrRow = noColPrRow + 1

  if noColPrRow = maxColsPrRow then
    Response.Write "</tr>"
    noColPrRow = 0
  end if

  rs.MoveNext
loop
if noColPrRow <> 0 then Response.Write "</tr>" %>
Avatar billede kovalt Nybegynder
13. august 2002 - 11:13 #2
IE står han ikke åbne siden... det tage i hvert fald meget lang til.... den kommer ikke med nogen fejl... skærmen er bare hvis
Avatar billede eagleeye Praktikant
13. august 2002 - 11:13 #3
du skal udskifte alt fra og med:

<% While Not rs.EOF

Til og med:

if noColPrRow <> 0 then Response.Write "</tr>" %>


med det jeg har vist.
Avatar billede kovalt Nybegynder
13. august 2002 - 11:14 #4
Koden ser nu således ud:

<% saar = Request.QueryString("saar")

If saar <> "" Then

    Set Conn = Server.CreateObject("ADODB.Connection")
    Conn.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" + Server.MapPath("XX"))

    strUgerSQL = "SELECT ugenr FROM uge ORDER BY ugenr"
    set rs = Conn.Execute(strUgerSQL)

    %>

    <table border="0" width="100%">
      <tr>
        <td width="101%" colspan="3" align="center"><b>Uge</b></td>
      </tr>

    <% While Not rs.EOF

    noColPrRow = 0
    maxColsPrRow = 3
    do while not rs.EOF

        If Len(rs("ugenr")) = 1 Then
            ugenr = "000"&rs("ugenr")
        End If

        If Len(rs("ugenr")) = 2 Then
            ugenr = "00"&rs("ugenr")
        End If

        If Len(rs("ugenr")) = 3 Then
            ugenr = "0"&rs("ugenr")
        End If

        if noColPrRow = 0 then
            Response.Write "<tr>"
        end if %>

    <td width="33%" align="center"><u><span style="text-decoration: overline">
    <a onFocus="blur()" href="java script:popWin('rapport.asp?ugenr=<% =ugenr %>','','width=700,height=500,status=0,scrollbars=1')"><% =ugenr %></a></td>

    <% noColPrRow = noColPrRow + 1

        if noColPrRow = maxColsPrRow then
            Response.Write "</tr>"
            noColPrRow = 0
        end if
    loop
        if noColPrRow <> 0 then
            Response.Write "</tr>"
        End If
    Wend
End If %>
Avatar billede eagleeye Praktikant
13. august 2002 - 11:17 #5
du skal havde rs.movenext ind før loop:


  rs.MoveNext
loop
Avatar billede eagleeye Praktikant
13. august 2002 - 11:18 #6
Du kan godt slette linien:

While Not rs.EOF

For:  do while not rs.eof  gør det samme. Hvis du sletter den skal du også slette linie:

Wend
Avatar billede kovalt Nybegynder
13. august 2002 - 11:29 #7
Det jeg får på skærmen nu er:

År
2001
2002
2003


Uge
<a onFocus="blur()" href="java script:popWin('rapport.asp?ugenr='0809','','width=700,height=500,status=0,scrollbars=1')>0809
Avatar billede kovalt Nybegynder
13. august 2002 - 11:30 #8
Den udskriver koden for linket i stedet for linket
Avatar billede kovalt Nybegynder
13. august 2002 - 11:32 #9
ugenr = 0809 er record nr 5 i tabellen
Avatar billede eagleeye Praktikant
13. august 2002 - 11:37 #10
underligt ændre det hvis du skriven den sådan så href står først efter <a:

<td width="33%" align="center"><u><span style="text-decoration: overline">
<a href="java script:popWin('rapport.asp?ugenr=<% =ugenr %>','','width=700,height=500,status=0,scrollbars=1')" onFocus="blur()"><% =ugenr %></a></td>
Avatar billede kovalt Nybegynder
13. august 2002 - 11:42 #11
Ja nu skriver den slet ingen ting :-)
Avatar billede kovalt Nybegynder
13. august 2002 - 11:43 #12
De der variabler jeg definere som Len(ugenr,2) de skifter da sammen med rs ikke?
Avatar billede kovalt Nybegynder
13. august 2002 - 11:44 #13
Så nu udskriver den de fire først rigtigt.... resten af felterne bliver alle fyldt ud med recordsset no. 5 fra DB
Avatar billede eagleeye Praktikant
13. august 2002 - 11:48 #14
Jeg kan ikke lige se hvor de variale er som bliver sat til:

varnavn = Len(ugenr,2)
Avatar billede eagleeye Praktikant
13. august 2002 - 11:51 #15
hvis du tænker på if- sætningen så bliver de kort for hver record.. men hvis len(ugenr) = 4 så tager den den gamle værdi af ugenr og ikke den nye du skal tilføje denne linie før den første if sætningen med len(rs("ugenr"):


do while not rs.EOF
  ugenr = rs("ugenr")      '<--------- NY LINIE

  If Len(rs("ugenr")) = 1 Then
Avatar billede kovalt Nybegynder
13. august 2002 - 11:52 #16
EOF
Det var også skirdt formuleret men jeg mener det her:

        If Len(rs("ugenr")) = 1 Then
            ugenr = "000"&rs("ugenr")
        End If
....

Har du noget idé om hvorfor den kun udskriver de 5 første og derefter forstætter med nummer 5
Avatar billede kovalt Nybegynder
13. august 2002 - 11:53 #17
Det er som om den stopper med at loope efter 5 gang
Avatar billede eagleeye Praktikant
13. august 2002 - 11:55 #18
Prøv at se min kommentar (13/08-2002 11:51:41)
Avatar billede kovalt Nybegynder
13. august 2002 - 11:55 #19
SÅDAN..... nu virker det......

Må jeg plage dig lidt mere?
Avatar billede kovalt Nybegynder
13. august 2002 - 11:56 #20
Er det fordi den kommer ind i en uendelig løkke, hvis Len(ugenr) = 4 - så misser den alle If-sætningerne?
Avatar billede eagleeye Praktikant
13. august 2002 - 11:57 #21
Ja :)
Avatar billede kovalt Nybegynder
13. august 2002 - 12:00 #22
Min plan til at begynde med var så at lave en menu der helt selv genereres på baggrund af indholdet i databasen. Det er herfor jeg har lavet sådan at alle ugenr tvinges til at antage 4-cifre, idet jeg så kan bestemme ugenr og år sådan her:

uge = Left(ugenr,2)
aar = Rigth(ugenr,2)

Min plan var så at menuen inledningsvis kun skal bestå at en oversigt over de der er oprettet. Herefter skal brugeren så vælge et år, som overføres via en Request.querySting der så bevirker at der kommer en udskrift at alle de uger der er operettet under det pågældende år.

Do I make myself clear - Sonst fragen Sie bitte :-)
Avatar billede kovalt Nybegynder
13. august 2002 - 12:01 #23
der skal stå "en oversigt over de *år*, der er oprettet" i 3. sidste linie
Avatar billede eagleeye Praktikant
13. august 2002 - 12:08 #24
hvis du øverføre år via en QueryString i sitl med  fil_navn.asp?aar=02  for år 2002.

Så skal du lavde en SQL sætning som kun vælger de uger som er i år 2002 ?? Det må blive noget med:

aar = Request.QueryString("aar")
sql = "SELECT ugenr FROM uge WHERE Right(ugenr,2) = '" & aar & "' ORDER BY ugenr"
Avatar billede kovalt Nybegynder
13. august 2002 - 12:11 #25
jeg var ikke klar over at man kan inbygge eks Right i en SQL-sætning
Avatar billede eagleeye Praktikant
13. august 2002 - 12:13 #26
Det kan man med Access SQL jeg ved ikke om det vil virke med mySQL eller MSSQL.
Avatar billede kovalt Nybegynder
13. august 2002 - 12:13 #27
Hvordan får jeg så lavet listen over de år der er oprettet.

Skal de i et array? Kan man så sige noget med

If exist eller noget i den stil, for kun at den ikke tilføjer samme år flere gange
Avatar billede kovalt Nybegynder
13. august 2002 - 12:17 #28
OK
Avatar billede eagleeye Praktikant
13. august 2002 - 12:24 #29
Du kan gøre det med right..:

sql = "SELECT DISTINCT Right(ugenr,2) as aartal FROM uge ORDER BY ugenr;"
set rs=conn.execute(sql)
'udskriv det
do while not rs.eof
  Response.write rs("aartal") & "<br>"
  rs.movenext
loop
Avatar billede kovalt Nybegynder
13. august 2002 - 12:28 #30
hvad gør DISTINCT?
Avatar billede kovalt Nybegynder
13. august 2002 - 12:33 #31
Jeg får en fejl der går op at der opstår konflikt i SQL-sætningen i man ikke sortere efter ugenr hvis man bruger DISTICNT på ugenr.

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'

[Microsoft][ODBC Microsoft Access Driver] ORDER BY clause (ugenr) conflicts with DISTINCT.

/Spiloversigt/JTTips/uge/menu.asp, line 15
Avatar billede eagleeye Praktikant
13. august 2002 - 12:35 #32
Arh man skal skrive det samme i DISTINCT og ORDER BY:

sql = "SELECT DISTINCT Right(ugenr,2) as aartal FROM uge ORDER BY Right(ugenr,2);"
Avatar billede kovalt Nybegynder
13. august 2002 - 12:37 #33
Så er den vel sådan set i vinkel......

Jeg takker mange gange for hjælpen

Det er vel ikke sådan at du har et ICQ-nummer i tilfælde af akut mangel på hjælp :-)
Avatar billede eagleeye Praktikant
13. august 2002 - 12:50 #34
Normalt hjælper jeg ikke over ICQ længere det blev for meget på et tidspunkt...
Avatar billede kovalt Nybegynder
13. august 2002 - 13:28 #35
Det er bare helt i orden.... du skal i hvert fald have tak 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