Förbannade INSERT!!!

ASP

12 svar · 287 visningar · startad av Mika3l

Medlem sedan nov. 20018 492 inlägg
Trådstart#1

Varför får jag felmeddelandet
Feltyp:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)
[Microsoft][Drivrutin för ODBC Microsoft Access] Typblandningsfel i villkorsuttryck.
forum.asp, line 188

forum.asp(har inte gjort så mycket):

<%
Response.Buffer = True
Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "Driver={Microsoft Access Driver (*.mdb)}; dbq=" & Server.MapPath("forum")
%>
<html>
<head>
<title>Forum</title>
<link rel="stylesheet" type="text/css" href="style.css">
<script language="javascript">
function kollaform()   {
var namn = document.form.av.value;
if(namn.length == 0) {
alert("Inget inlägg utan namn..."); return false;
}
var rubrik = document.form.rubrik.value;
if(rubrik.length == 0) {
alert("Ditt inlägg måste ha en rubrik!"); return false;
}
var inlagg = document.form.inlagg.value;
if(inlagg.length == 0) {
alert("Du måste skriva ett inlägg!"); return false;
}
}
</script>
</head>
<body>

<center><img src="images/forum.jpg" alt="   FORUM   " border="0"></center>
<br>

<table align="center" width="750" cellspacing="0" cellpadding="2" class="border">
 <tr>
  <td>

<% If Request.QueryString("page") = "" Then %>

<table width="750">
 <tr>
  <td width="255">
<strong>Rubrik</strong>
  </td>
  <td width="235">
<strong>Av</strong>
  </td>
  <td width="150">
<strong>Datum:</strong>
  </td>
  <td width="80">
<strong>Svar</strong>
  </td>
 </tr>
<%
MyPage = Request("nextpage")
If MyPage = "" then
MyPage = 1
End If
MyPagesize = 25
SQL = "SELECT IID, rubrik, av, datum, svar FROM data WHERE svar = False ORDER BY IID DESC"
Set rs = Server.CreateObject("ADODB.Recordset")
rs.CursorLocation = 3
rs.CacheSize = 5
rs.open SQL, Connection
If rs.EOF OR rs.BOF Then
Response.Write"</td></tr></table>"
Response.Write"<center><font class=orange><strong>Det finns inga inlägg i forumet!</strong></font></center>"

Else
rs.MoveFirst
rs.PageSize = MyPageSize
MaxCount = Cint(rs.PageCount)
rs.AbsolutePage = MyPage
HowManyRecs = 0
HowManyFields = rs.Fields.Count -1

Do While Not rs.EOF AND HowManyRecs < rs.PageSize
Counter = Counter + 1
%>
<tr>
 <td width="255">
<a href="forum.asp?page=read&IID=<%=rs("IID")%>"><%=rs("rubrik")%></a>
  </td>
  <td width="235">
<%=rs("av")%>
  </td>
  <td width="150">
<%=rs("datum")%>
  </td>
  <td>
<%=rs("antalsvar")%>
  </td>
 </tr>
<%
rs.MoveNext
HowManyRecs = HowManyRecs + 1
Response.Write "<!--			##### Nästa #####			-->"
Loop
rs.Close
Set rs = Nothing
%>
</table>
<center>
<%
If MaxCount <> 0 Then
Response.Write "Du är på sida " & mypage & " av " & maxcount & ".<br>"
pad = "0"
for counter = 1 to maxcount
If counter >= 10 then
pad = ""
End If
ref = "  <a href=forum.asp?nextpage=" & counter & "&pagesize=" & mypagesize & ">" & pad & counter & "</a>  "
Response.Write ref & ""
If Counter mod 10 = 0 Then
Response.Write "<br>"
End If
Next
End If
End If
%>
</center>

<hr class="gron" noshade size="1">

<center><strong>Skriv nytt inlägg</strong></center>
<form name="form" method="post" action="forum.asp?page=infoga" onsubmit="return kollaform()">
<table align="center" cellpadding="2">
 <tr>
  <td>
Ditt namn:
  </td>
  <td>
<input type="text" name="av" maxlength="50">
  </td>
 </tr>
 <tr>
  <td>
Din email:
  </td>
  <td>
<input type="text" name="email" maxlength="50">
  </td>
 </tr>
 <tr>
  <td>
Rubrik:
  </td>
  <td>
<input type="text" name="rubrik" maxlength="50">
  </td>
 </tr>
 <tr>
  <td valign="top">
Inlägg:
  </td>
  <td>
<textarea name="inlagg" rows="12" cols="40"></textarea>
  </td>
 </tr>
</table>
<input type="hidden" name="svar" value="False">
<input type="hidden" name="svartill" value="0">
<input type="hidden" name="antalsvar" value="0">
<center>
<input type="submit" value="  Skicka!  ">
   
<input type="reset" value="  Sudda  ">
</center>
</form>

<% ElseIf Request.QueryString("page") = "infoga" Then
If Request.Form("svar") = True Then
SQL1 = "UPDATE data SET antalsvar = antalsvar +1 WHERE IID = " & Request.Form("svartill") & ""
Connection.Exeucte(SQL1)
End If
rubrik = Trim(Request.Form("rubrik"))
inlagg = Trim(Request.Form("inlagg"))
av = Trim(Request.Form("av"))
email = Trim(Request.Form("email"))
datum = now()
svar = Request.Form("svar")
antalsvar = Request.Form("antalsvar")
svartill = Request.Form("svartill")
SQL2 = "INSERT INTO data (rubrik, inlagg, av, email, datum, svar, antalsvar, svartill) VALUES ('" & rubrik & "','" & inlagg & "','" & av & "','" & email & "','" & datum & "','" & svar & "'," & antalsvar & "," & svartill & ")"
Connection.Execute(SQL2) /// RAD 188!!![/red]
Response.Redirect"forum.asp"
%>

<% Else
Response.Redirect"forum.asp"
End If %>

  </td>
 </tr>
</table>

</body>
</html>

<%
Connection.Close
Set Connection = Nothing
%>

Eftersom det blir fel när servern ska "executa" så är det säkerligen problem med INSERT satsen på raden över...

Tacksam för svar!

/Mika3l

PS.Ursäkta svärordet :p .DS

Medlem sedan jan. 20013 341 inlägg
#2

Vilken databas?
Om du använder access så har jag för mig att du inte ska ha fnuttar runt datum om det är ett datum fält! MySql ska du däremot ha det på!

Medlem sedan okt. 20005 273 inlägg
#3
SQL2 = "INSERT INTO data (rubrik, inlagg, av, email, [datum], svar, antalsvar, svartill) VALUES ('" & rubrik & "','" & inlagg & "','" & av & "','" & email & "',#" & datum & "#,'" & svar & "'," & antalsvar & "," & svartill & ")"
Connection.Execute(SQL2),,128 ' /// RAD 188!!!

Jag gjorde så att jag klammrade datum för att jag tror det är ett namnskyddat ord i access, sen gjorde jag även som aleborg sa att jag hade in datumet inom brädgårdar(#)... hoppas det hjälper :)

/Red. Jag la även till ,,128 som gör så att det inte produceras något recordset av Execute kommandot.

Medlem sedan jan. 20013 341 inlägg
#4

är datum ett reserverat ord? Trodde att det var Date som var reserverat, har M$ börjat ha svenska även i programeringen???

Medlem sedan okt. 20005 273 inlägg
#5

http://cgi.webforum.nu/wf/Forum11/HTML/004742.html

jag vet inte om det stämmer men det kan ju vara det som är felet....bäst att ta det säkra...

Medlem sedan nov. 20018 492 inlägg
#6

Hmmm...
Det fungerade inte med din kod icaaq :(
Får samma felmeddelande igen...
Jag använder en Accessdatabas(som du kan se på databaskopplingen).

/Mika3l

Medlem sedan okt. 20005 273 inlägg
#7

om du skriver:

SQL2 = "INSERT INTO data (rubrik, inlagg, av, email, [datum], svar, antalsvar, svartill) VALUES ('" & rubrik & "','" & inlagg & "','" & av & "','" & email & "',#" & datum & "#,'" & svar & "'," & antalsvar & "," & svartill & ")"
Response.Write SQL2
Response.End
Connection.Execute(SQL2),,128 ' /// RAD 188!!!

Vad får du då ?

Medlem sedan okt. 20005 273 inlägg
#8
SQL2 = "INSERT INTO data(rubrik,"&_
" inlagg,"&_
" av,"&_
" email,"&_
" [datum],"&_
" svar,"&_
" antalsvar,"&_
" svartill)"&_
" VALUES('" & rubrik & "',"&_
" '" & inlagg & "',"&_
" '" & av & "',"&_
" '" & email & "',"&_
" #" & datum & "#,"&_
" '" & svar & "',"&_
" " & antalsvar & ","&_
" '" & svartill & "')"
Connection.Execute(SQL2),,128 ' /// RAD 188!!!

Om inte denna fungerar så får du skriva vad för fält typer alla fält har...

Medlem sedan nov. 20018 492 inlägg
#9

Koden fungerade inte, fick samma felmeddelande :(

forum.mdb

IID | AutoNumber(Primary Key)
rubrik | text
inlagg | PM/Memo
av | text
email | text
datum | Date/Time
svar | Yes/No
antalsvar | Number
svartill | Number

Så ser databasen ut.
Kan det vara något med email måntro...?

/Mika3l

Medlem sedan juni 200032 967 inlägg
#10

I Access:
Datumvärden omges med brädgård, så långt allt ok.
Text/PM/Memo-värden skall du omge med apostrofer. Det har du gjort.
Tal skall inte omges av någonting. Varför har du apostrofer runt Svartill? Det är ett talfält, och skall inte ha apostrofer.

Sedan funderar jag över ditt Yes/No fält. Hur ser värdet du vill stoppa in där ut?

Jag tror att den förväntar sig antingen True eller False, utan apostrofer runt värdet.

Mvh,

Medlem sedan nov. 20018 492 inlägg
#11

Japp, jag ska ha True samt False i svar fältet.
Jag får ta bort lite apostrofer och kolla om det fungerar!

/Mika3l

Medlem sedan nov. 20018 492 inlägg
#12

Nej, det vill inte fungera nu heller x(
Jag får felmeddelandet Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][Drivrutin för ODBC Microsoft Access] Syntaxfel (operator saknas) i frågeuttrycket '2001-12-25 21:56:32'.
forum.asp, line 188

forum.asp
-----------
[kod]
rubrik = Trim(Request.Form("rubrik"))
inlagg = Trim(Request.Form("inlagg"))
av = Trim(Request.Form("av"))
email = Trim(Request.Form("email"))
datum = now()
svar = Request.Form("svar")
antalsvar = Request.Form("antalsvar")
svartill = Request.Form("svartill")
SQL2 = "INSERT INTO data(rubrik, inlagg, av, email, datum, svar, antalsvar, svartill) VALUES ('" & rubrik & "','" & inlagg & "','" & av & "','" & email & "', " & datum & ", '" & svar & "', " & antalsvar & ", " & svartill & ")"
Connection.Execute(SQL2) '///RAD 188!
Response.Redirect"forum.asp"

Vad är det för fel nu då?!

Förresten, God jul och gott nytt år allesammans! :e

/Mika3l

Medlem sedan juni 200032 967 inlägg
#13

Vad är fältet datum av för datatyp? Om det är typen datum skall du ha brädgårdar runt värdet:

SQL2 = "INSERT INTO data(rubrik, inlagg, av, email, datum, svar, antalsvar, svartill) VALUES ('" & rubrik & "','" & inlagg & "','" & av & "','" & email & "', #" & datum & "#, '" & svar & "', " & antalsvar & ", " & svartill & ")"

Mvh,

257 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
116 ms — ändringar (db)