注册 登录
编程论坛 ASP技术论坛

[求助]错误 '800a01a8' 缺少对象: ''

bestmayli 发布于 2007-08-22 15:55, 2049 次点击

运行程序出现如下错误提示:

Microsoft VBScripte 执行阶段错误 '800a01a8'
此处需要物件: ''
列164


列l64,附近代码如下(在此第四行即为列164):
<%
do while Not rsChamber.EOF
Set rsBooking = Server.CreateObject("ADODB.Recordset") SqlBooking="SELECT IIf(cint((csng(startdate)-csng(cdate(left(cdate('"&nowdate&"'),10))))*24)*4+295>295,cint((csng(startdate)-csng(cdate(left(cdate('"&nowdate&"'),10))))*24)*4+295,295) AS start, IIf(cint((csng(enddate)-csng(cdate(left(cdate('"&nowdate&"'),10))))*24)*4+295<967,cint((csng(enddate)-csng(cdate(left(cdate('"&nowdate&"'),10))))*24)*4+295,967) AS [end], * FROM AllBooking WHERE (enddate>=left(cdate('"&nowdate&"'),10) And startdate<left(cdate('"&nowdate&"')+7,10)) and ID='"&rsChamber("ID")&"' ORDER BY StartDate"

%>

大侠,帮我看看,我每个字都看了,就是没有发现哪个地方需要'', 谢谢!急

16 回复
#2
阳光白雪2007-08-22 16:42
enddate和startdate 是日期型吧,查询时应该有 ''

left(cdate('"&nowdate&"'),10) 建议不要这样写,例如:
nowdate = "2007-8-6 00:15:25" 返回的结果是: 2007-8-6 0 很明显会出错

可以改成:
nowdate = date() ''只取日期

SQL中改成:
... enddate>='"& nowdate &"' And startdate < '"& dateAdd("d",7,nowdate) &"' ...
#3
bestmayli2007-08-23 09:22
版主,好高兴看到你的指点哟!!!
你是说 把这句: WHERE (enddate>=left(cdate('"&nowdate&"'),10) And startdate<left(cdate('"&nowdate&"')+7,10))

改成: Where enddate>='"& nowdate &"' And startdate < '"& dateAdd("d",7,nowdate) &"'

这样返回的结果不会出错?我改了这样的,嗯,结果不会出错,可那个“此处需要物件: '' ”的问题还是存在呢!


enddate和startdate 是日期型吧,查询时应该有 '',可是我看我的都有'',SELECT IIf(cint((csng(startdate)-csng(cdate(left(cdate('"&nowdate&"'),10))))*24)*4+295>295。您说改具体怎么改呢?谢谢哟!
#4
ayue2222007-08-23 09:31
你的 IIf 函数使用错误..

正确格式:
IIf(expr, truepart, falsepart)
IIf(表达式,真的部分,假的部分)

这3个部分都是必要的 ... 不明白你的IIF里面2个参数是什么..你自己看着修改吧 ....
#5
阳光白雪2007-08-23 09:44

<%
Dim nowdate = Date() ''只取日期部分

Do While Not rsChamber.EOF
Set rsBooking = Server.CreateObject("ADODB.Recordset")
SqlBooking="SELECT IIf(datediff(day,startdate,'"& nowdate &"')*24*4+295>295, datediff(day,startdate,'"& nowdate &"')*24*4+295,295) AS start, IIf(datediff(day,startdate,'"& nowdate &"')*24*4+295<967, datediff(day,startdate,'"& nowdate &"')*24*4+295,967) AS [end], * FROM AllBooking WHERE enddate>='"& nowdate &"' And startdate<'"& DateAdd("d",7,nowdate) &"' and ID='"& rsChamber("ID") &"' ORDER BY StartDate"
%>

#6
阳光白雪2007-08-23 09:46
以下是引用ayue222在2007-8-23 9:31:09的发言:
你的 IIf 函数使用错误..

正确格式:
IIf(expr, truepart, falsepart)
IIf(表达式,真的部分,假的部分)

这3个部分都是必要的 ... 不明白你的IIF里面2个参数是什么..你自己看着修改吧 ....

这个没错,里面括号太多,看的是很晕

#7
bestmayli2007-08-23 10:11
回复:(阳光白雪)

谢谢版主,版主好耐心,好脾气哟!!!
可是不知怎么回事,我用了你的代码代替原来的,怎么还是缺少''这个东东?这怎么回事呢? 我朋友用了这段代码没有报错,怎么我的就报错?是不是其他问题会引发这个问题呢?

#8
bestmayli2007-08-23 10:13
我朋友用的是我那段代码没有报错,我用的是就出现如题的错误!再给看看?


#9
ayue2222007-08-23 10:20
ID='"& rsChamber("ID") &"'

数据库中的 ID 是什么类型的 ??文本类型 字符类型?
#10
bestmayli2007-08-23 10:23
字符类型!
#11
bestmayli2007-08-23 10:27
好像这个关系不大,ID='"& rsChamber("ID") &"'这样写会报错,那样写ID="& rsChamber("ID") &",还是错。死了!!!楼上两位大侠帮我看看哟!

ayue222,好奇怪,我明明看你不在线的图标,可是你又能回答问题?哦,我明白了,你是隐身登录,(*^__^*)
#12
hmhz2007-08-23 17:25
ID是字符型的?开玩笑,你的ID不是自动编号的?
#13
fengmumei2007-08-23 17:48
为什么不把你的SqlBooking输出来看看啊?
response.write(SqlBooking)
#14
bestmayli2007-08-23 18:31
以下是引用fengmumei在2007-8-23 17:48:32的发言:
为什么不把你的SqlBooking输出来看看啊?
response.write(SqlBooking)

不知你是指什么输出来?指程序运行吗?
运行程序就是出现如题的错误呀!如第一楼所述。


ID在我这里是指仪器简称。不知各位大侠是不是说如果是字符型,就要''?

可是不管这里加不加,问题还是依旧哟

不知哪里还缺少'',你们发现了吗?发现了告诉我一声哟,谢谢!

#15
fengmumei2007-08-24 08:25

<%
do while Not rsChamber.EOF
Set rsBooking = Server.CreateObject("ADODB.Recordset")
SqlBooking="SELECT IIf(cint((csng(startdate)-csng(cdate(left(cdate('"&nowdate&"'),10))))*24)*4+295>295,cint((csng(startdate)-csng(cdate(left(cdate('"&nowdate&"'),10))))*24)*4+295,295) AS start, IIf(cint((csng(enddate)-csng(cdate(left(cdate('"&nowdate&"'),10))))*24)*4+295<967,cint((csng(enddate)-csng(cdate(left(cdate('"&nowdate&"'),10))))*24)*4+295,967) AS [end], * FROM AllBooking WHERE (enddate>=left(cdate('"&nowdate&"'),10) And startdate<left(cdate('"&nowdate&"')+7,10)) and ID='"&rsChamber("ID")&"' ORDER BY StartDate"
response.write(SqlBooking)'运行程序输出SqlBooking,将SqlBooking拷贝到查询分析器运行,看看你的SqlBooking语句是不是有错误,还是哪个参数没有值
response.end()'不是说运行错误吗,在此处终止程序的运行,看看上面到底有什么错误,测试完毕在屏蔽此语句

%>

如果你还不明白,我也不知道该怎么办了

#16
fengmumei2007-08-24 08:26

<%
do while Not rsChamber.EOF
Set rsBooking = Server.CreateObject("ADODB.Recordset")
SqlBooking="SELECT IIf(cint((csng(startdate)-csng(cdate(left(cdate('"&nowdate&"'),10))))*24)*4+295>295,cint((csng(startdate)-csng(cdate(left(cdate('"&nowdate&"'),10))))*24)*4+295,295) AS start, IIf(cint((csng(enddate)-csng(cdate(left(cdate('"&nowdate&"'),10))))*24)*4+295<967,cint((csng(enddate)-csng(cdate(left(cdate('"&nowdate&"'),10))))*24)*4+295,967) AS [end], * FROM AllBooking WHERE (enddate>=left(cdate('"&nowdate&"'),10) And startdate<left(cdate('"&nowdate&"')+7,10)) and ID='"&rsChamber("ID")&"' ORDER BY StartDate"
response.write(SqlBooking)'运行程序输出SqlBooking,将SqlBooking拷贝到查询分析器运行,看看你的SqlBooking语句是不是有错误,还是哪个参数没有值
response.end()'不是说运行错误吗,在此处终止程序的运行,看看上面到底有什么错误,测试完毕在屏蔽此语句

%>

如果你还不明白,我也不知道该怎么办了

#17
yms1232007-08-24 12:34
do while Not rsChamber.EOF
Set rsBooking = Server.CreateObject("ADODB.Recordset")
SqlBooking="
SELECT IIf(cint((csng(startdate)-csng(cdate(left(cdate('"&nowdate&"'),10))))*24)*4+295>295,cint((csng(startdate)-csng(cdate(left(cdate('"&nowdate&"'),10))))*24)*4+295,295) AS start, IIf(cint((csng(enddate)-csng(cdate(left(cdate('"&nowdate&"'),10))))*24)*4+295<967,cint((csng(enddate)-csng(cdate(left(cdate('"&nowdate&"'),10))))*24)*4+295,967) AS [end], * FROM AllBooking WHERE (enddate>=left(cdate('"&nowdate&"'),10) And startdate<left(cdate('"&nowdate&"')+7,10)) and ID='"&rsChamber("ID")&"' ORDER BY StartDate"
这段SQL语句的确问题最大。
1