Avatar billede inkognito1 Nybegynder
29. november 2000 - 16:19 Der er 12 kommentarer og
1 løsning

Select fra dato til dato !!

Håber en kan hjælpe her.

I min database er der oprettet to felter en Dato1 & dato2. Henholdsvis Start og slut dato.

Hvordan laver jeg ud fra dags dato at den kun vælger dataen indenfor de to datoer incl begge.

Har lavet dette men funker ikke 100 % efter hensigten.

--------------

date1 = date

--------------
strQuery = \"SELECT * FROM nyheder where dato1 >= \'\" & date1 & \"\' AND dato2 <= \'\"& date1 &\"\' \"
--------------
Avatar billede medjeti Nybegynder
29. november 2000 - 16:27 #1
Prøv

\"SELECT * FROM nyheder where \'\" & dato1 & \"\' BETWEEN dato1 AND dato2;\"
Avatar billede inkognito1 Nybegynder
29. november 2000 - 16:49 #2
det skal ikke kun være dem imellem. Der kan jo være nogen der er oprettet før. Idet der er nogen der også bliver skrevet ind før de skal køre.

De skal så først komme frem på den dato hvor start er sat til.
Avatar billede medjeti Nybegynder
29. november 2000 - 17:56 #3
Ok, der skulle have stået

\"SELECT * FROM nyheder where \'\" & Date(Now) & \"\' BETWEEN dato1 AND dato2;\"

= Vælg alle nyheder hvor start-datoen er FØR idag og slut-datoen er EFTER idag.

(ikke 100 på at man kan selecte på den måde, men i princippet skulle det virke)
Avatar billede medjeti Nybegynder
29. november 2000 - 18:33 #4
Nope den går ikke ...
Avatar billede inkognito1 Nybegynder
29. november 2000 - 18:49 #5
hvad mener du ? Har du testet det ?
Avatar billede medjeti Nybegynder
29. november 2000 - 22:00 #6
Jep jeg har testet...

Jeg er måske bange for, at man ikke kan SQL\'e sig ud af den (hvis jeg tar fejl vil jeg da gerne høre hvordan man gør)
Jeg kan se to muligheder:

1.
Selecte alle nyheder og kun vise dem der overholder kriterierne... altså:

strQuery = \"SELECT * FROM Nyheder\"
Set RS = MyConn.Execute(strQuery)

Do While Not RS.EOF
  If DateDiff(\"d\", Now, RS(\"dato1\")) < 0 And DateDiff(\"d\", Now, RS(\"dato2\")) > 0 Then
  \'Vis nyheden
  End If
  RS.MoveNext
Loop

Ikke en optimal løsning... det bliver nok lidt tungt hvis der er mange nyheder i databasen.

2.
Tilføje en binær række i tabellen (aktiv eller ej). På den første session hver dag går du så ind og tjekker hvert enkelt record for om det skal aktiveres eller ej:

strQuery = \"SELECT (ID, Dato1, Dato2) FROM Nyheder\"
Set RS = MyConn.Execute(strQuery)

Do While Not RS.EOF
  If DateDiff(\"d\", Now, RS(\"dato1\")) < 0 And DateDiff(\"d\", Now, RS(\"dato2\")) > 0 Then
  strQuery = \"UPDATE Nyheder SET Aktiv=True WHERE ID=\'\" & RS(\"ID\") & \"\'\"
  Set Update = MyConn.Execute(strQuery)
  Else
  strQuery = \"UPDATE Nyheder SET Aktiv=False WHERE ID=\'\" & RS(\"ID\") & \"\'\"
  Set Update = MyConn.Execute(strQuery)
  RS.MoveNext
Loop

... Lidt mere bøvlet end løsning 1, men mere holdbar i længden, tror jeg ...
Avatar billede medjeti Nybegynder
29. november 2000 - 22:04 #7
Ups, sparede lige en End If før den sidste RS.MoveNext
Avatar billede flemming Nybegynder
29. november 2000 - 22:24 #8
Hvis dato1 er start og dato2 er slut er betingelsen (logisk udtryk) i din SQL sætning også forkert. Betingelsen vil aldrig være fyldt (du har vist fået byttet rundt på dem ;=)

noget a la:

strNow = Day(Now()) &\"-\" &Month(Now()) &\"-\" &Year(Now())

strQuery = \"SELECT * FROM nyheder where \"&strNow &\">=Date1 AND \" &strNow &\"<=\" &date2
Avatar billede medjeti Nybegynder
29. november 2000 - 22:46 #9
Flemming >> Rigtigt, der er byttet rundt på de to... MEN jeg kan nu stadig ikke få den til at æde en \"større end / mindre end\"-sammenligning når det drejer sig om datoer...
Hvis det KAN lade sig gøre er det selvfølgelig det man skal gøre...
Avatar billede inkognito1 Nybegynder
30. november 2000 - 11:47 #10
En der ved om det kan lade sig gøre ???
Avatar billede flemming Nybegynder
30. november 2000 - 21:07 #11
Har kigget mine moduler igennem - og fundet et eksempel - som virker, her benyttes # tegn (access database), prøv med:

strNow = &\"# &Year(Now()) &\"-\" &Month(Now()) &\"-\" &Day(Now()) &\"#\"

Avatar billede medjeti Nybegynder
01. december 2000 - 23:30 #12
Flemming >> Jep, det virker!
Kan du forklare hvorfor, hehe? Hvad gør #\'erne?
Og burde strNow = \"#\" & Date & \"#\" ikke også virke? (Hvilket det ikke gør...)
Avatar billede dkkarpen Nybegynder
04. december 2000 - 23:59 #13
Hele humlen er at SQLServer skal fodres med \' mens Access skal fodres med # Så nemt er det...
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