/ 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
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



Søg
Reklame
Statistik
Spørgsmål : 177503
Tips : 31968
Nyheder : 719565
Indlæg : 6408544
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste