SQL/ASP syntax vraag - Datediff

Pagina: 1
Acties:
  • 63 views sinds 30-01-2008

  • blijhoofd_bennie
  • Registratie: Maart 2000
  • Niet online

blijhoofd_bennie

Wasser für alle!!

Topicstarter
Heb een stomme en simpele vraag. Zit nu al tijden op got en google te zoeken, maar mijn zoekresultaten kwamen waar eens op niets uit.

Hier de simpele code.

Set rsTest = Server.CreateObject ("ADODB.Recordset")
rsTest.ActiveConnection = dbCon
sqlTest = "SELECT * FROM Test WHERE DATEDIFF(dd,'" & now()& "','12-05-2003') >1 "
Set rsTest = dbCon.Execute (sqlTest)

Nou krijg ik de foute irritante foutmelding:
Er zijn te weinig parameters. Het verwachte aantal is: 1.
M.a.w. ik ben dus wat vergeten, haakjes, punten of wat dan ook. Ik weet dit is een domme vraag maar zien jullie wat ik zo fout doe, wat ben ik vergeten?

(of deze code een resultaat weergeeft is even niet van belang hij moet werken :()

[ Voor 6% gewijzigd door blijhoofd_bennie op 02-05-2003 01:25 ]


  • j_du_pee
  • Registratie: Maart 2000
  • Laatst online: 23-09-2024

j_du_pee

du pain, du vin, du pee

anders probeer je het door die datediff in vbscript uit te voeren:
SELECT * from Test WHERE veldnaam < '" & dateadd(dd,date(),-1) & "'
(weet niet precies de syntax uit het hoofd, maar gaat om het idee :) )

misschien staat je pc op engelstalig ingesteld en verwacht je DB een datum als "2/14/2003" of zelfs "2/14/2003 AM 9:15"

last but not least; welke database gebruik je eigenlijk :?

kaart != map && bottel != fles
Wacht op antwoord


  • blijhoofd_bennie
  • Registratie: Maart 2000
  • Niet online

blijhoofd_bennie

Wasser für alle!!

Topicstarter
j_du_pee schreef op 02 mei 2003 @ 01:52:
anders probeer je het door die datediff in vbscript uit te voeren:

[...]

(weet niet precies de syntax uit het hoofd, maar gaat om het idee :) )

misschien staat je pc op engelstalig ingesteld en verwacht je DB een datum als "2/14/2003" of zelfs "2/14/2003 AM 9:15"

last but not least; welke database gebruik je eigenlijk :?
Mijn OS moet normaal NL zijn, Win XP prof. NL.
De database is access 2000 (correct dit was ik vergeten te melden |:( )
Mmmh de dateadd functie wil nog niet echt werken, em kijken wat daar de correcte syntax van is :s (i know gaat echt lekker hier..), maar het gaat mij trouwens wel om de syntax :)

Maar als je het niet erg vind zou ik ook graag een antwoord op mijn eerste vraag hebben, wil het nu gewoon weten (if you know what i mean :)). Maar denk dat ik nu eerst maar eens mijn bed op zoek, lijkt me net zo gezond.

[ Voor 5% gewijzigd door blijhoofd_bennie op 02-05-2003 02:13 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Doe lui, laat ASP het niet oplossen, maar Access.. Deze heeft ook een now() functie.

Een antwoord op je eerste vraag? Niet te zeggen, je moet de output van je variabele sqlTest op het scherm zetten en hier neerzetten, als je wilt weten of we er wat zinnigs over kunnen zeggen.

En data (=datums) hebben meestal ook het formaat van #amerikaanse datum#, zodat je landinstellingen eruit kan filteren. (zie het stuk van de hekjes dus)

dateadd gaat idd niet werken; laat me de letters eens door elkaar gooien, levert op: add (to) date :+

[ Voor 88% gewijzigd door gorgi_19 op 02-05-2003 08:23 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • DeverauX
  • Registratie: Februari 2002
  • Niet online

DeverauX

Focus is everything

Er zijn te weinig parameters. Het verwachte aantal is: 1.
Vaak houdt deze melding in dat er simpelweg geen records zijn gevonden die voldoen aan je voorwaardelijke statement.
Als ik je code bekijk is dat ook wel logisch aangezien je voorwaardelijke statement nergens aan getoetst wordt.
ASP:
1
2
3
4
Set rsTest = Server.CreateObject ("ADODB.Recordset")
rsTest.ActiveConnection = dbCon
sqlTest = "SELECT * FROM Test WHERE DATEDIFF(dd,'" & now()& "','DATUM-VELD') >1 "
Set rsTest = dbCon.Execute (sqlTest)

...whatever was distasteful or unpleasant or uncomfortable or painful - music could always soothe that.
All you have to do is reach out to beauty.
Quincy Jones


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Er zijn te weinig parameters. Het verwachte aantal is: 1.
Duidt meestal op een incorrect SQL statement en zegt niets over de gevonden records. Zo ver komt hij niet eens.

[ Voor 5% gewijzigd door gorgi_19 op 02-05-2003 08:54 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • DeverauX
  • Registratie: Februari 2002
  • Niet online

DeverauX

Focus is everything

Als gevolg van een incorrect gebruik van voorwaardelijke statements zijn er geen records gevonden was eigenlijk wat ik bedoelde ;)

...whatever was distasteful or unpleasant or uncomfortable or painful - music could always soothe that.
All you have to do is reach out to beauty.
Quincy Jones


  • Batsies
  • Registratie: Mei 2002
  • Laatst online: 27-01-2022

Batsies

E-Developing

Onderaan op deze link staat precies hoe het moet met de datediff! Suc6 http://www.madness.nl/artikel/artikel.asp?aid=6&page=1

E-Developing


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Batsies schreef op 02 May 2003 @ 09:01:
Onderaan op deze link staat precies hoe het moet met de datediff! Suc6 http://www.madness.nl/artikel/artikel.asp?aid=6&page=1
Da's een VBScript toepassing, terwijl het hier om een SQL-toepassing gaat. Zeker in combinatie met de verschillende landinstellingen levert dit een ander probleem op.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Mogelijke fout:
DATEDIFF verwacht een enkele 'd' als je het verschil in dagen wilt hebben. (MSDN)

[ Voor 44% gewijzigd door Goodielover op 02-05-2003 09:08 ]


  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 14-08 12:38

Crazy D

I think we should take a look.

Behalve dat het voor het verschil in dagen ik dacht ook "d" moet zijn en niet "dd"... DateDiff verwacht een string die aangeeft wat je wilt.... dd moet dus "dd" worden (tussen aanhalingstekens). (iig in mijn Access wel.. where DateDiff("d", datum, now()) is ok, terwijl er bij DateDiff(d, datum, now()) om een parameter value voor d wordt gevraagt.

Exact expert nodig?


  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

foutje (van mij, sorry!)

[ Voor 155% gewijzigd door Goodielover op 02-05-2003 09:44 ]


  • j_du_pee
  • Registratie: Maart 2000
  • Laatst online: 23-09-2024

j_du_pee

du pain, du vin, du pee

gorgi_19 schreef op 02 mei 2003 @ 08:15:
dateadd gaat idd niet werken; laat me de letters eens door elkaar gooien, levert op: add (to) date :+
dat snap ik ook wel :+ Maar dit is een andere benadering voor het probleem, die ook moet werken ;)
IPV te zeggen:
- selecteer ze waarbij het verschil in dagen tov vandaag > 1 is;
- selecteer alles voor gister... (en evt alles na morgen, in dat geval:
SELECT * FROM Test WHERE veldnaam NOT BETWEEN #" & dateadd("dd",1,now) & "# AND #" & dateadd("dd",-1,now) & "#"
maw, als het ene niet lukt, probeer het eens op een andere manier ;)

de syntax van die dateAdd klopt nu wel, en kun je nalezen op www.devguru.com

om 2 u 's nachts gebruik ik misschien te weinig woorden idd ;)

[ Voor 5% gewijzigd door j_du_pee op 02-05-2003 12:04 ]

kaart != map && bottel != fles
Wacht op antwoord


Verwijderd

Set rsTest = Server.CreateObject ("ADODB.Recordset")
rsTest.ActiveConnection = dbCon
sqlTest = "SELECT * FROM Test WHERE DATEDIFF(dd,'" & now()& "','12-05-2003') >1 "
Set rsTest = dbCon.Execute (sqlTest

DATEDIFF is toch VB? dus moet dat niet na een " & komen??

dus

sqlTest = "SELECT * FROM Test WHERE " & DATEDIFF('dd', now(), '12-05-2003') & " >1 "

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op 02 mei 2003 @ 12:18:
Set rsTest = Server.CreateObject ("ADODB.Recordset")
rsTest.ActiveConnection = dbCon
sqlTest = "SELECT * FROM Test WHERE DATEDIFF(dd,'" & now()& "','12-05-2003') >1 "
Set rsTest = dbCon.Execute (sqlTest

DATEDIFF is toch VB? dus moet dat niet na een " & komen??

dus

sqlTest = "SELECT * FROM Test WHERE " & DATEDIFF('dd', now(), '12-05-2003') & " >1 "
:? Wat waarom zou je in VBScript iets op willen halen wat perfect te regelen is alleen een standaard SQL Statement?

Ik ben iig heel benieuw naar de TS. Dit is nl een standaard debugging probleem, met te weinig info. Als de TS z'n query op het scherm zet en deze vervolgens in Access stopt, is hij vrij snel klaar; MS Access geeft dan snel aan waar de fout zit.

[ Voor 27% gewijzigd door gorgi_19 op 02-05-2003 13:48 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • blijhoofd_bennie
  • Registratie: Maart 2000
  • Niet online

blijhoofd_bennie

Wasser für alle!!

Topicstarter
Was ik weer :)
Gogi_19, watvoor info wil je hebben?
Maar in ieder geval hier een paar antwoorden op de vragen:
d of dd maakt niet uit, heb hier een SQL boek en daar staat dd in, maar in msdn staat d of dd.
Heb ook al met # zitten klooien, maar dit heeft tot nu toe niets uitgemaakt.
Er moeten ook geen ' of " om dd (d) heen, dit had ik al eens geprobeerd en nog even het gaat hier om Datediff van SQL en niet vbscript. Zoals Gorgi zegt waarom vbscript het laten doen als SQL het ook mooi kan :).
En mijn foutmelding wordt niet gegenereerd doordat ik recordsets opvraag die er niet zijn.
Heb wel vaker deze fouten, geef ik toe. Vaak door even te zoeken op GoT heb ik het ook gevonden, maar in dit geval dus niet.
Zoals gorgi zegt is gewoon een debug probleem, maar gorgi jij bedoeld dat ik hem moet runnen in access (zoals de query analyzer in SQL server?). Helaas gaat dit niet optimaal werken, omdat de scripts uit mijn SQL boek ook niet direct werken op mijn ASP pagina's (door de andere syntac).

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

blijhoofd_bennie schreef op 02 May 2003 @ 14:12:
Was ik weer :)
Gogi_19, watvoor info wil je hebben?
gorgi_19 schreef op 02 May 2003 @ 08:15:
Niet te zeggen, je moet de output van je variabele sqlTest op het scherm zetten en hier neerzetten, als je wilt weten of we er wat zinnigs over kunnen zeggen.
Heb ook al met # zitten klooien, maar dit heeft tot nu toe niets uitgemaakt.
Wat had je dan als voorbeelden? Wat was het resultaat?
Zoals gorgi zegt is gewoon een debug probleem, maar gorgi jij bedoeld dat ik hem moet runnen in access (zoals de query analyzer in SQL server?). Helaas gaat dit niet optimaal werken, omdat de scripts uit mijn SQL boek ook niet direct werken op mijn ASP pagina's (door de andere syntac).
Verklaar? Syntax moet aardig overeen komen. SQL Server en Access komen niet altijd overeen met elkaar.

Het verschil tussen zit hem verder, afaik tussen soms het gebruik van * (Access), soms % (in 'ASP') als wildchars. Echter, zo een eenvoudige query moet ook wel met Access op te lossen zijn.

En voor de duidelijkheid:
HET IS gorgi_19!!!
* gorgi_19 is erg gesteld op z'n nick.. :+

[ Voor 7% gewijzigd door gorgi_19 op 02-05-2003 14:20 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Jaspertje
  • Registratie: September 2001
  • Laatst online: 12-08 16:04

Jaspertje

Max & Milo.. lief

wat gorgi_19 (SORRY ;) ) bedoelt is, doe eens (of niet.. ??) maar dan nog
ASP.NET Visual Basic:
1
2
3
4
5
6
7
8
Set rsTest = Server.CreateObject ("ADODB.Recordset")
rsTest.ActiveConnection = dbCon
sqlTest = "SELECT * FROM Test WHERE DATEDIFF(dd,'" & now()& "','12-05-2003') >1 "

Response.write SQL
response.end

Set rsTest = dbCon.Execute (sqlTest)


kopieer die SQL en run die dan eens in acces...

[ Voor 67% gewijzigd door Jaspertje op 02-05-2003 14:21 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

gorgie bedoelde dit niet, * gorgi_19 wel.. :+

Maar idd.. Standaard debuggen; variabelen bekijken, opzoeken waar het fout gaat, wat uitgevoerd wordt, etc.

[ Voor 55% gewijzigd door gorgi_19 op 02-05-2003 14:21 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • blijhoofd_bennie
  • Registratie: Maart 2000
  • Niet online

blijhoofd_bennie

Wasser für alle!!

Topicstarter
gorgi_19 schreef op 02 May 2003 @ 14:20:
gorgie bedoelde dit niet, * gorgi_19 wel.. :+

Maar idd.. Standaard debuggen; variabelen bekijken, opzoeken waar het fout gaat, wat uitgevoerd wordt, etc.
Ja dat snap ik ook wel :) (ga het nu nog wel eens proberen), maar wat dacht je dat ik doe? Bedoel waardeer te hulp, maar uuhm ik weet voor bijna 80% zekers dat ik bijv. een ' vergeten ben. En heb al superveel zitten debuggen, haakje hier en daar etc. en zoeken op internet. Maar kon zo niets vinden, snappie?
Maar zoals ik zei mijn script werkt bijv. perfect in SQL query analyzer, maar dan werkt hij niet in ASP.
Maar ik probeer het dan wel eens in access, kijken of die ipv query analyzer uitkomst kan bieden (alhoewel ik die functie nooit gebruik).

[ Voor 26% gewijzigd door blijhoofd_bennie op 02-05-2003 14:30 ]


  • Jaspertje
  • Registratie: September 2001
  • Laatst online: 12-08 16:04

Jaspertje

Max & Milo.. lief

kan het komen omdat je Now() notatie anders is als je database notatie??

probeer het anders een zo (dit inplaats van je Now())
ASP.NET Visual Basic:
1
Day(now()) & "-" & Month(now()) & "-" & Year(now())

[ Voor 19% gewijzigd door Jaspertje op 02-05-2003 14:28 ]


  • blijhoofd_bennie
  • Registratie: Maart 2000
  • Niet online

blijhoofd_bennie

Wasser für alle!!

Topicstarter
Jaspertje schreef op 02 May 2003 @ 14:28:
kan het komen omdat je Now() notatie anders is als je database notatie??

probeer het anders een zo (dit inplaats van je Now())
ASP.NET Visual Basic:
1
Day(now()) & "-" & Month(now()) & "-" & Year(now())
Dit "mag" normaal niet voorkomen, omdat ik de ingevoerde datum al zo in de NL format heb geconverteerd. En now() geeft in dit geval ook een NL format, omdat mijn OS NL. Maar dit zou in de toekomst wel problemen opleveren kunnen opleveren (handy tip thanks).

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Kijk hier eens, dan zie je de syntax.
http://www.database-design-2000.com/dateDiff.htm

ik weet niet of de dubbele quotes zoals in het voorbeeld moeten of dat je ook enkele quotes kan nemen, maar quotes MOETEN er om heen!


gevonden met google!
"datediff access" als zoek criteria, ben ik nou gek?

[ Voor 33% gewijzigd door Goodielover op 02-05-2003 14:55 ]


  • Jaspertje
  • Registratie: September 2001
  • Laatst online: 12-08 16:04

Jaspertje

Max & Milo.. lief

Goodielover schreef op 02 May 2003 @ 14:53:
Kijk hier eens, dan zie je de syntax.
http://www.database-design-2000.com/dateDiff.htm

ik weet niet of de dubbele quotes zoals in het voorbeeld moeten of dat je ook enkele quotes kan nemen, maar quotes MOETEN er om heen!


gevonden met google!
"datediff access" als zoek criteria, ben ik nou gek?
lama.. boel onzin

[ Voor 8% gewijzigd door Jaspertje op 02-05-2003 15:20 ]


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

je moet de output van je variabele sqlTest op het scherm zetten en hier neerzetten, als je wilt weten of we er wat zinnigs over kunnen zeggen.
Aangezien er nog steeds geen output staat, is de TS duidelijk niet geintresseerd om het probleem echt op te lossen.

Gevolg hiervan is dat het topic op slot gaat aangezien iedereen in cirkels kan gaan rennen en we wel allemaal naar een oorzaak kunnen gissen, maar aangezien de TS geen moeite doet om zelfs de benodigde informatie te geven om zelfs te kunnen helpen is het topic zinloos.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR

Pagina: 1

Dit topic is gesloten.