set recordsetname = databasename.openrecordset(SQLString)
if recordsetname.bof <> true and recordsetname.eof <> true then
'do something
end if
Run Code Online (Sandbox Code Playgroud)
2个问题:
上面的测试可能会错误地评估为 false,但只有极少数(我的代码中潜伏着一个测试,今天它失败了,我相信这是 5 年日常使用中的第一次 - 这就是我发现它的方式)。为什么对于非空记录集,bof/eof 之一偶尔会成立。这种情况似乎非常罕见,我想知道为什么会发生这种情况。
这是一个万无一失的替代品吗:
if recordsetname.bof <> true or recordsetname.eof <> true then
Run Code Online (Sandbox Code Playgroud)编辑以添加代码详细信息:
客户有订单,每个订单以一个BeginOrder商品开始,以一个商品结束EndOrder,中间是订单中的商品。
SQL 是:
' ids are autoincrement long integers '
SQLString = "select * from Orders where type = OrderBegin or type = OrderEnd"
Dim OrderOpen as Boolean
OrderOpen = False
Set rs = db.Openrecordset(SQLString)
If rs.bof <> True And …Run Code Online (Sandbox Code Playgroud) 我正在尝试执行如下语句:
UPDATE table1 SET name="Joe" WHERE id='1'; UPDATE table2 SET name="Bob" WHERE id='2'
但是,在执行查询时,我得到:
Microsoft JET数据库引擎错误'80040e14'在SQL语句结束后找到的字符.
但是,当我单独执行语句时,它可以工作.
所以我猜在使用Microsoft Access/JET数据库引擎时,绝对没有办法在单个SQL语句中执行多个查询?