[ASP/SQL] Datepart kwartaal probleem

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

  • Pin0
  • Registratie: November 2002
  • Niet online
Met de volgende code probeer ik alle records van het eerste kwartaal uit de tabel te halen.

code:
1
2
SQL = "SELECT * FROM tbl_gewerkte_uren WHERE (Datepart(""k"";[datum]) = 1)"
set uren_gewerkt_tot = Session("connection").execute(SQL)


het datepart gedeelte heb ik uit de acces-help functie. Op tweakers zijn er heel wat topics over asp/sql datumzaken maar toch kom ik er niet uit. De dubbele aanhalingstekens zijn nodig omdat ie anders het niet als string ziet. Heb alle mogelijkheden met aanhalingstekens wel gebruikt volgens mij.

Als foutmelding zegt hij:
Syntax error in query expression 'Datepart("k";[datum]) = '1')'.

Wat doe ik niet goed?


database = acces2000, en iis 5

Mijn Lego Mocs - LEGO idea: The Motorcycle Garage


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 17:45

gorgi_19

Kruimeltjes zijn weer op :9

Om te beginnen: NOOIT een connection object opslaan in een session.

Verder kan je ook een datum aangeven in je Where statement, aangezien je weet wanneer een kwartaal begint en eindigt.

[ Voor 50% gewijzigd door gorgi_19 op 12-11-2004 12:10 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Pin0
  • Registratie: November 2002
  • Niet online
datepart lijkt zo'n mooie oplossing ook omdat ik straks ook op weeknummer wil selecteren. Ik wil dus graag weten of het met datepart kan? En zo ja hoe?

Waarom geen connection object in een session? Ik dacht scheelt serverlaod omdat hij dan niet steeds connectie hoeft te maken. ('t is trouwens een intranet met ongeveer 30 gebruikers)

Mijn Lego Mocs - LEGO idea: The Motorcycle Garage


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 17:45

gorgi_19

Kruimeltjes zijn weer op :9

Pin0 schreef op 12 november 2004 @ 12:22:
Waarom geen connection object in een session? Ik dacht scheelt serverlaod omdat hij dan niet steeds connectie hoeft te maken. ('t is trouwens een intranet met ongeveer 30 gebruikers)
Omdat een connection dan vrijgegeven wordt bij het afsluiten van een sessie (20 minuten na de laatste pageview van een sessieid. En aangezien het aantal connecties open wordt gehouden en je een beperkt aantal connecties heb, kan je het wel raden wat er gebeurd.

30x F5'en met cookies disabled blaast je applicatie voor 20 minuten op :)

[ Voor 12% gewijzigd door gorgi_19 op 12-11-2004 12:25 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Pin0
  • Registratie: November 2002
  • Niet online
Je hebt gelijk wat de connectie betreft, dat zal ik veranderen, bedankt voor de tip.

Nu weer terug naar de datepart vraag... want daar ging het mij in eerste instantie om. :)

Mijn Lego Mocs - LEGO idea: The Motorcycle Garage


  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

Volgens de Transact-SQL manual moet t
DATEPART
Returns an integer representing the specified datepart of the specified date.
Syntax
DATEPART ( datepart , date )
zijn ...

als ik
select * from [tabel] where datepart("q",[datum])=1
in m'n query analyser gooi krijg ik iig gewoon een result set terug ...

[ Voor 9% gewijzigd door TheRookie op 12-11-2004 12:51 . Reden: niet eigen tabelnamen laten staan :| ]


Verwijderd

code:
1
SQL = "SELECT * FROM tbl_gewerkte_uren WHERE (Datepart(""k"",[datum]) = 1)"


, ipv ;

zag dat ik net te laat was. maar dan toch nog even een tip
Als je een probleem heb in Access met queries:

Doe bij query -> new query -> design mode en dan linksboven in voor SQL mode kiezen.
Dan had je ook gezien dat daar je query fout ging en nu goed

[ Voor 61% gewijzigd door Verwijderd op 12-11-2004 12:48 . Reden: tip erbij ]


  • Mischa_NL
  • Registratie: Mei 2004
  • Laatst online: 01-02-2023
code:
1
SQL = "SELECT * FROM tbl_gewerkte_uren WHERE Datepart(""k"",#[datum]#) = 1"


Datums tussen hekjes zetten helpt ;)...
Haakjes waren ook overbodig. :)

Edit/ Als je dit doet krijg je ook het kwartaal van 2003 2002 2001 enzovoort.
ik neama aan dat dat niet de bedoeling is.

code:
1
2
SQL = "SELECT * FROM tbl_gewerkte_uren "
SQL = SQL & "WHERE Datepart(""k"",#[datum]#) = 1 AND Datepart(""yyyy"",#[datum]#) = "& year(now())


Zo krijg je ze alleen van het huidige jaar!

[ Voor 89% gewijzigd door Mischa_NL op 12-11-2004 12:58 ]


  • Pin0
  • Registratie: November 2002
  • Niet online
Het werkt:
code:
1
SQL = "SELECT * FROM tbl_gewerkte_uren WHERE Datepart(""q"",[datum]) = 1"


Het moet een q zijn. En natuurlijk komen er meer where condities bij, gebruiker, jaar etc...

bedankt allemaal.

Mijn Lego Mocs - LEGO idea: The Motorcycle Garage

Pagina: 1