Office中国论坛/Access中国论坛

标题: DAO代码错在哪里呢 [打印本页]

作者: 简    时间: 2012-4-21 22:02
标题: DAO代码错在哪里呢
   
如果我的代码写成:
ssql = Me.sub1.Form.RecordSource
rst.Open ssql, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
……
msgbox rst!生产数量
……

运行中会弹出msgbox提示。

但如果我写成:
ssql = "select * from tbl0 where " & Me.sub1.Form.Filter
rst.Open ssql, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
……
msgbox rst!生产数量
……

则运行中不会弹出msgbox语句。


我就想问,第二部分的ssql语句有错吗,为什么会弹不出msgbox提示呢。

作者: todaynew    时间: 2012-4-22 08:07
本帖最后由 todaynew 于 2012-4-22 08:10 编辑

if isnull(Me.sub1.Form.Filter)=true then
     ssql = "select * from tbl0"
else
    ssql = "select * from tbl0 where " & Me.sub1.Form.Filter
end if


或者
ssql = "select * from tbl0 where " & nz(Me.sub1.Form.Filter,"True")

作者: 简    时间: 2012-4-22 22:19
todaynew 发表于 2012-4-22 08:07
if isnull(Me.sub1.Form.Filter)=true then
     ssql = "select * from tbl0"
else

不管用。

只要应用了Me.sub1.Form.Filter筛选,就无法弹出msgbox。

只有写成"select * from tbl0",才可以弹出msgbox。

这是怎么回事呢。


作者: todaynew    时间: 2012-4-23 10:51
简 发表于 2012-4-22 22:19
不管用。

只要应用了Me.sub1.Form.Filter筛选,就无法弹出msgbox。

那要看完整代码才能判断错误所在
作者: roych    时间: 2012-4-23 21:07
本帖最后由 roych 于 2012-4-23 21:12 编辑
ssql = "select * from tbl0 where " & Me.sub1.Form.Filter
rst.Open ssql, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
……
msgbox rst!生产数量
……

语句有问题,应该这样写:
  1. Dim rst As DAO.Recordset
  2. ssql = "select * from tbl0 where " & Me.sub1.Form.Filter
  3. Set rst = CurrentDb.OpenRecordset(ssql)
  4. MsgBox rst!生产数量
复制代码
DAO.Recordset里没有Open的方法,倒是有个OpenRecordset的方法。此外,可能还得注意要不要使用MoveNext等方法
作者: 简    时间: 2012-4-24 07:24
roych 发表于 2012-4-23 21:07
语句有问题,应该这样写:DAO.Recordset里没有Open的方法,倒是有个OpenRecordset的方法。此外,可能还得 ...

那问问,如果是ADO的正确写法又是什么呢。
作者: roych    时间: 2012-4-29 15:34
简 发表于 2012-4-24 07:24
那问问,如果是ADO的正确写法又是什么呢。
  1. Dim rst As New ADO.Recordset
  2. ssql = "select * from tbl0 where " & Me.sub1.Form.Filter
  3. rst.Open ssql, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
  4. MsgBox rst!生产数量
复制代码





欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3