按条件刷新数据
AppendLoad不仅可以用于追载数据,还可以用于按条件批量刷新数据,也就是重新加载符合某一条件的数据。
示例
例如刷新今天的订单,即重新加载今天的订单:
LockBaseMainForm()
'锁定主界面
DataTables("订单").StopRedraw()
DataTables("订单").RemoveFor("日期
= #" &
Date.Today &
"#")
DataTables("订单").AppendLoad("日期
= #" &
Date.Today &
"#")
DataTables("订单").ResumeRedraw()
UnLockBaseMainForm()
'解锁主界面
提示:
1、由于AppendLoad只能追载并不存在于DataTable中的行,所以我们首先要用RemoveFor移除要刷新的行,然后再用AppendLoad追载这些行。
2、我们只能用这种方法小批量地刷新数据,如果需要大量刷新数据,不如直接执行DataTable的Load方法来得简洁高效。
解决屏幕闪烁的终极方法
通过表的StopRedraw和ResumeRedraw方法,可以在执行某些操作之前停止绘制表,操作完成之后恢复绘制表,以避免屏幕闪烁。
但是某些特殊情况,这一招可能会失效,例如上面的代码中连续使用了RemoveFor和AppendLoad,此时单单依靠表的StopRedraw和ResumeRedraw,屏幕
依然会有明显的闪烁。
Foxtable提供了一对方法,分别为LockBaseMainForm和UnLockBaseMainForm方法,前者用于停止绘制主界面,后者用于恢复绘制主界面。
如果使用常规的方法无法解决屏幕闪烁问题,可以如本节的示例代码一样,将相关的代码放在这一对方法之间即可。
如果表位于窗口之中,需要将代码放在Form的StopRedraw和ReseumeRedraw方法之间,才能避免闪烁:
Forms("窗口名").StopRedraw()
'停止绘制窗口
DataTables("订单").StopRedraw()
DataTables("订单").RemoveFor("日期
= #" &
Date.Today &
"#")
DataTables("订单").AppendLoad("日期
= #" &
Date.Today &
"#")
DataTables("订单").ResumeRedraw()
Forms("窗口名").ReseumeRedraw()
'停止绘制窗口
并非所有的操作都需要如此处理,多数时候只需使用表的StopRedraw和ResumeRedraw方法,就可以避免闪烁的发生,到目前为止,我也只发现连续使用RemoveFor和AppendLoad的时候,才需要做这样的特殊处理。