Access为子窗体设置数据源
2014-05-13 19:58 coleev | 分类:数据库DB | 浏览561次
设有一个数据库Db,其有窗体frm,表tbl,
frm中有一个子窗体控件chd;
******************************************************************以上是前置条件
LZ已尝试在frm的【打开】事件中对一个DAO.Recordset对象的数据源设置为tbl的内容,形式如下
Dim SQL as String
SQL="SELECT * FROM tbl"
Dim rs as DAO.Recordset
Set rs=CurrentDb.OpenRecordset(SQL,dbopendynaset)
求解:如何将子窗体chd的数据源设置为这个rs的数据?因为考虑到动态灵活和数据安全,不愿意将chd直接和tbl绑定。
frm中有一个子窗体控件chd;
******************************************************************以上是前置条件
LZ已尝试在frm的【打开】事件中对一个DAO.Recordset对象的数据源设置为tbl的内容,形式如下
Dim SQL as String
SQL="SELECT * FROM tbl"
Dim rs as DAO.Recordset
Set rs=CurrentDb.OpenRecordset(SQL,dbopendynaset)
求解:如何将子窗体chd的数据源设置为这个rs的数据?因为考虑到动态灵活和数据安全,不愿意将chd直接和tbl绑定。
我有更好的答案
分享到:
2014-05-13 23:38
提问者采纳
Dim SQL as String SQL="SELECT * FROM tbl" Dim rs as DAO.Recordset Set rs=CurrentDb.OpenRecordset(SQL,dbopendynaset) '补上后面这行代码即可将记录集与窗体绑定 Set Me.chn.Form.Recordset=rs | |
其实DAO已经非常古老了。如果用下面的的代码将数据表与子窗体绑定将会更简便有效:
Private Sub Form_Open(Cancel As Integer) Me.chn.Form.RecordSource = "SELECT * FROM tbl" End Sub |
追问
3Q,目前只看到了DAO
但是,再请教一下:为毛还是报错啊,如图
回答
我给出的代码,已经测试过了。没问题的。
出错的原因有很多种可能,请将你出错的完整代码贴出来,我全面检查一下,如果有窗体的设计视图截图会更好一些。从表面上看可能是,控件名引用错误,例如,子窗体名称不正确
出错的原因有很多种可能,请将你出错的完整代码贴出来,我全面检查一下,如果有窗体的设计视图截图会更好一些。从表面上看可能是,控件名引用错误,例如,子窗体名称不正确
等
追问
就是一个自己想到的问题 - 如果的神得空,可否用ADO示范一下,我追加分哦~
回答
因为子窗体未绑定任何“源对象”,运行我的代码当然会报错。
问题可以这样解决
先创建一个窗体,取名ChldTest,里面添加相应数量的非绑定文本框(我加了3个非绑定文本框Text0,Text2,Text4),窗体数据源为空白,窗体默认视图为“数据表”。这个窗体将作为你的子窗体的“源对象” 具体见图
假设数据表“ABC” 有3个字段分别为A ,B,C
为你的主窗体添加下了打开事件过程即可
Private Sub Form_Open(Cancel As Integer) With Me.Child0 .SourceObject = "Form.ChldTest" ‘使用某个窗体作为子窗体的源对象 .Form!Text0.ControlSource = "A" ’绑定字段 .Form!Text2.ControlSource = "B" .Form!Text4.ControlSource = "C" .Form.RecordSource = "select * from ABC" '绑定记录集 End With End Sub | |
当然如果使用数据表或预置的查询作为子窗体的源对象将会更加方便(无需设计子窗体),例如:
Private Sub Form_Open(Cancel As Integer) With Me.Child0 .SourceObject = "Table.ABC" '使用表作为子窗体的源对象 End With End Sub |
又或者预置一个查询1(select * from Tbl)
Private Sub Form_Open(Cancel As Integer) With Me.Child0 .SourceObject = "Query.查询1" '使用查询作为子窗体的源对象 End With End Sub |
至 于ADO动态生成记录集(事先不知道要使用什么表、什么字段)然后将记录集与子窗体绑定(方法类似VB将DataGrid、MSHFLEXGRID控件与 记录集绑定),它需要编写大把大
把的代码,不是百度分就可以打发的!事实上这种解决方案,是可以开发成第三方控件,做商业销售的。有兴趣的话自己研究吧, 技术上完全可行我这里就不提供了。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论