AaspMedlem sedan aug. 2002733 inlägg Hej!
Jag bygger just nu på ett nyhetsscript, ett väldigt simpelt. Saken är den att jag inte kan spara information i databasen. Det går att skriva ut nyheterna elegant.
Jag ser inget fel på min kod:
<%
Case "spara"
Dim rubrik, text, datum
rubrik = Trim(Request.Form("rubrik"))
text = Trim(Request.Form("text"))
datum = Trim(Request.Form("datum"))
If Len(rubrik) > 0 Then
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("db/databas.mdb")
Set Rs = Conn.Execute("INSERT INTO Post (Datum, Rubrik, Text) VALUES ('" & datum & "','" & rubrik & "','" & text & "')")
Response.Write("<b>Nyheten är sparad!</b>")
Conn.Close
Set Conn = Nothing
End If
%>
[kod]
Här är formuläret:
[kod]
<form name="post" method="post" action="nyheter.asp?visa=spara">
Datum:<input tpe="text" name="datum"><br>
Rubrik:<input type="text" name="rubrik"><br>
Text:<textarea name="text"></textarea><br>
<input type="submit" value="skicka">
</form>
@ndersMedlem sedan juni 200032 967 inläggText är ett reserverat ord, byt namn på fältet.
Får du något felmeddelande, så inkludera detta i felbeskrivningen. (Det känns som att du skulle kunna få ett Syntax error in INSERT INTO-statement eller liknande)
red: dessutom; att skapa ett recordset när man gör INSERT, UPDATE eller DELETE är onödigt, eftersom dylika frågor inte returnerar någonting.
Mvh
Är datum i databasen en text eller ett Datum/tid
isåfall ska du inte ha ' utan #:
Set Rs = Conn.Execute("INSERT INTO Post (Datum, Rubrik, [Text]) VALUES (#" & datum & "#,'" & rubrik & "','" & text & "')")
IicaaqMedlem sedan okt. 20005 273 inlägg
voigtann1 skrev:
Är datum i databasen en text eller ett Datum/tid
isåfall ska du inte ha ' utan #:
Set Rs = Conn.Execute("INSERT INTO Post (Datum, Rubrik, Text) VALUES (#" & datum & "#,'" & rubrik & "','" & text & "')")
OT: Spelar det nån roll om man har access 2000 + ??
@ndersMedlem sedan juni 200032 967 inläggI mina tester med Access 2000 går det precis lika bra att använda apostrofer, och det känns ju mest normalt, eftersom det (vad jag vet) inte finns någon annan dbms som använder annat än apostrofer för att markera datumvärden.
Mvh
vet inte.. men # visar bättre tycker jag :e
IicaaqMedlem sedan okt. 20005 273 inlägg Det är ju dock smidigare att andvända apostrofer om man ska byta dbms
Mvh icaaq
AaspMedlem sedan aug. 2002733 inlägg Får fortfarande felmeddelande:
Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)
[Microsoft][Drivrutin för ODBC Microsoft Access] Typblandningsfel i villkorsuttryck.
/Nyheter/nyheter.asp, line 44
@ndersMedlem sedan juni 200032 967 inläggGjorde du ändringen som voigtann1 föreslog?
AaspMedlem sedan aug. 2002733 inlägg Jag bytte ut fältet Text till Nyhet och ändrade Text till Nyhet i koden också. Borde inte det räcka?
@ndersMedlem sedan juni 200032 967 inläggNej, det här felmeddelandet har inget med det att göra. Prova att göra som voigtann1 föreslår.
AaspMedlem sedan aug. 2002733 inlägg Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][Drivrutin för ODBC Microsoft Access] Syntaxfel i datum i frågeuttrycket '##'.
/Nyheter/nyheter.asp, line 44
@ndersMedlem sedan juni 200032 967 inläggDet verkar som att variabeln datum inte innehåller någonting.
AaspMedlem sedan aug. 2002733 inlägg Så här ser "spara" ut just nu. Rubrik och Datum är text, Nyhet är PM.
<%
Case "spara"
Dim rubrik, nyhet, datum
rubrik = Trim(Request.Form("rubrik"))
nyhet = Trim(Request.Form("nyhet"))
datum = Trim(Request.Form("datum"))
If Len(rubrik) > 0 Then
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("db/databas.mdb")
Set Rs = Conn.Execute("INSERT INTO Post (Datum, Rubrik, Nyhet) VALUES ('" & datum & "','" & rubrik & "','" & nyhet & "')")
Response.Write("<b>Nyheten är sparad!</b>")
Conn.Close
Set Conn = Nothing
End If
%>
@ndersMedlem sedan juni 200032 967 inläggMen; datumet som kommer från formuläret. Fyllde du i något i datumfältet? Det ser ut som att variabeln datum saknar värde.
Och: när man felsöker SQL-frågor så gör man det enklast genom att skriva ut den färdiga SQL-frågan till webbläsaren, så man ser vad som exekveras.
strSQL = "INSERT bla bla bla"
Response.write strSQL
Response.end
AaspMedlem sedan aug. 2002733 inlägg Nu går det att skicka så man kommer till spara utan felmeddelande men inget syns där jag skriver ut nyheterna..
@ndersMedlem sedan juni 200032 967 inläggResponse.end finns med i koden för att inte asp-sidan skall fortsätta exekveras, alltså om du använde det jag gav dig senast så är det till för att slänga fram SQL-frågan till browsern för felsökning. Ingenting sparas alltså i databasen.
AaspMedlem sedan aug. 2002733 inlägg Det sparas i databasen men det skrivs inte ut rätt som det gjorde förut. här är koden där nyheterna skrivs ut:
<%
ase "nyheter"
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("db/databas.mdb")
Set Rs = Conn.Execute("SELECT * FROM Post ORDER BY Id DESC")
Do Until Rs.EOF
%>
<table width="350" cellpadding="0" cellspacing="3" style="border: 1px solid black; background-color: #b1caf3">
<tr>
<td>
<b><%= rs("rubrik") %></b><span style="font-size: 9px"> - <%= rs("datum") %></span><br>
<%= rs("nyhet") %>
<td>
</tr>
</table>
<table>
<tr>
<td height="7"></td>
</tr>
</table>
<%
Rs.Movenext
Loop
Rs.Close : Set Rs = Nothing
Conn.Close : Set Conn = Nothing
%>
@ndersMedlem sedan juni 200032 967 inläggHur skrivs det ut då? Hur ska det skrivas ut?