Avatar billede thomas_b Nybegynder
26. februar 2006 - 23:17 Der er 73 kommentarer og
2 løsninger

Min SQL sætning virker vist ikke.

Hej...

Jeg har denne sætning, den kommer med fejlen : Syntax error

I kolonnen dato er f.eks. dato-format : 08-02-2006 - hvor jeg kun vil have månedstallet i dette tilfælde tallet 2...

SQL = "SELECT count(*) as log_post FROM nytabel2006_statastik_log_unikke WHERE '"&Month(&"dato"&)&"'="& md_nu
Avatar billede softspot Forsker
27. februar 2006 - 00:06 #1
Hvad er det du forsøger her:

"...WHERE '"&Month(&"dato"&)&"'="& md_nu

Det ser ud til at du sammenligner informationer som ikke har noget med databasen at gøre i en forspørgsel og det er vel ikke meningen... eller hvad?

Man benytter typisk mindst et felt fra den eller de tabeller der forspørges i, i en WHERE-clause (og ofte har de endda samme datatype).
Avatar billede softspot Forsker
27. februar 2006 - 00:08 #2
Skulle det have været således:

SQL = "SELECT count(*) as log_post FROM nytabel2006_statastik_log_unikke WHERE Month(dato)="& md_nu

altså at du har et felt i databasen som hedder dato hvoraf du tager måneden og sammenligner med en variabel (som hedder md_nu) der indeholder den aktuelle måned...?
Avatar billede thomas_b Nybegynder
27. februar 2006 - 00:10 #3
ja...
Avatar billede softspot Forsker
27. februar 2006 - 00:13 #4
OK
Avatar billede thomas_b Nybegynder
27. februar 2006 - 00:13 #5
Men hvis jeg skriver "Response.Write SQL" under min sætning siger den således...:
"SELECT count(*) as log_post FROM nytabel2006_statastik_log_unikke WHERE Month(dato)=2 "

Det er som om at Month(dato) ikke giver noget...!
Avatar billede softspot Forsker
27. februar 2006 - 00:15 #6
Jo, når databasen får fingre i din SQL vil den fortolke det funktionskald og omsætte det til måneden for den pågældnede dato og derefter sammenligne den med konstanten 2, så den er du nød til at stole på databasen kan håndtere :)
Avatar billede thomas_b Nybegynder
27. februar 2006 - 00:16 #7
den giver værdien 0
Avatar billede thomas_b Nybegynder
27. februar 2006 - 00:19 #8
rettere sagt giver den intet...!
Avatar billede softspot Forsker
27. februar 2006 - 00:21 #9
Et overflødig spørgsmål er naturligvis om der så findes nogle rækker i den pågældende tabel hvor datoen er fra februar...?
Avatar billede thomas_b Nybegynder
27. februar 2006 - 00:22 #10
ja det gør der... 10 stk.
Avatar billede softspot Forsker
27. februar 2006 - 00:22 #11
Næste spørgsmål er om du har husket at sætte Session.LCID=1030 i starten af den side som forespørger (eller et andet sted på sitet)...?
Avatar billede softspot Forsker
27. februar 2006 - 00:23 #12
...og et sidste spørgsmål er om datatypen for feltet dato er datetime?
Avatar billede thomas_b Nybegynder
27. februar 2006 - 00:24 #13
Ja... & Ja....
Avatar billede softspot Forsker
27. februar 2006 - 00:26 #14
Har du mulighed for at smide et screendump af tabellen med lidt data et eller andet sted på nettet?
Avatar billede thomas_b Nybegynder
27. februar 2006 - 00:28 #15
kan det være at den i Month(dato) finder en værdi : 02
For jeg ved at i md_nu finder værdien : 2

??
Avatar billede softspot Forsker
27. februar 2006 - 00:30 #16
Prøv at fyre denne SQL-sætning af:

SELECT Month(dato) FROM nytabel2006_statastik_log_unikke

Så burde du få en fornemmelse af hvad der kommer ud af det (og om der kommer noget overhovedet).
Avatar billede thomas_b Nybegynder
27. februar 2006 - 00:33 #17
Den siger ikke en skid...!
Men skal denne sætning ikke ind...: count(*) as log_post
Avatar billede softspot Forsker
27. februar 2006 - 00:35 #18
Nej, det var bare for at se om databasen returnerer noget for den funktion, men det gør den åbenbart ikke...

Får du heller ingen fejl?

Prøv evt.

SELECT Month([dato]) FROM nytabel2006_statastik_log_unikke
Avatar billede thomas_b Nybegynder
27. februar 2006 - 00:39 #19
Den siger stadig ikke noget...!
Avatar billede softspot Forsker
27. februar 2006 - 00:40 #20
Hmm... kan du udspecificere "ikke noget"? Hvad er det der rent faktisk sker og hvad er det du gør med denne sætning?
Avatar billede softspot Forsker
27. februar 2006 - 00:41 #21
og hvilken database er der egentlig tale om?
Avatar billede thomas_b Nybegynder
27. februar 2006 - 00:42 #22
som den ser ud nu...:
SQL = "SELECT Month([dato]) FROM nytabel2006_statastik_log_unikke"

Og den viser slet ikke noget...! Og den kommer heller ikke med nogen fejl...
Avatar billede thomas_b Nybegynder
27. februar 2006 - 00:43 #23
access
Avatar billede softspot Forsker
27. februar 2006 - 00:44 #24
Kan du vise den stump kode der definerer SQL-sætningen og kalder databasen?
Avatar billede softspot Forsker
27. februar 2006 - 00:45 #25
mangler du evt. at slette en response.end eller sådan noget?
Avatar billede thomas_b Nybegynder
27. februar 2006 - 00:46 #26
<%
SQL = "SELECT Month([dato]) FROM nytabel2006_statastik_log_unikke"
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open SQL, Conn,1, 2
%>

Og den kode som kalder databassen virker perfekt for alle de andre script's virker på min side som kommer fra samme kilde....!
Avatar billede softspot Forsker
27. februar 2006 - 00:50 #27
Kunne jeg få dig til at dumpe et udsnit af din tabel et eller andet sted (jf. 27/02-2006 00:26:54)?
Avatar billede softspot Forsker
27. februar 2006 - 00:55 #28
Du kan evt. smide den i min email: softspot.dk(ad)hotmail.com
Avatar billede thomas_b Nybegynder
27. februar 2006 - 00:59 #29
You Got Mail
Avatar billede softspot Forsker
27. februar 2006 - 01:09 #30
Det er godt nok sært! Nå, så må vi jo tage førgreb på den!

Prøv denne version:

SQL = "SELECT Month(cdate(dato)) FROM nytabel2006_statastik_log_unikke"
Avatar billede thomas_b Nybegynder
27. februar 2006 - 01:11 #31
Viser ikke noget... Igen fejl...
Avatar billede softspot Forsker
27. februar 2006 - 01:19 #32
Jeg fatter ikke en dyt! Jeg har lige lavet en tabel med en kolonne ved navn dato og fyldt data i den (endda af typen text) - og den trækker fint måneden ud med flg. kode:

set cn = server.createobject("adodb.connection")
cn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Inetpub\data\chat.mdb;Persist Security Info=False"
set rs = cn.execute("SELECT month(dato) AS maaned FROM tatest1")
do while not rs.eof
  response.write rs("maaned") & "<br>"
  rs.movenext
loop
rs.close
cn.close


Mine data ser således ud:
dato
01-02-2006
02-02-2006
01-03-2006
02-03-2006
Avatar billede softspot Forsker
27. februar 2006 - 01:20 #33
...og det giver resultatet:

2
2
3
3
Avatar billede thomas_b Nybegynder
27. februar 2006 - 01:23 #34
det forsår jeg ikke...!
Avatar billede thomas_b Nybegynder
27. februar 2006 - 01:25 #35
kan det være noget med servern ?
Avatar billede softspot Forsker
27. februar 2006 - 01:30 #36
Hvis du siger at andre forspørgsler fungerer på samme side, synes jeg det ville være usandsynligt at det er serveren.

Uden at vide hvilken kontekst din kode kører i, så tænkte jeg på om du kunne prøve at isolere den kode, så det kun er den der bliver udført. Dvs. flyt den over på en separat side, så der ikke KAN være noget der forstyrrer udførslen af denne kode.
Avatar billede thomas_b Nybegynder
27. februar 2006 - 01:33 #37
Det tror jeg, at jeg vil gøre imorgen... skal op kl. halv 7 imorgen...!
Men tror du ikke at du kan hjælpe mig imorgen, så kan vi fortsætte der ?
Avatar billede softspot Forsker
27. februar 2006 - 01:38 #38
Jeg er ved min maskine, men jeg kan nok ikke hjælpe så intensivt som iaften, men jeg skal nok gøre hvad jeg kan :)

Godnat og sov godt...
Avatar billede thomas_b Nybegynder
27. februar 2006 - 18:09 #39
Hvis jeg gør som du siger skriver den intern server-fejl...500
Avatar billede softspot Forsker
27. februar 2006 - 18:16 #40
Du har naturligvis ændret connectionstring så den passer til din database (ikk?), så det kunne være rart hvis du lige kunne oplyse lidt mere om den fejl serverfejl. Hvis du ikke får mere detaljerede fejlmeddelelser end fejl 500, så kan det være du skal sætte din browser op til at vise hele fejlmeddelelsen fra serveren (på en engelsk IE findes denne option under menuen "Tools/Internet Options/Advanced(fanen)" og så skal den option der hedder Show friendly HTTP error messages være slået fra).
Avatar billede softspot Forsker
27. februar 2006 - 18:17 #41
Jeg er lige væk indtil kl. 21 eller deromkring, så du skal nok ikke regne med svar herfra indtil da :)
Avatar billede thomas_b Nybegynder
27. februar 2006 - 18:19 #42
okay...
Avatar billede softspot Forsker
27. februar 2006 - 21:42 #43
Har du fundet noget mere info om fejlen?
Avatar billede thomas_b Nybegynder
27. februar 2006 - 21:46 #44
Den der kommer ingen beskivelse af fejlen... bare en fejlside...
Avatar billede softspot Forsker
27. februar 2006 - 21:47 #45
Har du prøve at slå venlige fejlkoder fra i IE (hvis altså det er den du benytter)? Det var den beskrivelse jeg postede lige inden jeg tog afsted...
Avatar billede thomas_b Nybegynder
27. februar 2006 - 21:52 #46
Jeg har den danske...! Kan slet ikke finde det punkt....
Avatar billede softspot Forsker
27. februar 2006 - 21:56 #47
kan du finde indstillinger i menuen funktioner?
Avatar billede thomas_b Nybegynder
27. februar 2006 - 21:57 #48
Ja... Jeg er inde i advandcerede
Avatar billede softspot Forsker
27. februar 2006 - 22:08 #49
Så skal du finde den indstilling der hedder "Vis meddelelser om uskadelige HTTP-fejl" (den ligger i den sektion der hedder "Gennemsyn") og fjerne krydset ud for denne indstilling.

Herefter håber jeg der kommer lidt mere information om hvor i scriptet fejlen opstår og hvad fejlen egentlig er...
Avatar billede thomas_b Nybegynder
27. februar 2006 - 22:16 #50
Nu har jeg lige rettet fejlen... som der blokerede den for at vise siden...! Den virker godt nok nu...

Hvad kan der være glat...!
Avatar billede softspot Forsker
27. februar 2006 - 22:21 #51
Det forstod jeg ikke!? Du har rettet fejlen der blokerede siden, men der er stadig noget galt...? Du er nød til at give mig (væsentlig) mere information om hvad det er du ser og gør, for at jeg kan hjælpe dig lidt mere effektivt - jeg aner stort set ikke hvad der foregår hos dig... :)
Avatar billede thomas_b Nybegynder
27. februar 2006 - 22:39 #52
Det virker efter hensigten på prøvesiden...! Det virker også hvis jeg putter din kode over på den side den skal brues på...!
Men nu skal den bare konfigures....!
Avatar billede softspot Forsker
27. februar 2006 - 22:43 #53
OK, så er vi altså på rette spor :)

Spørgsmålet er om det er noget jeg skal hjælpe dig med, eller om konfigurationen er noget du selv kan løse. Hvis jeg skal hjælpe, så er du vist nød til at give mig lidt mere info om hvad det er for en kontekst vi arbejder i osv. :)
Avatar billede thomas_b Nybegynder
27. februar 2006 - 22:49 #54
I starten af hele siden loades:
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("../muleen_05.mdb")
Conn.Open DSN

Så skal jeg have et output som hedder:
<%=log_post%>
Som har talt alle posterne med den aktuelle måned som kommer via (27/02-2006 00:08:35):
md_nu
Avatar billede softspot Forsker
27. februar 2006 - 22:51 #55
OK, prøv lige at formattere din dato sådan her i stedet for:

27-02-2006 00:08:35
Avatar billede thomas_b Nybegynder
27. februar 2006 - 22:55 #56
i databassen ?
Avatar billede thomas_b Nybegynder
27. februar 2006 - 23:17 #57
Jeg tror du misforstår...! Jeg henviste til dit inlæg d. 27/02-2006 00:08:35
Avatar billede softspot Forsker
27. februar 2006 - 23:39 #58
Nååh, høh! Ja, det misforstod jeg :)

Men det henleder alligevel min opmærksomhed på hvad der ligger i variablen md_nu. Kan du vise indholdet af den?
Avatar billede thomas_b Nybegynder
28. februar 2006 - 00:18 #59
Det var det billede jeg sendte dig...: dette format: 25-02-2006
Avatar billede softspot Forsker
28. februar 2006 - 00:28 #60
OK, nu har jeg lige prøvet at lave en (isoleret) test hvor jeg tager month ud af datoen og bruger i min where-clause:

set cn = server.createobject("adodb.connection")
cn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Inetpub\data\chat.mdb;Persist Security Info=False"
set rs = cn.execute("SELECT * FROM tatest1 WHERE month(dato) = 2")
do while not rs.eof
  response.write rs("dato") & "<br>"
  rs.movenext
loop
rs.close
cn.close

og det fungerer godt nok, der returneres kun de rækker hvor måneden er februar.

Nu ligner SQL-sætningen da vist din rimelig meget, så hvis du også kan få denne til at fungere, så burde det være til at få din egen til at fungere...

Jeg er på vej i seng, så jeg svarer nok først igen imorgen, men det skal jo ikke afholde dig fra at smide kommentarer og resulatater af dine tests i løbet af natten (så er det lidt at reflektere over imorgen tidlig ;-)).
Avatar billede thomas_b Nybegynder
28. februar 2006 - 00:44 #61
Narrrj... nu er jeg også faldet lidt hen et par gange... jeg tror også jeg kaster mig i seng...

Men skriver nok igen imorgen...
Avatar billede thomas_b Nybegynder
28. februar 2006 - 23:53 #62
Jeg vil helst slippe for at den loader databasen igen...! i koden... ville gerne have den lignede denne kode (dvs. med de samme ting bare at den virker...!)

SQL = "SELECT count(*) as log_post FROM nytabel2006_statastik_log_unikke WHERE Month(dato)="& md_nu
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open SQL, Conn,1, 3
response.write log_post
Avatar billede softspot Forsker
01. marts 2006 - 00:09 #63
Ja, det var nu heller ikke meningen at du skulle oprette en ny forbindelse, men jeg har bare på fornemmelsen at vi kæmper med noget andet end den SQL-sætning, for hvis det fungerer i et isoleret miljø, må det jo være den kontekst som koden kører i, der driller os.

Derfor vil jeg da gerne se hvad det er for en kontekst (dvs. resten af koden) du kører i. Du kunne sende den til mig på førnævnte mail, hvis du ikke vil publisere den herinde...
Avatar billede thomas_b Nybegynder
01. marts 2006 - 00:19 #64
Det er ialt ca. 10 forskellige filer....
Det vil jeg helt ikke rode rundt i...!
Men jeg tror vi taler forbi hindanden..!

Denne kode virker verken i i den side den skal side eller isoleret miljø:
SQL = "SELECT count(*) as log_post FROM nytabel2006_statastik_log_unikke WHERE Month(dato)="& md_nu
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open SQL, Conn,1, 3
response.write log_post

Men denne kode virker tilgengæld både hvor den skal side og i isoleret miljø:
set cn = server.createobject("adodb.connection")
cn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Inetpub\data\chat.mdb;Persist Security Info=False"
set rs = cn.execute("SELECT * FROM tatest1 WHERE month(dato) = 2")
do while not rs.eof
  response.write rs("dato") & "<br>"
  rs.movenext
loop
rs.close
cn.close


Vil bare gerne have den sidste omskrevet så den ikke loader databasen på ny (den er allerede åben til de andre script) - og så at den sender en værdi ud (til <%=log_post%>) med antal dage der er i databasen som passer til den angivende måned...
Avatar billede softspot Forsker
01. marts 2006 - 00:33 #65
har du prøvet denne variant:

SQL = "SELECT count(*) as log_post FROM nytabel2006_statastik_log_unikke WHERE Month(dato)="& md_nu
Set rs = Conn.Execute(SQL)
if not rs.eof then
  log_post = rs("log_post")
end if
rs.close
response.write log_post
Avatar billede thomas_b Nybegynder
01. marts 2006 - 01:00 #66
Jeg kan ikke logge på min server...! prøver imorgen.. men håber det virker...
Avatar billede softspot Forsker
01. marts 2006 - 01:14 #67
Ja, det ville da være rart :)
Avatar billede thomas_b Nybegynder
02. marts 2006 - 21:02 #68
Nu virker min server igen...!

Scriptet virker også...! Var det : Set rs = Conn.Execute(SQL)
Eller : if not rs.eof then der ændrede det hele ???

I så fald, hvordan kan det være...?
Avatar billede softspot Forsker
02. marts 2006 - 23:07 #69
En måde at teste det på er at gå tilbage til det oprindelige script (eller i det mindste med den SQL-version jeg foreslog i mit post d. 27/02-2006 00:08:35) og prøve det af igen.

Jeg har en mistanke om at IIS'en har låst nogle resurser, som har givet problemer for din databaseadgang (omend den har været noget selektiv :)). Jeg har i det mindste svært ved at forestille mig, at nogle af de elementer du nævner, selvstændigt har løst problemet, men snarere at serverens hukommelse er blevet "renset"... dog vil jeg sige at du er nød til at aflæse feltet fra recordsettet

  log_post = rs("log_post")

hvilket du ikke umiddelbart gjorde i koden fra postet 01/03-2006 00:19:36
Avatar billede thomas_b Nybegynder
02. marts 2006 - 23:10 #70
nå... okay... 1000 tak for hjælpen...
Avatar billede softspot Forsker
02. marts 2006 - 23:48 #71
Velbekomme :)
Avatar billede softspot Forsker
03. marts 2006 - 00:28 #72
Tak for point :)
Avatar billede thomas_b Nybegynder
10. marts 2006 - 19:07 #73
Den virker ikke igen...!
Avatar billede thomas_b Nybegynder
10. marts 2006 - 19:10 #74
Har oprettet et smg på http://www.eksperten.dk/spm/694160
Avatar billede thomas_b Nybegynder
10. marts 2006 - 19:10 #75
Hvis du vil hjælpe mig igen... :)
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