28. maj 2006 - 15:26Der 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"
strSQL = "Select * From productrelease where rdTBA=true OR (rdDay >= " & splitdate(0) & " AND rdMonth >= " & splitdate(1) & " AND rdYear >= " & splitdate(2) & ") order by rdProduct_id"
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"
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å...
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.
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 :-)
Synes godt om
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 !?
strSQL = "Select * From productrelease where rdTBA=true OR "&cdate(&"rdDay-rdMonth-rdYear"&)&" >= " & dato & " order by rdProduct_id"
Synes godt om
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.
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.
Synes godt om
Slettet bruger
10. august 2006 - 16:00#20
Lukker spørgsmål, ingen løsning blev fundet.
Synes godt om
Ny brugerNybegynder
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.