/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
DateDiff SQL problem
Fra : Thomas Møller Nexø


Dato : 17-07-04 18:32

Hejsa,

Jeg er ved at lave et system til håndtering af fakturering af
nogle kunder og er i denne forbindelse ved at lave en side, der
skal kunne åbne en database og trække alle ordrer ud, der har
nået en dato hvor de skal genfaktureres.

Koden jeg arbejder med til udtrækning af disse poster er:

Set Rs = Server.CreateObject("ADODB.Recordset")
   DagsDato = Date()
   Rs.Open "Select * FROM kunder INNER JOIN Fak_Ordrer ON
kunder.Kundenummer = Fak_Ordrer.Kundenummer Where DateDiff('4',
DagsDato,Fak_Ordrer.NaesteFaktura) Order By Fakturanummer DESC",
Conn

Planen her er at alle ordrer, hvor datoen i feltet NaesteFaktura
er 4 dage større (eller lig med eller mindre) end dags dato skal
vises i forespørgslen.

Jeg har en lignende DateDiff funktion på en anden side og denne
virker fint, men her får jeg en fejl når jeg kører min kode.
Fejlen er:

Microsoft OLE DB Provider for ODBC Drivers fejl '80040e10'

[Microsoft][ODBC Microsoft Access-driver] Der er for få
parametre. Der var ventet 1.

/mappenavn/filter.asp, linje 21

Er det muligt at bruge DateDiff direkte i SQL? Og i givet fald,
hvad gør jeg galt her?


--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Jens Gyldenkærne Cla~ (17-07-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 17-07-04 22:19

Thomas Møller Nexø skrev:

> DagsDato = Date()

Her har du variablen DagsDato i asp.

> Rs.Open "Select * FROM kunder INNER JOIN Fak_Ordrer ON
> kunder.Kundenummer = Fak_Ordrer.Kundenummer Where DateDiff('4',
> DagsDato,Fak_Ordrer.NaesteFaktura) Order By Fakturanummer DESC",
> Conn

Der er to fejl herover. Dels bruger du datediff-kommandoen forkert
(første parameter skal angive typen af tid, fx dage, og ikke
mængden af tid). Og dels har det "DagsDato" der står inde i
ovenstående linje, ingen forbindelse til din asp-variabel. Hvis du
vil bruge variablen, skal du bruge strengsammensætning - men det
kan langt bedre betale sig at anvende databasens datofunktioner i
stedet. Så slipper du nemlig for potentielle fejl på grund af
datoformater.

I Access kan du bruge Date og Now præcis som i asp - jeg ville
derfor bruge følgende select:

Select * FROM kunder k INNER JOIN Fak_Ordrer fo ON
k.Kundenummer = fo.Kundenummer
Where DateDiff('d', Date(),fo.NaesteFaktura) <= 4
Order By Fakturanummer DESC

Det kan være en god ide at afprøve forespørgslen i Access inden du
lægger den på nettet - her er det hurtigere at rette småfejl.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Thomas Møller Nexø (17-07-2004)
Kommentar
Fra : Thomas Møller Nexø


Dato : 17-07-04 23:19

> Select * FROM kunder k INNER JOIN Fak_Ordrer fo ON
> k.Kundenummer = fo.Kundenummer
> Where DateDiff('d', Date(),fo.NaesteFaktura) <= 4
> Order By Fakturanummer DESC

Tak for svaret Jens!
Med din hjælp virker det nu


--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Søg
Reklame
Statistik
Spørgsmål : 177548
Tips : 31968
Nyheder : 719565
Indlæg : 6408805
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste