Avatar billede Slettet bruger
28. maj 2006 - 15:26 Der er 19 kommentarer og
1 løsning

Find post nyere end Date-90

Jeg har brugt denne kode (øverste) uden problemer, men jeg har nu delt min rdDate (datofelt) op i 3 felter (tal) dato,måned,år for at kunne sætte et årstal ind uden at være tvunget til at skrive dato og måned.
Men hvis jeg sætter de her to koder op imod hinanden så får jeg ikke det samme resultat:
Den første giver: 66 og det skal den også gøre.
Den anden giver: 39.
Hvad har jeg overset her ?

strSQL = "Select * From productrelease where rdDate >= Now-90 OR rdTBA=true order by rdProduct_id"


splitdate = Date-90
splitdate = split(splitdate, "-")

strSQL = "Select * From productrelease where rdTBA=true OR (rdDay >= " & splitdate(0) & " AND rdMonth >= " & splitdate(1) & " AND rdYear >= " & splitdate(2) & ") order by rdProduct_id"
Avatar billede cyberkox Nybegynder
28. maj 2006 - 15:44 #1
Jeg kan ikke helt se hvad du vil med splitdate ?

Har du i din database 3 kolonner, indeholdende:
|day|month|year|

Og du vil ha trukket 90 dage fra eller hvad?
Avatar billede Slettet bruger
28. maj 2006 - 15:51 #2
Ja min har 3 kolonner:
|day|month|year|

og i de fleste poster er alle 3 felter udfyldt, jeg vil så finde de poster der er nyere end "3 måneder tilbage".

Et eksempel:
Dagsdato: 28-5-2006
Dagsdato minus 90 dage: 27-02-2006

Jeg skal så finde alle poster der er nyere end 27-2-2006
Avatar billede cyberkox Nybegynder
28. maj 2006 - 15:58 #3
Du ka jo bruge dateadd:

splitdate = DateAdd("m", -3, date())
splitdate = split(splitdate, "-")
Avatar billede Slettet bruger
28. maj 2006 - 16:10 #4
Ja det er muligt at det gør det samme...
Men mit problem er jo ikke at gå tilbage i tiden, problemet er at den ikke udskriver alle de poster som den skal.

strSQL = "Select * From productrelease where rdTBA=true OR (rdDay >= " & splitdate(0) & " AND rdMonth >= " & splitdate(1) & " AND rdYear >= " & splitdate(2) & ") order by rdProduct_id"
Avatar billede cyberkox Nybegynder
28. maj 2006 - 16:11 #5
Er du sikker på at det ikke virker med dateadd?
Avatar billede Slettet bruger
28. maj 2006 - 16:20 #6
Ja, det giver jo det samme... om man går 3 måneder tilbage eller om man går 90 dage (ca. 3 måneder) tilbage i tiden.

DateAdd("m", -3, date()) - Giver datoen 28-2-2006 som jo kun er 1 dage mindre end Date()-90 og i dette tilfælde gøre det ikke nogen forskel da der ikke ligger nogle poster i de dage, så uanset hvordan man henter datoen så skal der udskrives 66 poster.
Så jeg ved at problemet er den måde jeg tjekker databasen på...
Avatar billede cyberkox Nybegynder
28. maj 2006 - 16:30 #7
Hmm, jae, det må det snart være.

Hmm, prøv at smide CInt() omkring splitdate(x) i sql-kaldet
Avatar billede Slettet bruger
28. maj 2006 - 16:39 #8
Det gør ingen forskel...
Avatar billede Slettet bruger
28. maj 2006 - 16:45 #9
Jeg har fundet problemet... Nu skal jeg bare finde løsningen, problemet er:

rdDay >= " & splitdate(0) & " AND rdMonth >= " & splitdate(1) & " AND rdYear >= " & splitdate(2) & "

Jeg spørger jo hele tiden >= det vil sige at de datoer der er under ikke kommer med selv om de er indenfor den rigtige periode...
Avatar billede cyberkox Nybegynder
28. maj 2006 - 16:50 #10
Jamen, hvilke poster vil du gerne have frem?
Avatar billede Slettet bruger
28. maj 2006 - 16:54 #11
Alle poster der er nyere end 27-2-2006 (Date()-90)
Du kan næsten se hvad det er jeg vil lave her:
strSQL = "Select * From productrelease where rdDate >= Now-90 OR rdTBA=true order by rdProduct_id"

Det eneste jeg har gjort er at jeg har fjernet rdDate og har lavet 3 nye kolonner, hvor dato/måned/år står i hver sit felt, istedet for samlet som man normalt gør i dato-felter.
Avatar billede cyberkox Nybegynder
29. maj 2006 - 00:23 #12
Hmm, jo, ser du, du er nok nødt til at fjerne dagen, eller lave noget med den, for det er der den går galt. Prøv lige:

rdMonth >= " & splitdate(1) & " AND rdYear >= " & splitdate(2) & "

eller måske noget med:

dato = DateAdd("m", -3, date())
strSQL = "Select * From productrelease where rdTBA=true OR cdate(rdDay&"-"&rdMonth&"-"&rdYear) >= " & dato & " order by rdProduct_id"

Prøv det :-)
Avatar billede Slettet bruger
29. maj 2006 - 08:39 #13
Dit første forslag hjælper lidt, men det er ikke nok...
Dit andet forslag ser faktisk ud til at gøre det den skal, når man kigger på koden, men cdate delen giver følgende fejl:

Typer stemmer ikke overens: '[string: "Select * From produc"]'

Hvis jeg fjerner 'OR cdate(rdDay&"-"&rdMonth&"-"&rdYear) >= " & dato & "' så forsvinder fejlen også, så hvad mangler der i den linie !?
Avatar billede cyberkox Nybegynder
29. maj 2006 - 09:49 #14
Prøv lige at skrive hele sql'en herind inden den blir udført og udskriv den også lige i asp
Avatar billede cyberkox Nybegynder
29. maj 2006 - 09:55 #15
Jeg tror ikk det her virker, men prøv ;-)

strSQL = "Select * From productrelease where rdTBA=true OR "&cdate(&"rdDay-rdMonth-rdYear"&)&" >= " & dato & " order by rdProduct_id"
Avatar billede Slettet bruger
29. maj 2006 - 09:56 #16
Jeg er ikke helt sikker på hvad du vil have men her er min SQL:

dato = DateAdd("m", -3, date())
strSQL = "Select * From productrelease where rdTBA=true OR cdate(rdDay&"-"&rdMonth&"-"&rdYear) >= " & dato & " order by rdProduct_id"  <-----------line 33
Set rs = ConnMain.Execute(strSQL)

Og fejlen:
Der opstod en Microsoft VBScript-kørselsfejl (0x800A000D)
Typer stemmer ikke overens: '[string: "Select * From produc"]'
/main.asp, line 33

Så vidt jeg kan se er alle henvisninger til databasen stavet rigtigt.
Avatar billede cyberkox Nybegynder
29. maj 2006 - 09:58 #17
Ja, okay, den skal også give fejl :)

Prøv lige den sql fra 29/05-2006 09:55:19:

strSQL = "Select * From productrelease where rdTBA=true OR "&cdate(&"rdDay-rdMonth-rdYear"&)&" >= " & dato & " order by rdProduct_id"
Avatar billede Slettet bruger
29. maj 2006 - 09:58 #18
Den virker ikke, kommer med en syntaksfejl...
Avatar billede cyberkox Nybegynder
29. maj 2006 - 10:04 #19
Hmm, jeg tænker lidt mere. Lige nu har jeg ingen idéer, andet som lidt fusk med at undlade at tage dagen med, men det kan jo give op til 2 mdr's difference, så det holder jo nok ikke helt.
Avatar billede Slettet bruger
10. august 2006 - 16:00 #20
Lukker spørgsmål, ingen løsning blev fundet.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester