我正在开发一个名为iSAMS的学校前端系统,它使用经典的asp,使用SQL Server 2008 R2。
用最简单的术语来说,我的主要asp页面(viewstudent-edit-test.asp)返回并显示数据库表中的两个字段: txtCommentID (报告ID)和 txtComment < / strong>(实际报告)。它看起来像这样:
ReportID Report
-------- ------
32 Good progress, now please edit me ...
我(或用户)需要能够编辑报告列中的数据,此时,当点击报告字段时,文字变得可编辑。
点击“提交”按钮后,会触发另一个名为 updateform.asp 的网页,这就是问题所在。
它会在 updateform.asp 上返回错误:
Error page: /legacy/custommodules/ucasreports/updateform.asp
Error category: adodb.command
Error type: arguments are of the wrong type, are out of acceptable range,
or are in conflict with one another.
Error source:
Error line: 9
...第9行在updateform.asp(第1个 sqlProp.Parameters 行)中:
<!--#INCLUDE FILE="ACN.asp"-->
<%
getConID = request.form("ID")
getCom = request.form("Comment")
Set sqlProp=Server.CreateObject("ADODB.Command")
sqlProp.ActiveConnection=Conn
sqlProp.commandtext="update CAN_Tbl_UCAS_Reports set txtComment=? where
txtCommentID=?"
'--------------
sqlProp.Parameters.Append sqlProp.CreateParameter("@txtComment", adVarChar,
adParamInput, 3500, getCom)
'--------------
sqlProp.Parameters.Append sqlProp.CreateParameter("@txtCommentID",
adInteger, adParamInput, , getConID)
sqlProp.Execute
%>
显示数据的原始页面代码:(viewstudent-edit-test.asp):
sql = "SELECT DISTINCT txtSchoolID, txtID, SubjectTeacher, txtCommentID,
txtComment FROM CAN_Tbl_UCAS_Reports WHERE intReportType = 1 AND
txtSchoolID = " & paramBuilder.NextParameter(intID) & " ORDER BY txtID"
Set rsRecord = Database.GetRs(sql, conn, paramBuilder.Parameters)
if not rsRecord.EOF then
do until rsRecord.EOF
'First we need to create our Variables
ConID = rsRecord("txtCommentID")
Com = rsRecord("txtComment")
%>
<tr>
<td style="text-align:center"><%Response.Write(rsRecord.Fields
("txtCommentID").value)%></td>
<td><%Response.Write(rsRecord.Fields("txtComment").value)%></td>
<td style="text-align:center">
<form action="updateform.asp" method="post">
<input type="text" name="ID" value="<%=ConID%>" />
<textarea rows="10" cols="50" name="Comment"><%=Com%></textarea>
<input type="submit" name="Submit" value="Subsdfmit" />
</form>
</td>
</tr>
<%
rsRecord.Movenext
loop
end if
rsRecord.close
set rsRecord = nothing
%>
最后,我的连接字符串文件,ACN.asp:
<%
Dim Conn
Set Conn = CreateObject("ADODB.Connection")
Conn.ConnectionString = "Provider=SQLOLEDB;Data
Source=sourcebob;UID=userbob;PWD=passwordbob;DATABASE=iBOB;"
Conn.Open
%>
我已经检查了参数的类型和顺序,它们似乎没问题。谷歌搜索错误消息指向缺少连接字符串,但这不是问题。似乎有许多表单接受用户输入,但不是如何成功编辑预先存在的数据。
为这么多代码道歉,但我认为有必要分析这个问题。任何想法都非常感谢!感谢。