【问题标题】:How to Insert Multiple rows with same field name Request.Form如何插入具有相同字段名称 Request.Form 的多行
【发布时间】:2013-07-26 05:59:46
【问题描述】:

我有一个从数据库中获取字段值的表单,所有字段都有自己的名称,并且记录是从数据库中循环的。 见下面的代码

<%
While Not RStmtbl.EOF
%>
<tr>
<td><input type="text" value="<% Response.Write(Rstmtbl("tdate"))%>" name="tdate_insert" readonly /></td>
<td><input type="text" value="<% Response.Write(Rstmtbl("day"))%>" name="day_insert" readonly /></td>
<td><input type="text" value="<% Response.Write(Rstmtbl("class"))%>" name="class_insert" readonly /></td>
<td><input type="text" value="<% Response.Write(Rstmtbl("pno"))%>" name="pno_insert" readonly /></td>
<td><input type="text" value="<% Response.Write(Rstmtbl("subject"))%>" name="subject_insert" readonly /></td>
<td><input type="text" value="<% Response.Write(Rstmtbl("teacher"))%>" name="teacher_insert" readonly /></td>
<td>
<select name="status_insert">
<option selected>Choose Status</option>
<option value="Yes">Yes</option>
<option value="No">No</option>
</select>
<input type="hidden" value="<% Response.Write(formno) %>" name="uid_insert">
<input type="hidden" value="<% Response.Write(Now) %>" name="sdate_insert">
</td>
</tr>
<%
RStmtbl.Movenext
Wend
%>

此时一切正常,HTML 输出 access 数据库中的所有记录, 但是当我插入这个表单时,问题就出现了。

这是插入代码

<%
if request.Form("TcfRecord")="Insert" then
Set InsCom=Server.CreateObject("ADODB.Command")
InsCom.ActiveConnection=objConn

InsTD = Trim(request.Form("tdate_insert"))
InsTD = replace(InsTD,"'","''")

InsTD2 = Trim(request.Form("day_insert"))
InsTD2 = replace(InsTD2,"'","''")

InsCL = Trim(request.Form("class_insert"))
InsCL = replace(InsCL,"'","''")

InsPI = Trim(request.Form("pno_insert"))
InsPI = replace(InsPI,"'","''")

InsSBI = Trim(request.Form("subject_insert"))
InsSBI = replace(InsSBI,"'","''")

InsTI = Trim(request.Form("teacher_insert"))
InsTI = replace(InsTI,"'","''")

InsSI = Trim(request.Form("status_insert"))
InsSI = replace(InsSI,"'","''")

InsUI = Trim(request.Form("uid_insert"))
InsUI = replace(InsUI,"'","''")

InsDI = Trim(request.Form("sdate_insert"))
InsDI = replace(InsDI,"'","''")

InsCom.CommandText = "Insert into time_table_status(tdate, day, class, pno, subject, teacher, status, uid, submit_date)Values(?,?,?,?,?,?,?,?,?)"
InsCom.Parameters.Append InsCom.CreateParameter("@tdate_insert", adVarChar, adParamInput, 255, InsTD)
InsCom.Parameters.Append InsCom.CreateParameter("@day_insert", adVarChar, adParamInput, 255, InsTD2)
InsCom.Parameters.Append InsCom.CreateParameter("@class_insert", adVarChar, adParamInput, 255, InsCL)
InsCom.Parameters.Append InsCom.CreateParameter("@pno_insert", adVarChar, adParamInput, 255, InsPI)
InsCom.Parameters.Append InsCom.CreateParameter("@subject_insert", adVarChar, adParamInput, 255, InsSBI)
InsCom.Parameters.Append InsCom.CreateParameter("@teacher_insert", adVarChar, adParamInput, 255, InsTI)
InsCom.Parameters.Append InsCom.CreateParameter("@status_insert", adVarChar, adParamInput, 255, InsSI)
InsCom.Parameters.Append InsCom.CreateParameter("@uid_insert", adVarChar, adParamInput, 255, InsUI)
InsCom.Parameters.Append InsCom.CreateParameter("@sdate_insert", adVarChar, adParamInput, 255, InsDI)

InsCom.Execute

end if
%>

但它返回一个错误。

Microsoft JET 数据库引擎 (0x80040E14) INSERT INTO 中的语法错误 声明。

我想插入具有相同输入字段名称的多行,在搜索时我找到了这个解决方案。但它也没有工作......

<%
For Each item in Request.Form

' Above Insert Code

Next
%>

请告诉我 INSERT 语句有什么问题。谢谢

【问题讨论】:

    标签: ms-access asp-classic


    【解决方案1】:

    Dayclass 都是 reserved words。将它们括在方括号中。

    InsCom.CommandText = "Insert into time_table_status(tdate, [day], [class], pno, subject, teacher, status, uid, submit_date)Values(?,?,?,?,?,?,?,?,?)"
    

    【讨论】:

    • 哦,我真傻。我怎么没想到。感谢您指出。但是这里又出现了另一个错误Microsoft JET Database Engine (0x80040E07) Data type mismatch in criteria expression.
    • 会不会是因为我插入了多个具有相同名称字段的记录?
    • 您将文本作为所有参数的数据类型,但目标字段是否都是文本数据类型?比如submit_date实际上是表格中的文本字段吗?
    • 是的,tdate 数据类型是时间/日期。更新它.. 现在记录插入成功,但出现了另一个问题。数据在每行和每个单元格中插入 6 次 :( 我只想每行插入 1 条记录。
    • 这里是screenshot
    猜你喜欢
    • 2017-08-03
    • 2010-10-03
    • 2017-04-08
    • 2011-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-30
    • 2016-08-25
    相关资源
    最近更新 更多