/ 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
Liste med datoer
Fra : Christian Kragh


Dato : 03-10-08 07:10

Hej.

Jeg er igang med at lave et fotoalbum og vil godt lave flere
visningstyper.
Den ene er en liste af billederne efter hvornår de er taget.
Derfor vil jeg godt have en liste hvor man i starten kan se
årstalne.

2005
2006
2007
2008

Når man trykker på et af årstalne kommer der månederne til sygne
under.

2005
2006
- januar
- marts
- juli
- august
- december
2007
2008

Når man trykker på en af månederne kommer der de dage der er
billeder til sygne.

2005
2006
- januar
- marts
- juli
- 05. juni
- 08. juni
- 14. juni
- 17. juni
- 29. juni
- august
- december
2007
2008

Datoerne ligger i en database i et felt af typen dato.

Jeg kan ikke lige lure hvordan jeg skal lave en sådan
funktionalitet.

Måske skal man lave 3 funktioner.
En der løber igennem for år.
En der løber igennem for måneder.
Og endelig en der løber igennem for dage.

Men det bliver lidt tungt at den skal kører 3 funktioner igennem
med måske 15.000 poster.

Findes der en, for systemet, lettere løsning?

Christian

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Jørn Andersen (03-10-2008)
Kommentar
Fra : Jørn Andersen


Dato : 03-10-08 18:11

On 03 Oct 2008 06:10:24 GMT, Christian Kragh <tursoe@gmail.com> wrote:

>Jeg er igang med at lave et fotoalbum og vil godt lave flere
>visningstyper.
>Den ene er en liste af billederne efter hvornår de er taget.
>Derfor vil jeg godt have en liste hvor man i starten kan se
>årstalne.
>
>2005
>2006
>2007
>2008
>
>Når man trykker på et af årstalne kommer der månederne til sygne
>under.
>
>2005
>2006
> - januar
> - marts
> - juli
> - august
> - december
>2007
>2008
>
>Når man trykker på en af månederne kommer der de dage der er
>billeder til sygne.
>
>2005
>2006
> - januar
> - marts
> - juli
> - 05. juni
> - 08. juni
> - 14. juni
> - 17. juni
> - 29. juni
> - august
> - december
>2007
>2008
>
>Datoerne ligger i en database i et felt af typen dato.
>
>Jeg kan ikke lige lure hvordan jeg skal lave en sådan
>funktionalitet.

Jeg tror jeg ville trække alle datoer ud og så bruge (clientside)
JavaScript til at styre, hvilke der skal vises.

Udtræk, hvis det er en Access db:
SELECT DISTINCT
DateSerial(Year([dinDato]),Month([dinDato]),Day([dinDato])) AS minDato
FROM tblTabel
ORDER BY DateSerial(Year([dinDato]),Month([dinDato]),Day([dinDato]));

Det kan gøres simplere, hvis ikke der er en Time-del med i
dato-angivelsen:
SELECT DISTINCT dinDato
FROM tblTabel
ORDER BY dinDato;

<snip>

>Men det bliver lidt tungt at den skal kører 3 funktioner igennem
>med måske 15.000 poster.

Hmmm, hvis du bruger SELECT DISTINCT i SQL'en bliver det sikkert kun til
et par hundrede datoer.


Good luck!

--
Jørn Andersen,
Brønshøj

Christian Kragh (04-10-2008)
Kommentar
Fra : Christian Kragh


Dato : 04-10-08 12:53

> Jeg tror jeg ville trække alle datoer ud og så bruge (clientside)
> JavaScript til at styre, hvilke der skal vises.
>
> Udtræk, hvis det er en Access db:
> SELECT DISTINCT
> DateSerial(Year([dinDato]),Month([dinDato]),Day([dinDato])) AS minDato
> FROM tblTabel
> ORDER BY DateSerial(Year([dinDato]),Month([dinDato]),Day([dinDato]));
>
> Det kan gøres simplere, hvis ikke der er en Time-del med i
> dato-angivelsen:
> SELECT DISTINCT dinDato
> FROM tblTabel
> ORDER BY dinDato;

Der skal ingen timedel med, men jeg har fundet en mulig løsning.

> Hmmm, hvis du bruger SELECT DISTINCT i SQL'en bliver det sikkert
> kun til et par hundrede datoer.

Det jeg har fundet frem til er føldende sql sætning og funktion:

strSQL = "Select distinct dato from tblBilleder order by dato"
Set rs = Conn.Execute(strSQL)

'' Gem data som kommasepareret liste
Do while not rs.eof
arrDato = arrDato & "," & rs("dato")
rs.MoveNext
Loop

'' Lav arrays med data
arrDato = Split(arrDato,",")

qtemp = 0

'' Funktion som undersøger for svar
Function ThreadsDate(intID)
For m = 1 to Ubound(arrDato)

if len(arrDato(m)) > 0 then
if not qTempYear = year(arrDato(m)) then
if qTempYearOn = true then
response.write "</div>" & vbcrlf
qTempYearOn = false
end if
if qTempMonthOn = true then
response.write "</div>" & vbcrlf
qTempMonthOn = false
end if
response.write year(arrDato(m)) & vbcrlf
qTempYear = year(arrDato(m))
response.write "<div style='display:none' id='y" & qtemp & "'>"
qTempYearOn = true
qtemp = qtemp +1
end if

if not qTempMonth = month(arrDato(m)) then
if qTempMonthOn = true then
response.write "</div>" & vbcrlf
qTempMonthOn = false
end if
response.write maanedlang(month(arrDato(m))) & vbcrlf
qTempMonth = month(arrDato(m))
response.write "<div style='display:none' id='y" & qtemp & "'>"
qTempMonthOn = true
qtemp = qtemp +1
end if

if not qTempDay = day(arrDato(m)) then
response.write ugedag(Weekday(arrDato(m),VbMonday)) &
day(arrDato(m)) & ". " & maaned(month(arrDato(m))) & vbcrlf
qTempDay = day(arrDato(m))
qtemp = qtemp +1
end if
end if

Next

if qTempMonthOn = true then
response.write "</div>" & vbcrlf
qTempMonthOn = false
end if
if qTempYearOn = true then
response.write "</div>" & vbcrlf
qTempYearOn = false
end if
End Function

response.write ThreadsDate(0)


Jeg har selvfølgeling funktionerne "maanedlang", "maaned" og "ugedag"
øverst til at vælge det rigtige format for mig.

Christian

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Jørn Andersen (04-10-2008)
Kommentar
Fra : Jørn Andersen


Dato : 04-10-08 20:37

On 04 Oct 2008 11:53:12 GMT, Christian Kragh <tursoe@gmail.com> wrote:

>Det jeg har fundet frem til er føldende sql sætning og funktion:
>
>strSQL = "Select distinct dato from tblBilleder order by dato"
>Set rs = Conn.Execute(strSQL)
>
>'' Gem data som kommasepareret liste
>Do while not rs.eof
> arrDato = arrDato & "," & rs("dato")
> rs.MoveNext
>Loop
>
>'' Lav arrays med data
>arrDato = Split(arrDato,",")

Det er lidt af en omvej:
Set rs = Conn.Execute(strSQL)
arrDato = rs.getrows
- giver dig et array direkte - og hurtigere.

Check lige selv, om arrayets dimensioner "vender rigtigt".

Good luck!

--
Jørn Andersen,
Brønshøj

Christian Kragh (06-10-2008)
Kommentar
Fra : Christian Kragh


Dato : 06-10-08 08:24

> Det er lidt af en omvej:
> Set rs = Conn.Execute(strSQL)
> arrDato = rs.getrows
> - giver dig et array direkte - og hurtigere.

Man skal jo lærer så længe man lever, så tak for inputtet.

Jeg prøver det straks.

Det er et script jeg har lavet til at læse filer fra mange mapper med
undermapper. Derfor brugte jeg en lykke til at lave mit array.

Christian

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Christian Kragh (06-10-2008)
Kommentar
Fra : Christian Kragh


Dato : 06-10-08 08:39

> Det er lidt af en omvej:
> Set rs = Conn.Execute(strSQL)
> arrDato = rs.getrows
> - giver dig et array direkte - og hurtigere.

Hvis man så har flere array man kaver på en gang?

strSQL = "Select * from tblmenu order by Titel"
Set rs = Conn.Execute(strSQL)



'' Gem data som kommasepareret liste
Do while not rs.eof

arrRID = arrRID & "," & rs("RID")
arrDID = arrDID & "," & rs("id")
arrTIT = arrTIT & "," & rs("titel")
arrURL = arrURL & "," & rs("url")

rs.MoveNext
Loop

'' Lav arrays med data
arrRID = Split(arrRID,",")
arrDID = Split(arrDID,",")
arrTIT = Split(arrTIT,",")
arrURL = Split(arrURL,",")

Det kan jeg ikke få til at virke.

Det med en post virker fint.

Christian


--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

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

Månedens bedste
Årets bedste
Sidste års bedste