Avatar billede php_newbie Nybegynder
26. maj 2002 - 16:16 Der er 23 kommentarer og
1 løsning

SQL og Datediff problem

Hejsa...

Jeg har tidligere sport om det men ingen svarede og valgte derfor at åbne et nyt.

i kode ser sådan her ud:

strSQL=strSQL&" AND ("&DateDiff("d", (Banner.dato), Now)&" < Banner.periode OR Banner.periode IS NULL)"

den skal altså tjekke om hvor mange dage der er gået fra banneret blev oprettet og hvad der står i periode.

periode må også gerne stå tomt.

får fejlen:
Fejltype:
Der opstod en Microsoft VBScript-kørselsfejl (0x800A01A8)
Et objekt er obligatorisk: ''
/include_banner.asp, line 8

håber i forstår spg.....
Avatar billede a1a1 Novice
26. maj 2002 - 16:24 #1
prøv med...

strSQL=strSQL&" AND DATEDIFF("d", Banner.dato, Banner.periode) < 0  OR Banner.periode IS NULL)"
Avatar billede a1a1 Novice
26. maj 2002 - 16:26 #2
Eller

strSQL=strSQL&" AND DATEDIFF("d", Banner.dato, Banner.periode) <= 0  OR Banner.periode IS NULL)"

hvis den også skal vises sidste dag.
Avatar billede a1a1 Novice
26. maj 2002 - 16:28 #3
du skal også husker paranteserne

strSQL=strSQL&" AND ( DATEDIFF("d", Banner.dato, Banner.periode) <= 0  OR Banner.periode IS NULL )"

datediff og OR is null skal være indenfor samme parantes
Avatar billede php_newbie Nybegynder
26. maj 2002 - 16:29 #4
Fejltype:
Der opstod en Microsoft VBScript-kompileringsfejl (0x800A0401)
Slut på sætning var ventet
/include_banner.asp, line 8, column 30
strSQL=strSQL&" AND DATEDIFF("d", Banner.dato, Banner.periode) <= 0 OR Banner.periode IS NULL)"
Avatar billede a1a1 Novice
26. maj 2002 - 16:32 #5
?

DATEDIFF("d", Banner.dato, Banner.periode)

er IKKE ASP........? du har en uafsluttet asp tekst streng
Avatar billede a1a1 Novice
26. maj 2002 - 16:33 #6
:)
DATEDIFF('d', Banner.dato, Banner.periode)

enkelt dimser :)
Avatar billede a1a1 Novice
26. maj 2002 - 16:34 #7
hvis ikke så prøv
DATEDIFF(\"d\", Banner.dato, Banner.periode)

DATEDIFF(""d"", Banner.dato, Banner.periode)
Avatar billede a1a1 Novice
26. maj 2002 - 16:36 #8
har lige checket på sqlserver, koden er korrekt, det er "bare" " dimserne der skal være rigtige (så de ikke fucker asp'en up)
Avatar billede a1a1 Novice
26. maj 2002 - 16:43 #9
hmm, er banner.periode et tal ?

så er det
DATEDIFF("d", Banner.dato, GETDATE() ) > Banner.periode

Du skal stadig rette dimserne
Avatar billede php_newbie Nybegynder
26. maj 2002 - 16:48 #10
det virker ikke helt som det skal har ændret på et af bannerne så der er 46 dage fra den er oprettet til nu og i periode står der 10

aligevel blir banneret vist !!
men der kommer ingen fejl nu.

  strSQL="select TOP 1 * from Banner"
  strSQL=strSQL&" WHERE (hit_max > klik OR hit_max IS NULL)"
  strSQL=strSQL&" AND ( DATEDIFF('d', Banner.dato, Banner.periode) <= 0  OR Banner.periode IS NULL )"
  strSQL=strSQL&" ORDER BY vist desc, dato desc"
  set objRS = objConn.execute(strSQL)
Avatar billede php_newbie Nybegynder
26. maj 2002 - 16:50 #11
har prøvet dit sidste svar så får jeg denne fejl:
Fejltype:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access-driver] Der er en ikke-defineret funktion "GETDATE" i udtrykket.
/include_banner.asp, line 11

  strSQL="select TOP 1 * from Banner"
  strSQL=strSQL&" WHERE (hit_max > klik OR hit_max IS NULL)"
  strSQL=strSQL&" AND ( DATEDIFF('d', Banner.dato, GETDATE() ) > Banner.periode <= 0  OR Banner.periode IS NULL )"
  strSQL=strSQL&" ORDER BY vist desc, dato desc"
  set objRSbanner = objConn.execute(strSQL)
Avatar billede php_newbie Nybegynder
26. maj 2002 - 16:51 #12
Det er en Access database
Avatar billede a1a1 Novice
26. maj 2002 - 16:53 #13
strSQL="select TOP 1 * from Banner"
  strSQL=strSQL&" WHERE (hit_max > klik OR hit_max IS NULL)"
  strSQL=strSQL&" AND ( DATEDIFF('d', Banner.dato, " & Date() & ") > Banner.periode <= 0  OR Banner.periode IS NULL )"

dato fra asp :)

det andet dur åbenbart kun på sqlserver
Avatar billede php_newbie Nybegynder
26. maj 2002 - 17:01 #14
den virker stadig ikke står stadig så lang tid tilbage at der er gået 46 dage og perioden står til 10 men den blir vist alligevel !!!

  strSQL="select TOP 1 * from Banner"
  strSQL=strSQL&" WHERE (hit_max > klik OR hit_max IS NULL)"
  strSQL=strSQL&" AND ( DATEDIFF('d', Banner.dato, " & Date() & ") > Banner.periode <= 0  OR Banner.periode IS NULL )"
  strSQL=strSQL&" ORDER BY vist desc, dato desc"
  set objRSbanner = objConn.execute(strSQL)
Avatar billede a1a1 Novice
26. maj 2002 - 17:07 #15
det kan være datoformatet der problemet

dindato = Date()

lav dindato om til dette format YYYY-MM-DD

strSQL="select TOP 1 * from Banner"
  strSQL=strSQL&" WHERE (hit_max > klik OR hit_max IS NULL)"
  strSQL=strSQL&" AND ( DATEDIFF('d', Banner.dato, " & dindato & ") > Banner.periode <= 0  OR Banner.periode IS NULL )"
  strSQL=strSQL&" ORDER BY vist desc, dato desc"

skal desværre gå nu men jeg tror det kan være det der er problemet....:)
Avatar billede php_newbie Nybegynder
26. maj 2002 - 17:12 #16
det står sådan her nu går det ikke ??
26-05-2002
Avatar billede php_newbie Nybegynder
26. maj 2002 - 17:19 #17
det virker ikke selvom jeg har lavet datoformatet som det står oven over

har prøvet med denne linie men så får jeg denne fejl:

strSQL=strSQL&" AND (DateDiff('d', dato, date() > periode OR periode IS NULL)"

Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl, fordi der mangler en operator. i forespørgselsudtrykket "(hit_max > klik OR hit_max IS NULL) AND (DateDiff('d', dato, date() > periode OR periode IS NULL) ORDER BY vist desc, dato desc".
/include_banner.asp, line 7
Avatar billede a1a1 Novice
27. maj 2002 - 18:41 #18
du skal IKKE sætte date() direkte ind
men lave en variabel om til det rigtige format

ddat = date()
dyear = year(ddat)
dmd = month(ddat)
dday = Day(ddat)
didato = dyear & "-" & dmd & "-" & dday

strSQL="select TOP 1 * from Banner"
  strSQL=strSQL&" WHERE (hit_max > klik OR hit_max IS NULL)"
  strSQL=strSQL&" AND ( DATEDIFF('d', Banner.dato, " & dindato & ") > Banner.periode <= 0  OR Banner.periode IS NULL )"
  strSQL=strSQL&" ORDER BY vist desc, dato desc"

:)
Avatar billede php_newbie Nybegynder
27. maj 2002 - 19:54 #19
det virker ikke helt som det skal når man skriver en dato som skulle være udløbet blir den vist allivel !!

mit datoformat i min access database ser sådan her ud: 10-03-2002.
Blir gemt inde i Access ved hjælp af standardværdi: Date()

hvis det er der fejlen er !
Avatar billede a1a1 Novice
27. maj 2002 - 20:41 #20
prøv at fjerne det der <= 0

strSQL="select TOP 1 * from Banner"
  strSQL=strSQL&" WHERE (hit_max > klik OR hit_max IS NULL)"
  strSQL=strSQL&" AND ( DATEDIFF('d', Banner.dato, " & dindato & ") > Banner.periode OR Banner.periode IS NULL )"
  strSQL=strSQL&" ORDER BY vist desc, dato desc"

:)
Avatar billede php_newbie Nybegynder
29. maj 2002 - 18:43 #21
Næhh det virker sg stadig ikke !

    ddat = date()
    dyear = year(ddat)
    dmd = month(ddat)
    dday = Day(ddat)
    dindato = dyear & "-" & dmd & "-" & dday
  strSQL="select TOP 1 * from Banner"
  strSQL=strSQL&" WHERE (hit_max > klik OR hit_max IS NULL)"
  strSQL=strSQL&" AND ( DATEDIFF('d', Banner.dato, " & dindato & ") <= Banner.periode OR Banner.periode IS NULL )"
  strSQL=strSQL&" ORDER BY vist desc, dato desc"
  set objRSbanner = objConn.execute(strSQL)

Den viser dem stadig selvom perioden er udstigetog prøvet at vende tegnet < på forksellige måder virker ikke lige meget hvad !!

Et nyt forslag ?
Avatar billede a1a1 Novice
29. maj 2002 - 18:51 #22
ikke lige....
hvis banner.periode var en dato også kunne du bruge et af de tidligere eksempler
...DATEDIFF('d', Banner.dato, Banner.periode) < 0....

:(
Avatar billede php_newbie Nybegynder
03. juni 2002 - 21:34 #23
det kan jeg desværre ikke rigtigt bruge til noget...

det virker jo ikke.
Avatar billede a1a1 Novice
05. juni 2002 - 01:08 #24
tsk...
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