/ 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
Datoproblem
Fra : Anders


Dato : 04-01-08 15:01

God eftermiddag

Jeg har et problem med datoer i en kalender på min hjemmeside.

Ud fra en Access-database trækker jeg data ud.

Databasen er opbygget således:
tblKalender
ID | autonummerering (primær nøgle)
Dato | dato og klokkeslæt (kort datoformat)
Tid | Tekst
Medlem | Tekst
Beskrivelse | Tekst

Jeg bruger følgende query:
select top 3 * from tblKalender where Dato>=#" & Date() & "# order by dato,
tid desc

Men:
Ud fra følgende data:
19 | Nytårstur | 01-01-2008 | 12:00 | ...
20 | Generalforsamling | 28-01-2008 | 19:00 | ...
21 | New Balance Halvmarathon | 23-03-2008 | 13:00 | ...
22 | Limfjordsløbet | 18-05-2008 | 11:00 | ...
23 | Faklen | 11-04-2008 | 10:00 | ...

.... får jeg kun udtrukket rækkerne med ID 22 og 23. Jeg mangler altså 20 og
21.

Den første tanke er, at serveren bytter om på måned og dag. Jeg har derfor
sat Session.LCID til 1030, men uden at det ændrer noget.

Hvad kan jeg gøre?

Mvh.
Anders



 
 
Allan Vebel (06-01-2008)
Kommentar
Fra : Allan Vebel


Dato : 06-01-08 22:52

Anders skrev:

> derfor sat Session.LCID til 1030

Prøv med 1033

--
Allan Vebel
http://html-faq.dk
http://vebel.dk



Jørn Andersen (07-01-2008)
Kommentar
Fra : Jørn Andersen


Dato : 07-01-08 00:24

On Fri, 4 Jan 2008 15:01:01 +0100, "Anders" <andersusenet@hotmail.com>
wrote:

>God eftermiddag
>
>Jeg har et problem med datoer i en kalender på min hjemmeside.
>
>Ud fra en Access-database trækker jeg data ud.
>
>Databasen er opbygget således:
>tblKalender
> ID | autonummerering (primær nøgle)
> Dato | dato og klokkeslæt (kort datoformat)
> Tid | Tekst
> Medlem | Tekst
> Beskrivelse | Tekst

Hvorfor putter du dato og tid i to forsk. felter - og har tid i
tekst-format. For mig virker det som noget "snask"

Desuden: Databasen gemmer ikke i et bestemt dato-*format*, men som en
dato-tid-værdi. Det kan så evt. *vises* i et bestemt format.

Et af de vigtigste råd for at undgå problemer i ASP med dato/tid er at
håndtere dato/tid som *værdier* og glemme alt om formatet, indtil de
skal vises.

>Jeg bruger følgende query:
>select top 3 * from tblKalender where Dato>=#" & Date() & "# order by dato,
>tid desc

Derfor er #-angivelser også noget "snask" - # angiver i virkeligheden en
tekststreng og ikke en dato værdi.

Og da Access i forvejen har dato-funktioner indbygget, så er der ingen
grund til at bruge (VBScript-)ASP-værdien af Date - du kan lige så nemt
(læs: lettere) bruge Access-funktionen:

"... WHERE Dato >= Date() ORDER BY ..."

>Men:
>Ud fra følgende data:
>19 | Nytårstur | 01-01-2008 | 12:00 | ...
>20 | Generalforsamling | 28-01-2008 | 19:00 | ...
>21 | New Balance Halvmarathon | 23-03-2008 | 13:00 | ...
>22 | Limfjordsløbet | 18-05-2008 | 11:00 | ...
>23 | Faklen | 11-04-2008 | 10:00 | ...
>
>... får jeg kun udtrukket rækkerne med ID 22 og 23. Jeg mangler altså 20 og
>21.

Nej, den burde vise 21, 22 og 23, når du har TOP 3

>Den første tanke er, at serveren bytter om på måned og dag. Jeg har derfor
>sat Session.LCID til 1030, men uden at det ændrer noget.

Den slags slipper du for, når du kun beskæftiger dig med
dato/-tid-*værdier*

Hvis du ikke lige skal bruge Date, Now (de indbyggede værdier), så brug
Dato/tid-funktionerne - se:
<url: http://www.asp-faq.dk/article/?id=98>

Good luck!

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

Anders M (09-01-2008)
Kommentar
Fra : Anders M


Dato : 09-01-08 11:08

"Jørn Andersen" <jorn@jorna.dk> wrote in message
news:p0o2o35ld9f8frp6rnsbig4mn4ejm555v8@4ax.com...
> Hvorfor putter du dato og tid i to forsk. felter - og har tid i
> tekst-format. For mig virker det som noget "snask"

Jeg er enig i, at min viden og brugsmønstre i ASP/SQL/Access er noget
"snask" rørt sammen gennem noget tid med "trial and error" og løse råd fra
diverse personer

Men netop tid-feltet foretrækker jeg at have i tekst-format, da det i
fremtiden kunne tænkes at skulle indeholde f.eks. "19:00 - 20:00" eller
"19:00 for børn, 20:00 for voksne".

> Desuden: Databasen gemmer ikke i et bestemt dato-*format*, men som en
> dato-tid-værdi. Det kan så evt. *vises* i et bestemt format.
>
> Et af de vigtigste råd for at undgå problemer i ASP med dato/tid er at
> håndtere dato/tid som *værdier* og glemme alt om formatet, indtil de
> skal vises.

Hvad mener du med *værdier*?

>>Jeg bruger følgende query:
>>select top 3 * from tblKalender where Dato>=#" & Date() & "# order by
>>dato,
>>tid desc
>
> Derfor er #-angivelser også noget "snask" - # angiver i virkeligheden en
> tekststreng og ikke en dato værdi.
>
> Og da Access i forvejen har dato-funktioner indbygget, så er der ingen
> grund til at bruge (VBScript-)ASP-værdien af Date - du kan lige så nemt
> (læs: lettere) bruge Access-funktionen:
>
> "... WHERE Dato >= Date() ORDER BY ..."

Super. Tak for tippet.

> Den slags slipper du for, når du kun beskæftiger dig med
> dato/-tid-*værdier*

Kan du ikke lige forklare hvad du mener med dato/tid-værdier? I
Access-databasen er Dato-feltet jo netop i formatet "Dato og klokkeslet".

Iøvrigt tak for svaret.

Mvh.
Anders



Jørn Andersen (09-01-2008)
Kommentar
Fra : Jørn Andersen


Dato : 09-01-08 15:34

On Wed, 9 Jan 2008 11:08:06 +0100, "Anders M" <andersusenet@hotmail.com>
wrote:

>> Den slags slipper du for, når du kun beskæftiger dig med
>> dato/-tid-*værdier*
>
>Kan du ikke lige forklare hvad du mener med dato/tid-værdier? I
>Access-databasen er Dato-feltet jo netop i formatet "Dato og klokkeslet".

Det jeg mener er, at uanset *format*, så indeholder feltet en bestemt
*værdi*. Selv om du fx har sat formatet til kun at vise dato (og ikke
tid), så indeholder feltet stadig både en dato- og en tidsværdi.
Eller: Uanset om du har sat formatet til at vise fx "1-1-2008 12:30:00"
eller "1. januar 2008 12:30:00" - så er værdien i feltet den samme.

Så mit klare råd er, at uanset hvilket format, du har sat feltet til at
vise, så bør du glemme alt om formatet, når du laver beregninger etc. på
feltet.
Dels slipper du for "sprog-problemer" (jvf. sidste indlæg), dels kan du
bruge Access' indbyggede dato-tid-funktioner (fx DateAdd, DateDiff
osv.).
Så hovedreglen er: Behandl dato/tid som dato/tid - ikke som
tekst-strenge. Det sparer dig for en masse problemer i længden.

Good luck!

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

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

Månedens bedste
Årets bedste
Sidste års bedste