/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Problemer med en løkke
Fra : Belial


Dato : 21-08-03 12:56

Hej gruppe. Jeg har et problem, som jeg håber I kan hjælpe med. Jeg har en
aktivitetskalender, som driller lidt. I aktivtetskalender er der plads til
at inputte aktivteter 12 månder frem. Jeg havde i første omgang, fordi jeg
ikke vidste bedre, lavet det således, at jeg lavede 12 udtræk - en for hver
måned. Det irriterer mig bare lidt, og jeg vil gerne have lavet det sådan,
at jeg kan laver ét udtræk, og at siden selv finder ud af at skifte måned,
når aktivteterne for den ene måned er blevet vist. I eksemplet nedenfor har
jeg dog kun lavet for 3 måneder. Jeg kan godt få den til at udskrive alle de
datoer, som ligger i kalenderen, og den laver også den første overskrift for
august måned, men herefter udskriver den bare samtlige datoer som også
gælder for september og oktober uden at lave en ny overskrift til disse 2
andre måneder. Er der nogen der kan se, hvordan løkken skal stilles op, for
at der kommer en overskrift med en ny måned, når den forrige måneds datoer
er udløbet? Håber det er forklaret, så det giver lidt mening.

<%
sql = "SELECT Slettes FROM akt_esbj_dk"
Set objRS = Connect.Execute(sql)

strMaaned = objRS("slettes")

if Mid(strMaaned,4,2) = "08" then
strMaaned = "August"
if Mid(strMaaned,4,2) = "09" then
strMaaned = "September"
if Mid(strMaaned,4,2) = "09" then
strMaaned = "Oktober"

(her skal være for ialt 12 måneder)

end if
end if
end if
%>
<%
sql = "SELECT * FROM akt_esbj_dk ORDER BY dato"
Set objRS = Connect.Execute(sql)
%>
<tr>
<td bgcolor="#515EAD" colspan="3">
<font class="hvid_overskrift"><%=strMaaned%></font>
</td>
</tr>
<% do until objRS.eof %>
<tr>
<td nowrap valign="top"><b><%=objRS("dato")%></b></td>
<td nowrap valign="top"><b><%=objRS("klokkeslet")%></b></td>
<td class="td3"><%=objRS("tekst")%></td>
</tr>
<%
objRS.MoveNext
loop
%>
<%
objRS.Close
Set objRS = nothing
Connect.Close
Set Connect = nothing
%>



 
 
Belial (21-08-2003)
Kommentar
Fra : Belial


Dato : 21-08-03 13:03

Glemte lige noget. For hver enkelt aktivitet der bliver sat ind i databasen,
bliver også den måned i hvilken aktiviteten foregår indsat. Foregår
aktiviteten den 25-08-03 vil ordet "august" blive sat ind i databasen. Ud
over dette skal man indtaste en dato, hvor beskeden sidst skal vises, f.eks.
26-08-03 ,og det er enten ud fra denne dato eller den måned (f.eks.
"august") som bliver indsat i databasen, at jeg håber at kunne lave løkken.



Dcasso (21-08-2003)
Kommentar
Fra : Dcasso


Dato : 21-08-03 13:17

On Thu, 21 Aug 2003 14:02:36 +0200, "Belial" <666_NOSPAM@esenet.dk>
wrote:

>Glemte lige noget. For hver enkelt aktivitet der bliver sat ind i databasen,
>bliver også den måned i hvilken aktiviteten foregår indsat. Foregår
>aktiviteten den 25-08-03 vil ordet "august" blive sat ind i databasen. Ud
>over dette skal man indtaste en dato, hvor beskeden sidst skal vises, f.eks.
>26-08-03 ,og det er enten ud fra denne dato eller den måned (f.eks.
>"august") som bliver indsat i databasen, at jeg håber at kunne lave løkken.
>

Dit første problem er at måneden ikke indgå i løkken, derved kan der
jo ikke komme nye måneder.

Da du decideret har indsat ordet august, september osv. i samme tabel
kan du jo lave en if sætning til at tjekke om vi har skiftet måned og
har vi det, så skal den nye måned komme frme.

<%
sql = "SELECT * FROM akt_esbj_dk ORDER BY dato"
Set objRS = Connect.Execute(sql)
%>
<%
dim nuvarendeMaaned
do until objRS.eof
if not(nuvarendeMaaned = objRS("Maanedsfeltet")) then
%>

<tr>
<td bgcolor="#515EAD" colspan="3">
<font class="hvid_overskrift"><%=strMaaned%></font>
</td>
</tr>
<%
nuvarendeMaaned = objRS("Maanedsfeltet")
end if
%>
<tr>
<td nowrap valign="top"><b><%=objRS("dato")%></b></td>
<td nowrap valign="top"><b><%=objRS("klokkeslet")%></b></td>
<td class="td3"><%=objRS("tekst")%></td>
</tr>
<%
objRS.MoveNext
loop
%>


Er lavet meget hurtigt, men håber det kan give en ide om det.

mvh
Dennis

Belial (21-08-2003)
Kommentar
Fra : Belial


Dato : 21-08-03 14:42


> Da du decideret har indsat ordet august, september osv. i samme tabel
> kan du jo lave en if sætning til at tjekke om vi har skiftet måned og
> har vi det, så skal den nye måned komme frme.
>

Tak for svaret. Jeg har prøvet din kode og resultatet ser således ud
http://danibo.tse.dk/akt_esbj_dk_test4.asp - lige som med det forslag Jens
har givet mig. Har du nogen idé om hvad der går galt?

<%
sql = "SELECT * FROM akt_esbj_dk ORDER BY dato"
Set objRS = Connect.Execute(sql)

dim nuvarendeMaaned
do until objRS.eof
if not(nuvarendeMaaned = objRS("menu_punkt")) then
%>
<tr>
<td bgcolor="#515EAD" colspan="3">
<font class="hvid_overskrift"><%=strMaaned%></font>
</td>
</tr>
<%
nuvarendeMaaned = objRS("menu_punkt")
End IF
%>
<tr>
<td nowrap valign="top"><b><%=objRS("dato")%></b></td>
<td nowrap valign="top"><b><%=objRS("klokkeslet")%></b></td>
<td class="td3"><%=objRS("tekst")%></td>
</tr>
<%
objRS.MoveNext
loop
%>
<%
objRS.Close
Set objRS = nothing
Connect.Close
Set Connect = nothing
%>



Dcasso (21-08-2003)
Kommentar
Fra : Dcasso


Dato : 21-08-03 14:53

On Thu, 21 Aug 2003 15:41:43 +0200, "Belial" <666_NOSPAM@esenet.dk>
wrote:

>
>> Da du decideret har indsat ordet august, september osv. i samme tabel
>> kan du jo lave en if sætning til at tjekke om vi har skiftet måned og
>> har vi det, så skal den nye måned komme frme.
>>
>
>Tak for svaret. Jeg har prøvet din kode og resultatet ser således ud
>http://danibo.tse.dk/akt_esbj_dk_test4.asp - lige som med det forslag Jens
>har givet mig. Har du nogen idé om hvad der går galt?
>

Som sagt gik det lidt stærkt :

Dit problem er så vidt jeg kan se, strMaaned , som jo ikke ændres,
prøv at indsætte rækkes månedsværdi heri og jeg tror det er løst


mvh
Dennis




Belial (21-08-2003)
Kommentar
Fra : Belial


Dato : 21-08-03 15:56


> Dit problem er så vidt jeg kan se, strMaaned , som jo ikke ændres,
> prøv at indsætte rækkes månedsværdi heri og jeg tror det er løst
>

Hej igen. Nu er jeg desværre ikke den hårdeste til ASP, så jeg ville være
meget taknemmlig, hvis du vil prøve at guide mig henad hvad der skal stå,
for at jeg kan få det til at virke. Ud fra hvad du skriver er jeg desværre
helt på bar bund. Vil det ikke give et problem at indsætte en måneds værdi
ift. til de andre måneder - vil den så stadig godt kunne skifte videre til
de øvrige måneder?



Dcasso (22-08-2003)
Kommentar
Fra : Dcasso


Dato : 22-08-03 05:47

>> Dit problem er så vidt jeg kan se, strMaaned , som jo ikke ændres,
>> prøv at indsætte rækkes månedsværdi heri og jeg tror det er løst
>>
>
>Hej igen. Nu er jeg desværre ikke den hårdeste til ASP, så jeg ville være
>meget taknemmlig, hvis du vil prøve at guide mig henad hvad der skal stå,
>for at jeg kan få det til at virke. Ud fra hvad du skriver er jeg desværre
>helt på bar bund. Vil det ikke give et problem at indsætte en måneds værdi
>ift. til de andre måneder - vil den så stadig godt kunne skifte videre til
>de øvrige måneder?
>

Inden jeg bruger lidt tid på at tjekke koden igennem, gider du så ikke
lige skrive hvad du præcist har til at ligge i tabellen og under
hvilke overskrifter

Dennis

Belial (22-08-2003)
Kommentar
Fra : Belial


Dato : 22-08-03 09:04

> Inden jeg bruger lidt tid på at tjekke koden igennem, gider du så ikke
> lige skrive hvad du præcist har til at ligge i tabellen og under
> hvilke overskrifter
>
> Dennis

Jo da. Der er felterne id, menu_punkt (Måneden aktiviteten finder sted -
f.eks. august2003), dato (F.eks. 25.-26. august), slettes (F.eks.
27-08-2003), klokkeslet (F.eks. kl. 10.00 - 16.00) og tekst.

Så alt i alt er der punkterne:

id
menu_punkt
dato
slettes
klokkeslet
tekst

Ved godt nogle af punkterne ikke er så sigende, men de virker for mig



Dcasso (22-08-2003)
Kommentar
Fra : Dcasso


Dato : 22-08-03 09:33

Og hvad er meningen med dette?

<%
sql = "SELECT Slettes FROM akt_esbj_dk"
Set objRS = Connect.Execute(sql)

strMaaned = objRS("slettes")

if Mid(strMaaned,4,2) = "08" then
strMaaned = "August"
if Mid(strMaaned,4,2) = "09" then
strMaaned = "September"
if Mid(strMaaned,4,2) = "09" then
strMaaned = "Oktober"

(her skal være for ialt 12 måneder)

end if
end if
end if
%>

On Fri, 22 Aug 2003 10:04:14 +0200, "Belial" <666_NOSPAM@esenet.dk>
wrote:

>> Inden jeg bruger lidt tid på at tjekke koden igennem, gider du så ikke
>> lige skrive hvad du præcist har til at ligge i tabellen og under
>> hvilke overskrifter
>>
>> Dennis
>
>Jo da. Der er felterne id, menu_punkt (Måneden aktiviteten finder sted -
>f.eks. august2003), dato (F.eks. 25.-26. august), slettes (F.eks.
>27-08-2003), klokkeslet (F.eks. kl. 10.00 - 16.00) og tekst.
>
>Så alt i alt er der punkterne:
>
>id
>menu_punkt
>dato
>slettes
>klokkeslet
>tekst
>
>Ved godt nogle af punkterne ikke er så sigende, men de virker for mig
>


Belial (22-08-2003)
Kommentar
Fra : Belial


Dato : 22-08-03 09:48

> Og hvad er meningen med dette?
>
> <%
> sql = "SELECT Slettes FROM akt_esbj_dk"
> Set objRS = Connect.Execute(sql)
>
> strMaaned = objRS("slettes")
>
> if Mid(strMaaned,4,2) = "08" then
> strMaaned = "August"
> if Mid(strMaaned,4,2) = "09" then
> strMaaned = "September"
> if Mid(strMaaned,4,2) = "09" then
> strMaaned = "Oktober"
>
> (her skal være for ialt 12 måneder)
>
> end if
> end if
> end if
> %>
>

Der var bare for at lave en lille ting, så den korrekte måned blev udskrevet
i overskriften. I feltet "menu_punkt" i databasen er der jo tilføjet et
årstal, så jeg vil ikke kunne bruge den til det. Det er nok ikke det
smarteste i hele verden, men det virker Jeg blev rådet til at lave en
funktion i stedet, dog ved jeg ikk helt hvordan jeg ville skulle gøre det.



Dcasso (22-08-2003)
Kommentar
Fra : Dcasso


Dato : 22-08-03 10:09

>Der var bare for at lave en lille ting, så den korrekte måned blev udskrevet
>i overskriften. I feltet "menu_punkt" i databasen er der jo tilføjet et
>årstal, så jeg vil ikke kunne bruge den til det. Det er nok ikke det
>smarteste i hele verden, men det virker Jeg blev rådet til at lave en
>funktion i stedet, dog ved jeg ikk helt hvordan jeg ville skulle gøre det.
>

Ok, det burde helt kunne udelades :)

Prøv lige følgende, da jeg jo ikke har tabellen, er det lidt svært at
teste selv

Og er der nogle småfejl, du finder ved kørslen så ret dem lige :)

mvh
Dennis

<%
sql = "SELECT * FROM akt_esbj_dk ORDER BY dato"
Set objRS = Connect.Execute(sql)

dim nuvarendeMaaned
do until objRS.eof
if not(nuvarendeMaaned = objRS("menu_punkt")) then
%>
   <tr>
      <td bgcolor="#515EAD" colspan="3">
         <% 'Læg mærke til ændringen i næste linie, nu
går den ind og henter måneden og bare fjerner de sidste to bogstaver
%>
         <font
class="hvid_overskrift"><%=mid(objRS("Menupunkt"),len(objRS("Menupunkt"))-2,2%></font>
      </td>
   </tr>
<%
   nuvarendeMaaned = objRS("menu_punkt")
End IF
%>
   <tr>
      <td nowrap valign="top"><b><%=objRS("dato")%></b></td>
      <td nowrap
valign="top"><b><%=objRS("klokkeslet")%></b></td>
      <td class="td3"><%=objRS("tekst")%></td>
   </tr>
<%
objRS.MoveNext
loop

objRS.Close
Set objRS = nothing
Connect.Close
Set Connect = nothing
%>

Belial (22-08-2003)
Kommentar
Fra : Belial


Dato : 22-08-03 13:39

> Prøv lige følgende, da jeg jo ikke har tabellen, er det lidt svært at
> teste selv

Nu har jeg prøvet det. Det er lidt interessant. Jeg ændrede lige lidt i
koden, da den ikke udskrev måneden ordentlig - det gør den som sådan heller
ikke nu, men jeg kunne ikke gøre den mere nøjagtig. Men nu kan man da se,
hvad den mener: http://www.danibo.tse.dk/akt_esbj_dk_test5.asp.

Så prøvede jeg noget interessant... jeg lavede sql sætningen om, så den
hedder "...ORDER BY menu_punkt" i stedet, og så virker det faktisk. Problem
er så bare nu, at den udskriver månederne i alfabetisk rækkefølge således at
august, september og oktober kommer i rækkefølgen august, oktober og
september i stedet. Hvordan kan jeg mon knække den?

Er du evt. interesseret i, at jeg ripper databasen for alle tabeller og
prøver at maile dig databasen med den ene tabel - vil det være nemmere, og
gider du bøvle med det?

Koden ser nu således ud:

sql = "SELECT * FROM akt_esbj_dk ORDER BY dato" (eller ORDER BY
menu_punkt)
Set objRS = Connect.Execute(sql)

dim nuvarendeMaaned
do until objRS.eof
if not(nuvarendeMaaned = objRS("menu_punkt")) then
%>
<tr>
<td bgcolor="#515EAD" colspan="3">
<% 'Læg mærke til ændringen i næste linie, nu går den ind og henter måneden
og bare fjerner de sidste to bogstaver
%>
<font
class="hvid_overskrift"><%=mid(objRS("Menu_punkt"),len(objRS("Menu_punkt"))-
9,6)%></font>
</td>
</tr>
<%
nuvarendeMaaned = objRS("menu_punkt")
End IF
%>
<tr>
<td nowrap valign="top"><b><%=objRS("dato")%></b></td>
<td nowrap
valign="top"><b><%=objRS("klokkeslet")%></b></td>
<td class="td3"><%=objRS("tekst")%></td>
</tr>
<%
objRS.MoveNext
loop

objRS.Close
Set objRS = nothing
Connect.Close
Set Connect = nothing
%>



Belial (22-08-2003)
Kommentar
Fra : Belial


Dato : 22-08-03 14:07


> Så prøvede jeg noget interessant... jeg lavede sql sætningen om, så den
> hedder "...ORDER BY menu_punkt" i stedet, og så virker det faktisk.
Problem
> er så bare nu, at den udskriver månederne i alfabetisk rækkefølge således
at
> august, september og oktober kommer i rækkefølgen august, oktober og
> september i stedet. Hvordan kan jeg mon knække den?


Glemte lige at sende linket til denne:
http://www.danibo.tse.dk/akt_esbj_dk_test6.asp



Dcasso (22-08-2003)
Kommentar
Fra : Dcasso


Dato : 22-08-03 14:54

On Fri, 22 Aug 2003 15:07:15 +0200, "Belial" <666_NOSPAM@esenet.dk>
wrote:

>
>> Så prøvede jeg noget interessant... jeg lavede sql sætningen om, så den
>> hedder "...ORDER BY menu_punkt" i stedet, og så virker det faktisk.
>Problem
>> er så bare nu, at den udskriver månederne i alfabetisk rækkefølge således
>at
>> august, september og oktober kommer i rækkefølgen august, oktober og
>> september i stedet. Hvordan kan jeg mon knække den?
>
>
>Glemte lige at sende linket til denne:
>http://www.danibo.tse.dk/akt_esbj_dk_test6.asp
>

Ja, du kan godt prøve at sende det til mig, brug
dcassoSLETDISSETEGN@get2net.dk

Send også lige asp filen, er lidt doven

dennis

Belial (22-08-2003)
Kommentar
Fra : Belial


Dato : 22-08-03 15:06


> Ja, du kan godt prøve at sende det til mig, brug
> dcassoSLETDISSETEGN@get2net.dk
>
> Send også lige asp filen, er lidt doven
>

Tak skal du ha'! Har netop sendt dem til dig.



Jens Gyldenkærne Cla~ (21-08-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 21-08-03 13:17

Belial skrev:

> Er der nogen der kan se, hvordan løkken skal stilles op, for at
> der kommer en overskrift med en ny måned, når den forrige
> måneds datoer er udløbet?


Ja. Tricket er at du skal gemme den aktuelle månedsværdi i en
variabel og så sammenligne med værdien i dit postsæt. Hvis de ikke
er ens, udskriver du en månedsoverskrift og opdaterer variablen med
den nye måned.

I pseudokode:

Dim denneMaaned
denneMaaned = ""

Do While Not objRS.EOF

   If denneMaaned <> objRS("maaned") Then
       ' Udskriv måneden
       Response.write "<h2>" & objRS("maaned") & "</h2>"

       ' Opdater variabel
       denneMaaned = objRS("maaned")
   End IF

   ' Udskriv arrangementerne i måneden    

   objRS.movenext
Loop


Lidt kommentarer til din kode følger.


> sql = "SELECT Slettes FROM akt_esbj_dk"

Hvad er "Slettes"? (hint - beskrivende feltnavne er en god ting).



> strMaaned = objRS("slettes")

Hvilket format er slettes i? Hvis det er en dato - gemt som dato -
kan du finde måneden med funktionen Month(objRS("slettes")).

> if Mid(strMaaned,4,2) = "08" then
> strMaaned = "August"
> if Mid(strMaaned,4,2) = "09" then
> strMaaned = "September"
> if Mid(strMaaned,4,2) = "09" then
> strMaaned = "Oktober"

Det er en tung måde at finde månedsnavnet på. Prøv at lave en
funktion der returnerer månedsnavnet når man giver et månedsnummer.
Man kan lægge navnene i et array - så er funktionen både simpel og
hurtig.


> <font class="hvid_overskrift"><%=strMaaned%></font>

Det er godt nok ikke html-gruppen, men det er første gang jeg har
set <font> med class. En af ideerne med css (herunder class) er at
undgå layoutkoder i html - herunder <font>.

Du kan lægge klassen på moderelementet (<td>) eller evt lægge den
på en <p> eller en <span>.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Belial (21-08-2003)
Kommentar
Fra : Belial


Dato : 21-08-03 14:36

> Ja. Tricket er at du skal gemme den aktuelle månedsværdi i en
> variabel og så sammenligne med værdien i dit postsæt. Hvis de ikke
> er ens, udskriver du en månedsoverskrift og opdaterer variablen med
> den nye måned.

Tak for svaret. Nu har jeg prøvet at indsætte din kode - jeg har måske ikke
gjort/forstået det helt rigtigt - i hvert fald bliver resultatet ikke helt
rigtigt. Se på følgende side hvad der sker:
http://danibo.tse.dk/akt_esbj_dk_test3.asp

Koden er nu:

<%
sql = "SELECT * FROM akt_esbj_dk ORDER BY dato"
Set objRS = Connect.Execute(sql)

Dim denneMaaned
denneMaaned = ""

Do While Not objRS.EOF

If denneMaaned <> objRS("menu_punkt") Then

%>
<tr>
<td bgcolor="#515EAD" colspan="3">
<font class="hvid_overskrift"><%=strMaaned%></font>
</td>
</tr>
<%
denneMaaned = objRS("menu_punkt")
End IF
%>
<tr>
<td nowrap valign="top"><b><%=objRS("dato")%></b></td>
<td nowrap valign="top"><b><%=objRS("klokkeslet")%></b></td>
<td class="td3"><%=objRS("tekst")%></td>
</tr>
<%
objRS.MoveNext
loop
%>
<%
objRS.Close
Set objRS = nothing
Connect.Close
Set Connect = nothing
%>



Chrisser (21-08-2003)
Kommentar
Fra : Chrisser


Dato : 21-08-03 14:54

Belial wrote:
>> Ja. Tricket er at du skal gemme den aktuelle månedsværdi i en
>> variabel og så sammenligne med værdien i dit postsæt. Hvis de ikke
>> er ens, udskriver du en månedsoverskrift og opdaterer variablen med
>> den nye måned.
>
> Tak for svaret. Nu har jeg prøvet at indsætte din kode - jeg har
> måske ikke gjort/forstået det helt rigtigt - i hvert fald bliver
> resultatet ikke helt rigtigt. Se på følgende side hvad der sker:
> http://danibo.tse.dk/akt_esbj_dk_test3.asp
>
> Koden er nu:

> denneMaaned = objRS("menu_punkt")
prøv at sætte en trim på:

denneMaaned = Trim(objRS("menu_punkt"))

Det kan være du har fået puttet nogle uønskede mellemrum på...


Chrisser




Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408943
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste