[SQL] access datum vs. huidige datum

Pagina: 1
Acties:
  • 282 views sinds 30-01-2008
  • Reageer

  • chaozz
  • Registratie: Juni 2000
  • Laatst online: 23-08 22:57
ik ben nu al een heel tijd bezig om dit voor elkaar te toveren, maar tot nu toe zonder succes. de bedoeling is dit: als mensen een project nomineren voor verwijdering, mag dit pas minimaal 1 dag later in een overzicht verschijnen, zodat het project definitief kan worden verwijderd door een supervisor.

het veld "projectverwijderdop" is van het type Short date, en ik gebruik een Access97 database.

de code:
code:
1
2
3
4
    SQL="SELECT projectnaam, projectverwijderddoor, projectverwijderdop, projectverwijderdrede, projectid "
    SQL=SQL & "FROM project "
    SQL=SQL & "WHERE (projectverwijderdop <> #"& date & "# AND projectverwijderd) "
    SQL=SQL & "ORDER BY projectverwijderdop DESC"

het probleem is, dat alle projecten waar "projectverwijderd" True is, worden getoond. ook al komt de Date() overeen met "projectverwijderdop", terwijl hij alleen projecten moet tonen die NIET VANDAAG zijn verwijderd (date <> projectverwijderdop).

wat gaat er fout?

PS: een datum moet bij Access toch tussen # ipv ' ?? met enkele quotes krijg ik meteen een data mismatch error.

chaozz.nl | RetroGameCouch


  • Bally
  • Registratie: November 2001
  • Laatst online: 24-08 11:28

Bally

1200 + 1500 Wp

Wat ik er van weet (en das wel wat) is het altijd gekloot met datums ed. Misschien is het voor jou ook een mogelijkheid om datums in de database op te slaan als getallen!!! dat werkt een stuk makkelijker en hoef je niet meer moeilijk te doen met wel #-jes of niet enzo!!! probeer dat maar eens!!!

Hoop is uitgestelde teleurstelling


  • chaozz
  • Registratie: Juni 2000
  • Laatst online: 23-08 22:57
Op donderdag 02 mei 2002 09:08 schreef Bally het volgende:
Wat ik er van weet (en das wel wat) is het altijd gekloot met datums ed. Misschien is het voor jou ook een mogelijkheid om datums in de database op te slaan als getallen!!! dat werkt een stuk makkelijker en hoef je niet meer moeilijk te doen met wel #-jes of niet enzo!!! probeer dat maar eens!!!
dat zou betekenen dat ik de huidige datum ook moet converteren naar een getal. misschien is een string handiger (ook al zitten ze niet lekker :P) , maar ook dan is een conversie noodzakelijk. ik vindt het ook niet zo'n "mooie" oplossing.

wat ik wil moet toch kunnen met acces97<-->sql/asp?

chaozz.nl | RetroGameCouch


  • chaozz
  • Registratie: Juni 2000
  • Laatst online: 23-08 22:57
-zucht-

dit werkt nu wel:
code:
1
2
3
4
    SQL="SELECT projectnaam, projectverwijderddoor, projectverwijderdop, projectverwijderdrede, projectid "
    SQL=SQL & "FROM project "
    SQL=SQL & "WHERE (NOT projectverwijderdop like '"& date() & "' AND projectverwijderd) "
    SQL=SQL & "ORDER BY projectverwijderdop DESC"

wat een onzin.. maar ik kan weer verder. |:(

chaozz.nl | RetroGameCouch


  • Bally
  • Registratie: November 2001
  • Laatst online: 24-08 11:28

Bally

1200 + 1500 Wp

Ik kan je nog leukere dingen vertellen. Standaard doet sql bij het opslaan van een datum er 2 vanaf trekken. Dus als je volgens ASP/DELPHI 3 mei erin pompt, dan zegt SQL server dat het 1 mei is!!! en waarom?!?!?!??! ik heb echt geen idee. Daarom ben ik ook helemaal afgestapt van het type datum in de database. Als je namelijk een real gebruikt, dan kan je ook de tijd opslaan, dus waarom zou je dan nog moeilijk doen???? In ieder geval succes ermee!

Hoop is uitgestelde teleurstelling


Verwijderd

Format |:(

  • chaozz
  • Registratie: Juni 2000
  • Laatst online: 23-08 22:57
Op donderdag 02 mei 2002 10:51 schreef IJskoud het volgende:
Format |:(
wat format? format c: /q /u /v:idioot ???
of bedoel je de format van mijn datum veld. mag ik je dan wijzen op mijn begin post, waar ik duidelijk vermeld dat ik een Short Date gebruik. deze heeft DEZELFDE FORMAT als de Date() functie van ASP.

inmiddels heb ik het probleem ondervangen door niet meer op Query niveau te filteren op datum, maar de recordset te filteren met het commando DateDiff:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    gevonden = False
    currentdate = date()

    If not(RS.EOF and RS.BOF) then
        RS.MoveFirst
        While not RS.EOF

         lastDate = RS.Fields.Item("shortdate_in_db")

         If DateDiff("d",lastDate,currentdate) <> 0 then
          gevonden = True
          ... print waarden op scherm enzo ...
         End if
            RS.MoveNext
      wend
     if gevonden = False then Response.Write("Geen resultaten gevonden")
     End if

werkt perfect!

chaozz.nl | RetroGameCouch

Pagina: 1