On Wed, 23 Aug 2006 17:01:15 +0200, "bsn" <bsnsnabelaoncabledotdk>
wrote:
>"bsn" <bsnsnabelaoncabledotdk> skrev i en meddelelse
>news:44ec5291$0$134$edfadb0f@dread11.news.tele.dk...
>> Hej NG
>> Jeg har et datofelt(Oprettet) i en database i standardformat(dd-mm-yyyy
>> hh:mm:ss)
Uanset hvad dit dato-*format* er i databasen, så er værdien altid en
"rigtig" dato-tidværdi.
Dvs. der er altid år, måned, dag, time, minut, sekund.
<NB Vigtigt>
Den vigtigste tommelfinger-regel, når man arbejder med datoer mellem
asp-sider og database er *altid* at forespørge på dato-*værdier* -
ikke i et bestemt dato-*format*.
</NB Vigtigt>
På den måde gør man sig uafhængig af forskelle i
land-/sprog-indstillinger de to steder.
>> Nu vil jeg så søge KUN på datoen i feltet...
>>
>> Variabel:
>> Dato=DateSerial(Year(Request.Form.Item("txtDato")),
>> Month(Request.Form.Item("txtDato")), Day(Request.Form.Item("txtDato")))
>>
>> Min sql:
>> Sql="SELECT * FROM qryOmsaetDag Where Oprettet=" & Dato
>>
>> Der returneres ingen poster, men der skal være poster...
>>
>> Kan i lure fejlen...
Fejlen er - som du tilsyneladende også selv har fundet ud af - at de
to værdier ikke er ens: En dato-værdi uden tids-information sætter
tiden til 00:00:00.
Og 23.8.06 11:23:43 er ikke det samme som 23.8.06 00:00:00 :)
>Har prøvet noget andet
>
>Variabel:
>Dato = "#" & Month(Request.Form.Item("txtDato")) & "-" &
>Day(Request.Form.Item("txtDato")) & "-" & Year(Request.Form.Item("txtDato"))
>& "#"
>
>Min sql:
>SELECT * FROM qryOmsaetDag Where DateSerial(Year(Oprettet), Month(Oprettet),
>Day(Oprettet))=#8-21-2006#
Du er på rette spor.
>Dette virker når jeg tester lokalt - localhost...
>Når jeg uploader til mit webhotel, så virker det ikke...
Der er sikkert forskelle på sprog-/lande-indstillingerne på de to
servere. Se evt.:
<url:
http://www.asp-faq.dk/search/?query=&category=5>
Jeg tror den enkleste måde er:
intDag = Day(Request.Form("txtDato"))
intMaaned = Month(Request.Form("txtDato"))
intAar = Year(Request.Form("txtDato"))
[Her skal nu nok have lidt validering, som checker, at du rent faktisk
får tal ud som resultat.)
og Sql'en:
.... WHERE Year(Oprettet) = " & intAar & _
" AND Month(Oprettet) = " & intMaaned & _
" AND Day(Oprettet) = " & intDag & ";"
På den måde sparer du en masse konverteringer og tvivlsomme
dato-formater.
>Kan i hjælpe...
Håber det bringer dig videre.
Good luck!
--
Jørn Andersen,
Brønshøj