ADO操作记录集的问题

libiyang 2004-10-18 05:54:12
我在窗体form1把一个记录集rs设置为public
在form1里面,例如执行rs.state正常,但是执行form1.rs.state会出错,提示对象变量或WITH变量未设置。~_~
我把rs设置为public是想在其它窗体上可以调用



up者有分
...全文
124 点赞 收藏 8
写回复
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
libiyang 2004-10-19
就是很奇怪,
回复
artoksxb 2004-10-19
没什么问题的!可能你操作上有问题的
回复
wShineboy 2004-10-19
你这个问题出得有点意思。

我发现在VB中,使用其它窗体公用的Connection和Recordset,跟使用本窗体内部对象一样,不会出任何异常。

刚刚试了一下:
1、新建一个EXE工程,添加窗体Form1和Form2,添加引用——MS ADO 2.0 Library和MS ADO Recordset2.1 Library。(设启动窗体为Form1)
2、在Form2中声明对象变量——
Public RS As New Recordset
Public Conn As New Connection
(实际上,form2中仅此两句代码,甚至没有被用Load加载)
3、在Form1窗体的Load事件过程中加入两句代码:
Form2.Conn.CursorLocation = adUseClient
Form2.Conn.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=F:\Temp\db1.mdb;Jet OLEDB" //刚用Access2000建立的一个小表,包含aa(String)、bb(Single)、cc(Date)。乱加了几条记录。
4、在Form1中画一个CommandButton,并在其Click中加入代码:
Set Form2.RS = Form2.Conn.Execute("Select * From T1")
If Form2.RS.RecordCount > 1 Then Form2.RS.MoveNext
Debug.Print Form2.RS.State
Debug.Print Form2.RS.RecordCount
Debug.Print Form2.RS.Fields("Sid")
====运行结果如下=======================================================================
1
5
2
【注】调试环境:Win98SE、VB6+SP5、ACCESS 2K。
回复
xiaoxiaoP 2004-10-19
同意viena(胡逸之--贱人第二) ,要在别的窗体也使用rs,必须将rs在模块里public.
回复
GGL123 2004-10-18
应该不会出现这样的现象,同意楼上的意见。
回复
lxcc 2004-10-18
在form1里面,例如执行rs.state正常,但是执行form1.rs.state会出错,提示对象变量或WITH变量未设置。~_~
//应该不会!你在什么地方作set rs=new ADODB.RecordSet?
应该是至少在Form_Load()之前或之中

或者在定义处就象 tztz520(午夜逛街) 那样定义,直接实例化!
回复
tztz520 2004-10-18
不会有这个问题的,可能是楼主在form1中还没有实例化rs吧.
Public rs As new Recordset'这样定义试一下
回复
viena 2004-10-18
//我把rs设置为public是想在其它窗体上可以调用
不可以的,除非放在模块里
回复
发动态
发帖子

1180

社区成员

VB 数据库(包含打印,安装,报表)
申请成为版主
社区公告
暂无公告