Avatar billede carparknorth Nybegynder
13. december 2003 - 02:32 Der er 13 kommentarer og
1 løsning

Skema over reservationer

Hejsa...

Jeg har et script, der kører nogle løkker, som får genereret følgende:

En tabel med 21 kolonner og 9 rækker.

Jeg har nu gennem et stykke tid haft problemer med udtrækning af data fra en database. Hvis der ikke står noget i databasen, skal der skrives "Fri" til feltet. Ellers skal dataene udskrives til feltet.

Hvordan gør jeg det nemmest?
Avatar billede dna Nybegynder
13. december 2003 - 03:15 #1
Alt efter hvordan du hiver din data ud.. så kan du teste på 2 forskellige måder.

Hvis du laver et SQL-udtræk, hvor du spørger efter nogle bestemte rækker, så kan du spørge på om recordsættet indeholde data.
F.eks. ved:

if record.eof then
  Response.write "Fri"
else
  Response.write record("dit_data")
end if

Hvis det er nogle variabler eller felter som er direkte tomme, så kan du gøre det ved at spørge på om strengen indeholder noget.

F.eks. ved:

if variable = "" then
  Response.write "Fri"
else
  Response.write variable
end if

Hvis dette ikke hjælper dig den rigtige vej, så må vi se noget kode for at kunne hjælpe.

dna
Avatar billede carparknorth Nybegynder
13. december 2003 - 16:06 #2
Her er koden til mit script.

preMonday har noget at gøre med, at det er ugebaseret. preMonday er så Mandag, lægger man 1 til bliver det Tirsdag osv osv.

  <table style="BORDER-COLLAPSE: collapse" borderColor="#c0c0c0" cellSpacing="0" cellPadding="4" width="98%" align="center" border="1">
    <tbody>
      <tr class="bjaelke">
        <td colSpan="21">
          <table cellSpacing="4" cellPadding="0" width="100%" align="center" border="0">
            <tbody>
              <tr><td width=50% colspan=21 class="ms-nav" >
                  <font face="Verdana" size="1">Reservationer for uge <%=Uge%> - Alle lokaler</font></td>
                <td style="FONT-WEIGHT: normal" width="100%"></td>
                <td align="right" width="1%"><span class="noprint"><a href="java script:window.print();"><font face="Verdana" size="1"><img alt="Udskriv" src="Print.gif" border="0" width="18" height="14"></font></a></span></td>
              </tr>
            </tbody>
          </table>
        </td>
      </tr>
      <tr>
        <td align="middle"><b><font face="Verdana" size="1">Lektion</font></b></td>
<%
for R = 0 to 4
%><font face="Verdana"> </font>
        <td colspan=4 class="linje1" align="middle" <%if preMonday+R = date then%>bgcolor="#cccccc"<%end if%>><font face="Verdana" size="1"><%=weekdayname(weekday(preMonday+R))%><br>
          <%=preMonday+R%><br></font></td>
<%
next
%> </tr>
      <tr>
      <td></td>
      <td colspan=4><font size="1" face="verdana"><center>Lokale</center></font></td>
      <td colspan=4><font size="1" face="verdana"><center>Lokale</center></font></td>
      <td colspan=4><font size="1" face="verdana"><center>Lokale</center></font></td>
      <td colspan=4><font size="1" face="verdana"><center>Lokale</center></font></td>
      <td colspan=4><font size="1" face="verdana"><center>Lokale</center></font></td>
      </tr>
<%
for T = 1 to 8

response.write("      <tr>")
for I = 0 to 5

if I = 0 then
response.write("        <td class=""ms-nav"" align=""middle""><font face=""Verdana"" size=""1"">"&T&". time</font></td>")
else

response.write("    <td><font face=""Verdana"" size=""1"" width=""20%"" color=""#00aa00""  class=""ms-nav""><center><a href=""?action=update&tid="&T&"&dato="&preMonday+I-1&"&lokale=3"">Fri</a></center></td>")
response.write("    <td><font face=""Verdana"" size=""1"" width=""20%"" color=""#00aa00"" class=""ms-nav""><center><a href=""?action=update&tid="&T&"&dato="&preMonday+I-1&"&lokale=4"">Fri</a></center></td>")
response.write("    <td><font face=""Verdana"" size=""1"" width=""20%"" color=""#00aa00"" class=""ms-nav""><center><a href=""?action=update&tid="&T&"&dato="&preMonday+I-1&"&lokale=6"">Fri</a></td>")
response.write("    <td><font face=""Verdana"" size=""1"" width=""20%"" color=""#00aa00"" class=""ms-nav""><center><a href=""?action=update&tid="&T&"&dato="&preMonday+I-1&"&lokale=11"">Fri</a></center></td>")

end if

next
response.write("      </tr>")
next

%> </font>
    </tbody>
  </table>
</div>

Mit problem er egentlig ikke så stort. Jeg vil bare gerne vide, om jeg skal oprette forbindelser til hvert enkelt felt i min tabel (ca. 160 <TD>) eller om jeg kan nøjes med at lave for hver række (8)?
Avatar billede dna Nybegynder
13. december 2003 - 16:17 #3
hmm, jeg er desværre ikke helt med på hvad du mener med forbindelser?

hvis du snakker forbindelser til databasen, så burde det da ikke være nødvendigt. Der burde du da kunne hive det hele ud på 1 gang.. eller i hvert fald pr. række. At lave 160 kald til en db på en side... er ikke ligefrem optimalt jo! :D

dna
Avatar billede carparknorth Nybegynder
13. december 2003 - 18:37 #4
ups.... sorry... var vist lige sprogspasser der.

Det er jo ikke forbindelser.

Det er SQL-udtrækket jeg mener. Altså, skal jeg lave 160 SQL-udtræk eller kan jeg nøjes med mindre?

Det er en tabel med 8 rækker og 20 kolonner.

Er det forståeligt?
Avatar billede dna Nybegynder
13. december 2003 - 20:35 #5
Du kan næsten med garanti nøjes med mindre. Jeg kender ikke lige din db-opbygning, men hvis ikke du kan nøjes med mindre, så må vi jo ændre i db-opbygning. Ingen side kan være tjent med 160 kald for at lave et skema.

Jeg kunne forstille mig, at du kunne hente det hele i et kald, og så løbe det recordset igennem række for række.
Eller som mindste mål, så lave et kald pr. række.

Skal måske bruge lidt mere info, hvis jeg skal hjælpe dig konkret.

dna
Avatar billede carparknorth Nybegynder
13. december 2003 - 21:49 #6
Tak skal du have for din hjælp.

Jeg har følgende database struktur:
http://www.cdguiden.dk/carparknorth/Database.jpg

Og dette er det output jeg gerne skulle have: (skemaet som du ser er bare et eksempel, scriptet virker endnu ikke)
http://www.cdguiden.dk/carparknorth/Skema.jpg

Er der mere du skal vide om systemet?
Avatar billede dna Nybegynder
13. december 2003 - 22:33 #7
Altså.. jeg er ikke lige hjemme lige nu, men kan kigge på det senere. Kan måske først blive i morgen. Det er jo lørdag aften! :-)

men, det skal nok kunne klares i under 160 kald! :-)

dna
Avatar billede carparknorth Nybegynder
13. december 2003 - 22:35 #8
det er helt fint... jeg skal også så småt til at i byen.

Endnu en gang tak for din hjælp.
Avatar billede carparknorth Nybegynder
14. december 2003 - 12:52 #9
dna -> håber du havde en god lørdag aften.. :)

jeg tænkte på, om det ville hjælpe at omstrukturere min database således at det er delt op i lokaler. Altså sådan at jeg ikke har en samlet tabel (Reservationer), men 4 tabeller (Lokale3, Lokale4, Lokale6, Lokale11)? Ville det kunne nedsætte brugen af kald til databasen?
Avatar billede carparknorth Nybegynder
14. december 2003 - 19:25 #10
Jeg kan sgu ikke rigtig få det til at virke!
Avatar billede dna Nybegynder
14. december 2003 - 21:40 #11
Hejsa

Jeg har desværre haft en rigtig travl dag, og har ikke rigtigt haft tid til at sidde foran computeren. "Vi må håbe det bliver bedre i morn´"

:-)

dna
Avatar billede carparknorth Nybegynder
14. december 2003 - 21:51 #12
det er helt i orden. Vi snakkes ved i morgen.
Avatar billede dna Nybegynder
15. december 2003 - 10:07 #13
Hejsa igen.

Mine tanker omkring dit problem har mundet ud i dette. Jeg ville nok gøre det på den måde, at jeg ville lave følgende felter i databasen: lokale, dato, lektion og så hente alt dit data ud for hele ugen 1 gang i starten af scriptet.

Så ville jeg gennemløbe det recordset og så oprette nogle dynamiske variabler svarende til de lektioner hvor der er optaget. Når du så i dit script laver skemaet, så kan du ved hvert felt teste på en variabel istedet for at lave kald til databasen. Dette vil spare dig for en masse belastning den vej.

Det kunne evt. se ud på denne måde:

sql = "Select * from reservation where dato = ... " & uge
set r = conn.execute(sql)
if not r.eof then
  do
      dyn-var- & r("dato") & - & r("lokale") & - & r("lektion") = "optaget"
  r.movenext
  loop until r.eof
end if

Jeg er ikke 100% sikker på om du kan gøre det med en alm. variabel, men ellers kan du oprette dem som session-variabler, og så kan du 100%. Dette ville se sådan her ud:
session("dyn-var-" & r("dato") & "-" & r("lokale") & "-" & r("lektion") = "optaget"

i dit script kan du så lave noget test i hver celle der ligner:

if session("dyn-var-" & din_dato & "-" & lokale & "-" & T & "") = "optaget" then
response.write("Optaget")
else
response.write("Fri")
end if

Håber du kan bruge mine tanker til noget, og hvis du ikke kan finde ud af det, så må du skrive, så kan jeg lave et lille eksempel.

dna
Avatar billede carparknorth Nybegynder
18. december 2003 - 18:00 #14
mange tak for din hjælp...

jeg har ikke helt brugt din løsning, men du gav mig noget jeg bestemt kunne bruge.

Jeg har givet dig points.

Har du forstand på flash? Så prøv at kigge på http://www.eksperten.dk/spm/441564
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