|
| Sql Og sammenligning. Fra : Anders Schrøder |
Dato : 02-07-02 16:38 |
|
Efter at have kæmpet med en række umulige datoformater i et par dage, har
jeg valgt at lave en klamphuggermetode: Jeg laver et ekstra felt med en
yyyymmdd-variabel, jeg så vil bruge til sammenligning. Den laver jeg sådan
her:
dim intDate
dim intDay
dim intMonth
dim intyear
function show_date()
intDate = Date()
intDay = Day(intDate)
intMonth = Month(intDate)
intYear = Year(intDate)
if Len(intDay)=1 Then intDay = "0" & intDay
if Len(intMonth)=1 Then intMonth = "0" & intMonth
End function
Der skal kun spyttes nyheder ud indenfor de sidste fjorten dage, så jeg
laver lidt om...
dim fjorten_dato
fjorten_dato = (intYear&IntMonth&IntDay)-14 (og dén virker fint nok)
....og så prøver jeg ellers:
set rs=dbConn.execute ("select fort_date from nyheder where fort_date <= "&
"'fjorten_dato'")
fjorten_dato er idag tallet 20020688, og hvis jeg kører ovenstående sql-får
jeg de her tal:
20020702
20020118
20020688
Hvis jeg vender den om (fort_date <= "& "'fjorten_dato), får jeg ingen tal
overhovedet.
...så der er altså noget galt. Jeg fatter ikke, hvorfor de to tal ikke kan
sammenlignes. Mht antallet af gåseøjne og plinger har jeg prøvet det meste,
og når jeg skriver sql-sætningen ud, ser det fint nok ud.
Er der nogen, der er faldet over samme problem, eller er jeg bare meget træt
og har lavet en tåbelig fejl?
Tak for hjælpen
Anders Schrøder
| |
Jørn Andersen (02-07-2002)
| Kommentar Fra : Jørn Andersen |
Dato : 02-07-02 17:32 |
|
On Tue, 2 Jul 2002 17:38:19 +0200, "Anders Schrøder"
<denfedemaade@hotmail.com> wrote:
>dim fjorten_dato
>fjorten_dato = (intYear&IntMonth&IntDay)-14 (og dén virker fint nok)
Hmmm ...
Du trækker et tal fra en tekststreng. Det kan godt være det virker,
men du trækker store veksler på logikken i din kode ...
Brug CInt, CLng, CStr osv. når du vil konvertere mellem
variabel-typer, så er det nemmere at overskue koden og fange fejl.
Desuden: Hvad er forskellen mellem at sammenligne mellem 14 dage før
1. maj og 14 dage før 12. maj?
20020501 - 14 = 20020487
20020512 - 14 = 20020498
- hvis du sammenligner med 25. april:
20020425
- så vil begge tal være større (og det var vel ikke meningen?)
>...og så prøver jeg ellers:
>
>set rs=dbConn.execute ("select fort_date from nyheder where fort_date <= "&
>"'fjorten_dato'")
Du laver størrelsessammenligning med en tekststreng - og tekststrengen
er: 'fjorten_dato'. Altså ikke variablen fjorten_dato.
>fjorten_dato er idag tallet 20020688, og hvis jeg kører ovenstående sql-får
>jeg de her tal:
<snip>
>når jeg skriver sql-sætningen ud, ser det fint nok ud.
Hvordan ser den ud - formentlig noget lignende:
select fort_date from nyheder where fort_date <= 'fjorten_dato'
- mens den burde se således ud:
select fort_date from nyheder where fort_date <= 20020688
>Er der nogen, der er faldet over samme problem, eller er jeg bare meget træt
>og har lavet en tåbelig fejl?
Tjah - jeg tror du er i gang med at gå en omvej for at løse dit
oprindelige problem.
Selvfølgelig kan datosammenligninger bringes til at virke. - Og hvis
du først får det til at virke én gang, så glemmer du det aldrig + du
slipper for at lave sure omveje, når du støder på problemet næste
gang.
Good luck,
Jørn
--
Jørn Andersen,
Brønshøj
| |
Anders Schrøder (02-07-2002)
| Kommentar Fra : Anders Schrøder |
Dato : 02-07-02 19:53 |
|
Hej Jørn.
Du har ret: Der er et problem dér. Faens også...jeg troede at det var tænkt
igennem.
Jeg kan bare ikke finde på en bedre løsning: Selvom jeg bruger Session.LCID
= 1030 går der kludder i sammenligningen.
Hvis du lige kigger et par emner længere oppe, kan du se hvad der har været
galt.
Venligst
Anders Schrøder
Jørn Andersen <jorn@jorna.dk> wrote in message
news:18k3iuo0mgv06o8913354uc4o0gal5ddgi@4ax.com...
> On Tue, 2 Jul 2002 17:38:19 +0200, "Anders Schrøder"
> <denfedemaade@hotmail.com> wrote:
>
> >dim fjorten_dato
> >fjorten_dato = (intYear&IntMonth&IntDay)-14 (og dén virker fint nok)
>
> Hmmm ...
> Du trækker et tal fra en tekststreng. Det kan godt være det virker,
> men du trækker store veksler på logikken i din kode ...
> Brug CInt, CLng, CStr osv. når du vil konvertere mellem
> variabel-typer, så er det nemmere at overskue koden og fange fejl.
>
> Desuden: Hvad er forskellen mellem at sammenligne mellem 14 dage før
> 1. maj og 14 dage før 12. maj?
> 20020501 - 14 = 20020487
> 20020512 - 14 = 20020498
> - hvis du sammenligner med 25. april:
> 20020425
> - så vil begge tal være større (og det var vel ikke meningen?)
>
> >...og så prøver jeg ellers:
> >
> >set rs=dbConn.execute ("select fort_date from nyheder where fort_date <=
"&
> >"'fjorten_dato'")
>
> Du laver størrelsessammenligning med en tekststreng - og tekststrengen
> er: 'fjorten_dato'. Altså ikke variablen fjorten_dato.
>
> >fjorten_dato er idag tallet 20020688, og hvis jeg kører ovenstående
sql-får
> >jeg de her tal:
> <snip>
>
> >når jeg skriver sql-sætningen ud, ser det fint nok ud.
>
> Hvordan ser den ud - formentlig noget lignende:
> select fort_date from nyheder where fort_date <= 'fjorten_dato'
>
> - mens den burde se således ud:
> select fort_date from nyheder where fort_date <= 20020688
>
>
> >Er der nogen, der er faldet over samme problem, eller er jeg bare meget
træt
> >og har lavet en tåbelig fejl?
>
> Tjah - jeg tror du er i gang med at gå en omvej for at løse dit
> oprindelige problem.
> Selvfølgelig kan datosammenligninger bringes til at virke. - Og hvis
> du først får det til at virke én gang, så glemmer du det aldrig + du
> slipper for at lave sure omveje, når du støder på problemet næste
> gang.
>
>
> Good luck,
> Jørn
>
> --
> Jørn Andersen,
> Brønshøj
| |
Anders Schrøder (02-07-2002)
| Kommentar Fra : Anders Schrøder |
Dato : 02-07-02 19:55 |
|
Ups! Jeg overså at det var dig, der svarede dér!
Sorry!
Anders Schrøder
Jørn Andersen <jorn@jorna.dk> wrote in message
news:18k3iuo0mgv06o8913354uc4o0gal5ddgi@4ax.com...
| |
Peter Lykkegaard (03-07-2002)
| Kommentar Fra : Peter Lykkegaard |
Dato : 03-07-02 21:03 |
|
"Anders Schrøder" <denfedemaade@hotmail.com> wrote in message
news:xWjU8.3169$I52.44562@news010.worldonline.dk...
>
> Efter at have kæmpet med en række umulige datoformater i et par dage, har
> jeg valgt at lave en klamphuggermetode:
Hvis du bare vil hente poster fra de sidste fjorten, hvad er der så i vejen
med at lade databasen udføre _al_ arbejdet?
Du skriver ikke hvilken database du kører på, såehh?
mvh/Peter Lykkegaard
| |
|
|