【问题标题】:Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another VBSCRIPT ERROR参数类型错误、超出可接受范围或相互冲突 VBSCRIPT ERROR
【发布时间】:2015-12-07 18:55:02
【问题描述】:

代码:

 <%@LANGUAGE="VBSCRIPT"%>

<% 
set updatetime = Server.CreateObject("ADODB.Connection")
updatetime.open "DRIVER=SQL Server;***************************************"
If request.form("in_out")="checkin" then
updatetime.execute ("insert into hourlist (username, checkintime, paid,breakCount) values ('"&session("MM_username")&"', '"&Now()&"', 0, 2) ")

End if

If request.form("in_out")="checkout" then
updatetime.execute ("update hourlist set checkouttime='"&Now()&"' where username='"&session("MM_username")&"' and checkouttime is NULL")
End if
If request.form("in_out")="breakcheckin" then
updatetime.execute ("update  hourlist set  breakCheckIn='"&Now()&"' where ID='"&session("MM_ID")&"'  ")
updatetime.execute ("update  hourlist set  breakCheckOut=Null where ID='"&session("MM_ID")&"' and breakCheckOut is not NULL  ") 
End if
If request.form("in_out")="breakcheckout" then
updatetime.execute ("select  breakCheckIn from hourlist where ID='"&session("MM_ID")&"'  ")
Dim BTD
BTD=Round(Csng(DateDiff("n", (updatetime.Fields.Item("breakCheckIn").Value), (Now()))), 2)
updatetime.execute ("update hourlist set breakCheckOut='"&Now()&"', breakCount=breakCount-1 where ID='"&session("MM_ID")&"' ")
updatetime.execute ("update hourlist set breakTime='"&BTD&"' where ID='"&session("MM_ID")&"' ")
updatetime.execute ("update hourlist set breakCheckIn=NULL where ID='"&session("MM_ID")&"' and breakCheckIn is not NULL ")
End if
updatetime.close
set updatetime=nothing
response.redirect "employee.asp?in_out="&request.form("in_out")

%>

根据收音机选择我做不同的事情,我在 21 行(BTD=Round... 行)收到“ADODB.Connection error '800a0bb9'”错误有人可以告诉我我在那一行做错了什么?我写错了“updatetime.Fileds”还是什么?

对不起我的英语不好。

【问题讨论】:

标签: vbscript asp-classic adodb


【解决方案1】:

您的updatetime 是一个连接,而不是一个记录集(带有.Fields)。您可能需要存储来自

的结果/记录集

updatetime.execute ("select breakCheckIn from hourlist where ID='"&amp;session("MM_ID")&amp;"' ")

在变量中并在后面的语句中使用其字段(或者 - 更好 - 参数化查询)。

更新评论:

使用Set 将对象(记录集)分配给变量。

【讨论】:

  • Dim BCI Dim BTD BCI=updatetime.execute ("select breakCheckIn from hourlist where ID='"&amp;session("MM_ID")&amp;"' ") BTD=Round(Csng(DateDiff("n", (BCI.Fields.Item("breakCheckIn").Value), (Now()))), 2) 仍然无法正常工作...我需要制作 Recordset 还是可以使用 Connection 从 DB 中获取所需的字段?
  • Ty Dim BTD Set BCI=updatetime.execute ("select breakCheckIn from hourlist where ID='"&amp;session("MM_ID")&amp;"' ") BTD=Round(Csng(DateDiff("n", (BCI.Fields.Item("breakCheckIn").Value), (Now()))), 2) 就是答案。 :)
【解决方案2】:
Dim myConnection, myRecordset    
set myRecordset = Server.CreateObject("ADODB.Recordset")
set myConnection = Server.CreateObject("ADODB.Connection")
myConnection.Open "DRIVER=SQL Server;***************************************"

myRecordset.Open "select breakCheckIn from hourlist where ID='"&session("MM_ID")&"' ", myConnection

Dim bciValue = myRecordset("breakCheckIn")
Response.Write "BreakCheckIn value is: " & bciValue

myRecordset.Close
myConnection.Close

【讨论】:

  • 一开始你错过了Set,现在你在调用Sub时使用()。
猜你喜欢
  • 2013-11-25
  • 1970-01-01
  • 1970-01-01
  • 2023-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-17
相关资源
最近更新 更多