'------------------------------------------------------------------------------ IF Request("dato") = "" THEN dato = DATE ELSE dato = Request("dato") END IF '------------------------------------------------------------------------------
'------------------------------------------------------------------------------ dato_maaned = month(dato) '------------------------------------------------------------------------------ SELECT CASE dato_maaned CASE 1,3,5,7,8,10,12 dato_antal_dage_maaned = 31 CASE 2 IF year(dato) MOD 4 = 0 THEN dato_antal_dage_maaned = 29 ELSE dato_antal_dage_maaned = 28 END IF CASE 4,6,9,11 dato_antal_dage_maaned = 30 END SELECT '------------------------------------------------------------------------------ SELECT CASE dato_maaned CASE 1 maaned_frem = month(dato) + 1 aar_frem = year(dato) maaned_tilbage = 12 aar_tilbage = year(dato) - 1 CASE 12 maaned_frem = 1 aar_frem = year(dato) + 1 maaned_tilbage = month(dato) - 1 aar_tilbage = year(dato) CASE ELSE maaned_frem = month(dato) + 1 aar_frem = year(dato) maaned_tilbage = month(dato) - 1 aar_tilbage = year(dato) END SELECT '------------------------------------------------------------------------------ SELECT CASE dato_maaned CASE 1 maaned_navn = "Januar" CASE 2 maaned_navn = "Februar" CASE 3 maaned_navn = "Marts" CASE 4 maaned_navn = "April" CASE 5 maaned_navn = "Maj" CASE 6 maaned_navn = "Juni" CASE 7 maaned_navn = "Juli" CASE 8 maaned_navn = "August" CASE 9 maaned_navn = "September" CASE 10 maaned_navn = "Oktober" CASE 11 maaned_navn = "November" CASE 12 maaned_navn = "December" END SELECT '------------------------------------------------------------------------------
z = 1 For y = 1 to 6 Response.Write "<tr>" For x = 1 to 7 Response.Write "<th width=""" & "14%" & """>" Response.Write " " If x <= dato_mandag_uge AND y = 1 Then Response.Write " " Elseif z > dato_antal_dage_maaned Then Response.Write " " Else z_dato = z & "-" & month(dato) & "-" & year(dato) Response.Write "<a href=""" & "kalender.asp?dato=" & z_dato & """>" If z_dato = day(DATE) & "-" & month(DATE) & "-" & year(DATE) THEN Response.Write "<b><font color=" & """#FF0000""" & ">" & z & "</font></b>" ElseIf z = dato_dag Then Response.Write "<b><font color=" & """#0000FF""" & ">" & z & "</font></b>" Else Response.Write z End If Response.Write "</a>" '------------------------------------------------------------------------------- Set RS = Conn.Execute(strSQL)
IF rs.EOF = TRUE AND rs.BOF = TRUE THEN ELSE While NOT rs.EOF IF day(rs("dato")) = z THEN Response.Write " " & "<img border=""" & "0""" & "src=""" & "redbullet.gif""" & ">" END IF rs.Movenext Wend END IF '------------------------------------------------------------------------------- z = z + 1 End If Response.Write "</th>" Next Response.Write "</tr>" Next %> </table><br> <% '------------------------------------------------------------------------------- strSql = " "&_ "SELECT * "&_ "FROM artikel "&_ "WHERE (DAY(dato) = '"& day(dato) &"' ) AND (MONTH(dato) = '"& month(dato) &"' ) AND (YEAR(dato) = '"& year(dato) &"' ) "&_ "ORDER BY dato DESC" '-------------------------------------------------------------------------------
Set RS = Conn.Execute(strSQL) IF rs.EOF = TRUE AND rs.BOF = TRUE THEN Response.Write "ingen artikler." ELSE While NOT rs.EOF Response.Write " " & "<img border=""" & "0""" & "src=""" & "arrow-blk-fwd.gif""" & "> " & rs("rubrik") & " (" & rs("dato") & ")" & "<br>" rs.Movenext Wend END IF
Conn.Close Set Conn = Nothing %>
Men hver gang jeg prøver at køre den skriver den dette:
Error Type: ADODB.Recordset.1 (0x80004005) SQLState: 4 Native Error Code: 1064 [TCX][MyODBC]You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(dato) = '12' ) AND (MONTH(dato) = '1' ) AND (YEAR(dato) = '200 /ex/kalender.asp, line 169
Når jeg så fjerne koden "Set RS = Conn.Execute(strSQL)" så virker det hele fint på nær at jeg ikke kan trække noget ud af databasen.
Hjælp, jeg kan simplehen ikke finde ud af hvor fejlen er. :-/
Normalt ville man typsik bruge DATE typen for så kan man bruge date/time funktionerne direkte. mySQL bruger dato formatet yyyy-mm-dd så det er en god ide at gemme/overføre datoer i det format.
Man kan godt bruge vchar men så skal man konverter til DATE time eller bruge streng funktioner. Når du skriver dmy ville den 1/2/2006 stå som 1-2-2006 eller ?
<% '------------------------------------------------------------------------------ IF Request("dato") = "" THEN dato = DATE ELSE dato = Request("dato") END IF '------------------------------------------------------------------------------
'------------------------------------------------------------------------------ dato_maaned = month(dato) '------------------------------------------------------------------------------ SELECT CASE dato_maaned CASE 1,3,5,7,8,10,12 dato_antal_dage_maaned = 31 CASE 2 IF year(dato) MOD 4 = 0 THEN dato_antal_dage_maaned = 29 ELSE dato_antal_dage_maaned = 28 END IF CASE 4,6,9,11 dato_antal_dage_maaned = 30 END SELECT '------------------------------------------------------------------------------ SELECT CASE dato_maaned CASE 1 maaned_frem = month(dato) + 1 aar_frem = year(dato) maaned_tilbage = 12 aar_tilbage = year(dato) - 1 CASE 12 maaned_frem = 1 aar_frem = year(dato) + 1 maaned_tilbage = month(dato) - 1 aar_tilbage = year(dato) CASE ELSE maaned_frem = month(dato) + 1 aar_frem = year(dato) maaned_tilbage = month(dato) - 1 aar_tilbage = year(dato) END SELECT '------------------------------------------------------------------------------ SELECT CASE dato_maaned CASE 1 maaned_navn = "Januar" CASE 2 maaned_navn = "Februar" CASE 3 maaned_navn = "Marts" CASE 4 maaned_navn = "April" CASE 5 maaned_navn = "Maj" CASE 6 maaned_navn = "Juni" CASE 7 maaned_navn = "Juli" CASE 8 maaned_navn = "August" CASE 9 maaned_navn = "September" CASE 10 maaned_navn = "Oktober" CASE 11 maaned_navn = "November" CASE 12 maaned_navn = "December" END SELECT '------------------------------------------------------------------------------
z = 1 For y = 1 to 6 Response.Write "<tr>" For x = 1 to 7 Response.Write "<th width=""" & "14%" & """>" Response.Write " " If x <= dato_mandag_uge AND y = 1 Then Response.Write " " Elseif z > dato_antal_dage_maaned Then Response.Write " " Else z_dato = z & "-" & month(dato) & "-" & year(dato) Response.Write "<a href=""" & "kalender.asp?dato=" & z_dato & """>" If z_dato = day(DATE) & "-" & month(DATE) & "-" & year(DATE) THEN Response.Write "<b><font color=" & """#FF0000""" & ">" & z & "</font></b>" ElseIf z = dato_dag Then Response.Write "<b><font color=" & """#0000FF""" & ">" & z & "</font></b>" Else Response.Write z End If Response.Write "</a>" '------------------------------------------------------------------------------- Set RS = Conn.Execute(strSQL)
IF rs.EOF = TRUE AND rs.BOF = TRUE THEN ELSE While NOT rs.EOF IF day(rs("dato")) = z THEN Response.Write " " & "<img border=""" & "0""" & "src=""" & "redbullet.gif""" & ">" END IF rs.Movenext Wend END IF '------------------------------------------------------------------------------- z = z + 1 End If Response.Write "</th>" Next Response.Write "</tr>" Next %> </table><br> <% '------------------------------------------------------------------------------- strSql = " "&_ "SET DATEFORMAT ymd "&_ "SELECT * "&_ "FROM artikel "&_ "WHERE (DAY(dato) = '"& day(dato) &"' ) AND (MONTH(dato) = '"& month(dato) &"' ) AND (YEAR(dato) = '"& year(dato) &"' ) "&_ "ORDER BY dato DESC" '-------------------------------------------------------------------------------
Set RS = Conn.Execute(strSQL) IF rs.EOF = TRUE AND rs.BOF = TRUE THEN Response.Write "ingen artikler." ELSE While NOT rs.EOF Response.Write " " & "<img border=""" & "0""" & "src=""" & "arrow-blk-fwd.gif""" & "> " & rs("rubrik") & " (" & rs("dato") & ")" & "<br>" rs.Movenext Wend END IF
Conn.Close Set Conn = Nothing %>
Men den giver samme fejl. det skal lige siges jeg har webhotel hos surftown, ved ikke om det har noget af sige?
Error Type: ADODB.Connection.1 (0x80004005) SQLState: S Native Error Code: 1193 [TCX][MyODBC]Unknown system variable 'DATEFORMAT' /ex/kalender.asp, line 141
Ja det har jeg skam også prøvet.. men så får jeg bare denne fejl:
Error Type: ADODB.Recordset.1 (0x80004005) SQLState: 4 Native Error Code: 1064 [TCX][MyODBC]You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(dato) = '28' ) AND (MONTH(dato) = '3' ) AND (YEAR(dato) = '200 /ex/kalender.asp, line 169
men hvis jeg så fjerne den sætning her sætning "Set RS = Conn.Execute(strSQL)" fra koden jamen så virker det fint nok, lige ind til jeg kommer til en dag hvor jeg skal hive noget ud fra databasen, så viser den intet. :(
Er den som udføre SQL sætningen så uden den vil den ikke hente noget fra databasen. Den fejler fordi der er noget i SQL sætningen som den ikke kan finde ud af.
Hvis du har dato kolonne som vchar vil funktionen DAY ikke virke da den virker på en date/time type.
Enten skal du ind i mysql databasen og rette dato til typen DATE(10) og rette de datoer der står i databasen så de er i formatet yyyy-mm-dd. Når du så indsætter en ny event i databasen skal dato være i formetet yyyy-mm-dd
Alternativt er at beholde det som vchar, men så skal du oplyse meget præssist hvordan du gemmer datoer i databasne for man er nok til at klippe lidt i strengen. Hvordan står datoerne? 01-02-2006 ? 1-2-2006 ? 1-2-8 ? 01022006 ? 010206 ?
Fordelen ved at bruge date typen er at man kan bruge datetime funkterne direkte og man kan sortere og få det man forventer - ORDER BY dato.
hvis du forsætter med et tekst fejl bør du også overveje om du ikke kan gemme i formatet yyyy-mm-dd for at det let at konverter til en date type da mySQL bruger yyyy-mm-dd som dato format.
Nop, får samme fejl igen med at den ikke kender DATEFORMAT "Unknown system variable 'DATEFORMAT' "
men jeg lade lige mærke til om det kunne have noget at gøre med den her sætning " HAVING (MONTH(dato) = '"& month(dato) &"' ) AND (YEAR(dato) = '"& year(dato) &"' ) "&_"
om der overhovede skal stå having??
Og nu er der to forskellige men jeg regner med det er den nederest der er gal med selv om det er i den øverste der har having.. :-/ '------------------------------------------------------------------------------- strSql = " "&_ "SET DATEFORMAT ymd "&_ "SELECT dato "&_ "FROM artikel "&_ "GROUP BY dato "&_ "HAVING (MONTH(dato) = '"& month(dato) &"' ) AND (YEAR(dato) = '"& year(dato) &"' ) "&_ "ORDER BY dato DESC" '-------------------------------------------------------------------------------
For nu opdaget jeg at når man så tryk på linket til næste månede, virker det fint nok, men hvis man trykker igen så hopper den til 1/2/2006 og jeg kan ikke komme vider.. kun en mån frem, fra den jeg jeg startede med.
Og når jeg trykke tilbage virker den fint lige ind til man trykker igen, så hopper den et helt år tilbage... koden ser nu sådan her ud
<% '------------------------------------------------------------------------------ IF Request("dato") = "" THEN dato = DATE ELSE dato = Request("dato") END IF '------------------------------------------------------------------------------
'------------------------------------------------------------------------------ dato_maaned = month(dato) '------------------------------------------------------------------------------ SELECT CASE dato_maaned CASE 1,3,5,7,8,10,12 dato_antal_dage_maaned = 31 CASE 2 IF year(dato) MOD 4 = 0 THEN dato_antal_dage_maaned = 29 ELSE dato_antal_dage_maaned = 28 END IF CASE 4,6,9,11 dato_antal_dage_maaned = 30 END SELECT '------------------------------------------------------------------------------ SELECT CASE dato_maaned CASE 1 maaned_frem = month(dato) + 1 aar_frem = year(dato) maaned_tilbage = 12 aar_tilbage = year(dato) - 1 CASE 12 maaned_frem = 1 aar_frem = year(dato) + 1 maaned_tilbage = month(dato) - 1 aar_tilbage = year(dato) CASE ELSE maaned_frem = month(dato) + 1 aar_frem = year(dato) maaned_tilbage = month(dato) - 1 aar_tilbage = year(dato) END SELECT '------------------------------------------------------------------------------ SELECT CASE dato_maaned CASE 1 maaned_navn = "Januar" CASE 2 maaned_navn = "Februar" CASE 3 maaned_navn = "Marts" CASE 4 maaned_navn = "April" CASE 5 maaned_navn = "Maj" CASE 6 maaned_navn = "Juni" CASE 7 maaned_navn = "Juli" CASE 8 maaned_navn = "August" CASE 9 maaned_navn = "September" CASE 10 maaned_navn = "Oktober" CASE 11 maaned_navn = "November" CASE 12 maaned_navn = "December" END SELECT '------------------------------------------------------------------------------
z = 1 For y = 1 to 6 Response.Write "<tr>" For x = 1 to 7 Response.Write "<th width=""" & "14%" & """>" Response.Write " "
If x <= dato_mandag_uge AND y = 1 Then Response.Write " " Elseif z > dato_antal_dage_maaned Then Response.Write " " Else z_dato = z & "-" & month(dato) & "-" & year(dato)
'------------------------------------------------------------------------------- Set RS = Conn.Execute(strSQL)
IF rs.EOF = TRUE AND rs.BOF = TRUE THEN ELSE While NOT rs.EOF IF day(rs("dato")) = z THEN
END IF rs.Movenext Wend END IF '-------------------------------------------------------------------------------
If z_dato = day(DATE) & "-" & month(DATE) & "-" & year(DATE) THEN Response.Write "<b><font color=" & """#FF0000""" & ">" & z & "</font></b>" ElseIf z = dato_dag Then Response.Write "<b><font color=" & """#0000FF""" & ">" & z & "</font></b>" Else Response.Write z End If
'------------------------------------------------------------------------------- Set RS = Conn.Execute(strSQL)
IF rs.EOF = TRUE AND rs.BOF = TRUE THEN ELSE While NOT rs.EOF IF day(rs("dato")) = z THEN
Response.Write "</a>"
END IF rs.Movenext Wend END IF '-------------------------------------------------------------------------------
z = z + 1 End If Response.Write "</th>" Next Response.Write "</tr>" Next %> </table> <% Response.Write "(dagsdato er: " & DATE & ")" %>
det vil sige jeg skal finde en måde at skifte koden om igen.. :-S og nej ved ikke helt hvad det er for en maskine den køre på, har bare et webhotel hos surftown...
så fik jeg den til at virke. som du kan se på siden www.denrejsende.dk så virker den faktis som den skal nu her... ;) jeg takker mange gange for hjælpen. :-P
Synes godt om
Ny brugerNybegynder
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.