"Jørn Andersen" <jorn@jorna.dk> skrev i en meddelelse
news:is7r63h7v8u486j9fktknidmrpv0klihmn@4ax.com...
> On Mon, 11 Jun 2007 11:23:32 +0200, "Claus Skaarup \(Arbejde\)"
> <claus@limfjordsteatret.fejl> wrote:
>
>>"Claus Skaarup (Arbejde)" <claus@limfjordsteatret.fejl> skrev i en
>>meddelelse news:466d05a8$0$224$edfadb0f@dread15.news.tele.dk...
>>> Når jeg kalder min side med : index.asp?pid=kn07&dto=12-10-2007
>>>
>
> Der er mange faldgruber i din kode - den første er her:
>>> og sætter: showdate = request.querystring("dto")
>
> Hvordan sikrer du dig, at det er en gyldig dato?
>
Det drejer sig kun om 10 datoer fra 12.-21. oktober, så de får hver en
(manuelt skrevet) url, der hedder "...?dto=dd-mm-åååå".
>>> Så får jeg en data type mismatch, når jeg henter elementer i min tabel
>>> på
>>> følgende måde:
>
> Den næste er her:
>>> if showdate < "1" then
> Hvad er formålet med denne If?
Det er et forsøg på at få systemet til at vise alle poster, hvis der ikke er
defineret en dato (dto) i url'en. Det virker sådan set fint lige p.t.
> Den giver True, hvis showdate = "12-10-2007"
> - men False, hvis showdate = "01-10-2007"
>
OK. Det kunne være et problem, men er det heldigvis ikke lige i denne
sammenhæng.
>>> kult2007 = "SELECT * FROM uge4207 where Type = '2007'" & " order by
>>> Dato"
>>> else
>>
>>*****nedenstående linie skulle selvf. se sådan ud:
>>
>>> kult2007 = "SELECT * FROM uge4207 where Dato =" & showdate
>
> - som så giver en Sql-streng, som ser sådan ud:
> "SELECT * FROM uge4207 where Dato =12-10-2007"
>
> - men den skulle se sådan ud:
> "SELECT * FROM uge4207 where Dato = #12-10-2007#"
>
> - så den skal ændres til:
> kult2007 = "SELECT * FROM uge4207 where Dato = #" & showdate & "#"
>
> Om det så vil give dig det rigtige resultat er endda ikke helt sikkert -
> det afhænger af, om din ASP-side og din database bruger samme sprog.
>
Jeg TROR det vil virke. Det vil vise sig i morgen, når jeg møder på arbejde
> Jeg vil generelt anbefale at sikre, at de varibale man bruger har en
> fast datatype, dvs. at det der skal være en dato også faktisk er en dato
> + at man navngiver sine varibale, så det fremgår hvilken dtatype, den
> indeholder.
> Det kan man sikre ved at "type-caste" - fx:
> datShowDate = CDate(showdate)
>
> Brug så en dato-til-Sql-funktion til at indsætte i SQL-strengen:
> <url:
http://www.asp-faq.dk/article/?id=98>
> - så kommer du også ud over at skulle tage hensyn til evt.
> sprog-forskelle mellem dit ASP og din database.
>
> Det kan godt være, at det tager lidt ekstra tid i starten, men det
> tjener sig ind i længden.
>
Det er rigtigt. Det er også en god måde at lære på, at man skal arbejde lidt
mere med koden end strengt nødvendigt.
> Good luck!
>
Tak. Og endnu en gang tak for hjælpen Jørn. Jeg lærer noget nyt hver gang du
har været der
Mvh. Claus
- stadig nybegynder, men det hjælper for hver dag