Foxtable(狐表)用户栏目专家坐堂 → 问下窗体表:sqlquery在fill前对应的这个空白表是否能提前控制


  共有4277人关注过本帖树形打印复制链接

主题:问下窗体表:sqlquery在fill前对应的这个空白表是否能提前控制

帅哥哟,离线,有人找我吗?
jspta
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1731 积分:11255 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By:2014/2/21 14:30:00 [只看该作者]

 e.Form.Controls("Table1").StopRedraw

 e.Form.Controls("Table1").ResumeRedraw
这个应该就不会闪烁了

 回到顶部
帅哥哟,离线,有人找我吗?
don
  12楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1812 积分:12993 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2014/2/21 14:46:00 [只看该作者]

以下是引用jspta在2014-2-21 14:30:00的发言:
 e.Form.Controls("Table1").StopRedraw

 e.Form.Controls("Table1").ResumeRedraw
这个应该就不会闪烁了

不是闪烁问题哦,是第一次执行代码时,明显看见窗口Table的第一列,第二列.... 10行10列的问题


 回到顶部
帅哥哟,离线,有人找我吗?
don
  13楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1812 积分:12993 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2014/2/21 14:47:00 [只看该作者]

以下是引用狐狸爸爸在2014-2-21 12:16:00的发言:

那就别Fill了:

 

 

 

按条件加载数据

对于SQLTable和SQLQuery,如果数据量不大,可以将数据全部加载进来,然后根据需要进行筛选显示,这和普通的表没有不同。

如果数据量比较大,可以根据需要加载部分数据,以提高效率。

假定窗口中有个SQLTable,希望加载已经结账的订单,可以在设计窗口的时候,将Select语句设置为:

Select * From {订单} Where 已结账 = True

一些条件加载可能没有办法在设计窗口的时候直接通过固定的Select语句完成。

例如希望打开窗口后加载本月的订单,就只能分两步完成:

1、在设计窗口的时候,Table控件的类型根据需要设置为SQLTable或SQLQuery,并将Select语句设置为:

Select * From {订单} Where [_Identify] Is Null

这样默认不会加载任何订单,是一个空表。

2、在窗口的AfterLoad事件加上代码:

Dim y As Integer = Date.Today.Year
Dim
m As Integer = Date.Today.Month
Dim
dt1 As New Date(y, m, 1)
Dim
dt2 As New Date(y, m, Date.DaysInMonth(y, m)) '获取本月的最后一天
Dim
Filter As String
Filter
= "日期 >= #" & dt1 & "# And 日期 <= #" & dt2 & "#"
DataTables(
"窗口1_Table1").LoadFilter = Filter '设置加载条件
DataTables(
"窗口1_Table1").Load() '加载数据

这样打开窗口后,就会自动加载本月的订单。

有了LoadFilter和Load,我们可以在打开窗口后,随时从后台加载不同条件的数据进来。
例如窗口中有个“最近七天”按钮,希望单击此按钮,加载最近七天的订单,可以将按钮的代码设置为:

Dim dt As Date = Date.Today.AddDays(-7)
DataTables("订单").LoadFilter = "日期 > #" & dt & "#"
DataTables("订单").Load()

LoadFilter和Load,涉及到动态记载的知识,后面会有专门的一章进行系统的讲述,目前只需有所了解即可。



不用Fill是不可能的!


 回到顶部
帅哥哟,离线,有人找我吗?
ysq128
  14楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:251 积分:2594 威望:0 精华:0 注册:2011/4/27 11:37:00
  发帖心情 Post By:2014/2/21 14:59:00 [只看该作者]

默认Table的第一列,第二列.... 10行10列.没有实际意义。不用fill那都用datatable呀。那好多表的呀。都快上百个表了。副本根本就行不通,是同一个datatable来的。只能用fill窗体表。以区别不同的datatable.

 回到顶部
帅哥哟,离线,有人找我吗?
zpx_2012
  15楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:976 积分:8521 威望:0 精华:0 注册:2012/2/9 16:35:00
  发帖心情 Post By:2014/2/21 17:26:00 [只看该作者]

看看这个是否有用?
http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=45228&authorid=0&page=0&star=1

 回到顶部
帅哥哟,离线,有人找我吗?
ysq128
  16楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:251 积分:2594 威望:0 精华:0 注册:2011/4/27 11:37:00
  发帖心情 Post By:2014/2/21 18:11:00 [只看该作者]

上百个窗体表。如果用控制Visible的方法解决这个问题,那问题不是越来越复杂吗?还不如就这样。只有狐表做小的调整就大家都受益了呀。
e.Form.Controls("Table1").Visible = True

[此贴子已经被作者于2014-2-21 18:13:30编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
jspta
  17楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1731 积分:11255 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By:2014/2/22 17:33:00 [只看该作者]

以下是引用ysq128在2014-2-21 18:11:00的发言:

上百个窗体表。如果用控制Visible的方法解决这个问题,那问题不是越来越复杂吗?还不如就这样。只有狐表做小的调整就大家都受益了呀。
e.Form.Controls("Table1").Visible = True



我所有的表格都是用FILL加载的,我加载代码在窗体的AfterLoad事件中执行,其他都用DATATABLE.load执行,重来没发现这个问题


 回到顶部
总数 17 上一页 1 2