Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

请教:如何根据动态生成的查询,更新子窗体数据及结构?

秋日心情  发表于:2012-06-09 21:48:26  
复制

记录源是查询1的子窗体SubForm

动态生成查询语句Str,

用下面语句修改查询1的内容

 

    dim qdf as Querydef

    Set qdf = CurrentDb.QueryDefs("查询1")
    qdf.SQL = Str
    qdf.Close
    Set qdf = Nothing

 

由于动态查询语句变了,如原来查询的是数据A/B/C/D列数据,现在查询的是D/E/F/G的数据,

 

此时如何自动更新子窗体的数据由之前的A/B/C/D到新的D/E/F/G?

 

我采用的办法是重新对SubForm的SourceObject="查询.查询1",但是刷新时有一段时间子窗体是空的!

 

请各位老师指点一下,如何解决子窗体空白的问题以及有没有更好的办法,谢谢@@

 

 

 

Top
浪淘沙 发表于:2012-06-10 00:09:34

没实例不太清楚具体情况,SourceObject的RecordSource更新后,不要用refresh刷新,试试用SubForm.Requery刷新数据。



煮江品茶 发表于:2012-06-10 05:53:58
用Requery刷新

秋日心情 发表于:2012-06-10 12:01:38
我上传了附件。
删除了附件中的绝大部分数据,只保留部分测试数据(查询的数据小了很多)。

重新了测试了一下,仍有一下几个问题:
1、使用Requery刷新子窗体内容无效
2、重新对子窗体SourceObject对象进行赋值,可以实现子窗体数据与结构更新,空白时间不明显
(附件中数据较小,空白时间较短,我这里的原始数据较大,空白时间有5s左右,有什么办法解决空白的情况?)
3、对于树控件,如果勾选任何一个子对象的复选框,如何让其父对象的复选框也勾选上?
点击下载此附件

浪淘沙 发表于:2012-06-12 09:43:20

没装2007,打不开。数据量越大,加载时间越长。可考虑

1.如果可以分批加载,减少初始加载量。

2.事件代码中先关闭窗体,再打开该窗体,form_load事件里加载数据,等加载完了窗体才打开,估计可以避开空白窗体。等待期间可以增加提示“正在加载数据,请稍候.....”

3.后台升迁到SQL server可提高速度。

另 树控件复选框的操作还是要对表操作,更新后再重新加载树控件。



秋日心情 发表于:2012-06-24 16:47:22
我现在已安装SQLserver2008,正在学习ACCESS+sqlserver的方式,但是在Access中连接SQLserver中的数据表时只能看到系统Master中的表,看不到我新建的数据表中的表?

总记录:5篇  页次:1/1 9 1 :