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...?
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 "
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 :)
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
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.
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).
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...
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... :)
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....!
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. :)
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
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 ;-)).
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
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...
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...
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
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
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.