|
这段脚本其实就是想判断一下datatable中的值是否已经存在于数据库中,但是当recordset的查询结果为空时系统就会报错,也就是当datatable中的值在数据库中不存在时就报错,不知道问题出在哪里,还请熟悉recordset对象的大虾帮忙看看,谢了
Dim Qname, RowCount, rec,sql, cnn, RowID,childrec
RowCount=datatable.GetSheet(2).GetRowCount
For i=1 to RowCount
datatable.SetCurrentRow(i)
Qname=datatable.Value("Query_Name","All Queries")
Set cnn=createobject("adodb.connection")
Set rec=createobject("adodb.recordset")
cnn.C //这行就是给连接字符串赋值,但是帖子上怎么也显示不出来,大家知道这个意思就行了
cnn.Open
sql="select distinct (query_name) from query where query_name='"&Qname&"'"
rec.Open sql,cnn,1,3
//msgbox rec(0) //为了查一下执行到第二个循环时recordset中的返回值,所以就加了个msgbox, 但是调试时发现从这句就报general run error的
//错误了
If Qname<>rec(0) Then //在datatable中我只设了两行数据,第一行在数据库中已经存在了,第二行没有,执行第一个循环时没
//问题,执行到第二个循环,也就是当rec中没有返回值时就报错了,也是'general run error'
RowID=i
msgbox RowID
Exit for
else
msgbox "This Active Query has already existed in the DataBase"
end if
' For each childrec in rec //这段代码想实现的功能跟上边一样,但是执行到for each in时系统报错说不支持这种属性或方法,所以就换成上面的那种实现
// 方法了,大家能帮我看看是什么原因么?
' If Qname=childrec Then
' msgbox "This Active Query has already existed in the DataBase"
' else RowID=i
' msgbox RowID
' exit for
' End If
'Next
rec.Close
Set rec=nothing
cnn.Close
Set cnn=nothing
Next
[ 本帖最后由 lmwangwang 于 2010-9-16 10:27 编辑 ] |
|