Foxtable(狐表)用户栏目专家坐堂 → DataSource动态绑定问题


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

主题:DataSource动态绑定问题

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


加好友 发短信
等级:三尾狐 帖子:760 积分:5430 威望:0 精华:0 注册:2012/10/5 21:53:00
DataSource动态绑定问题  发帖心情 Post By:2018/8/11 15:03:00 [只看该作者]

窗口加载后执行
e.Form.Controls("Table1").Table.DataSource  = Tables("明细_Table1").DataTable

其中Tables("明细_Table1")为主窗口的一个副本表,e.Form.Controls("Table1")为独立窗口的Table1表,如果Tables("明细_Table1")的主窗口第一次打开,然后打开独立窗口,上述代码能执行,结果在主窗口不关闭的情况下再次打开独立窗口结果报错,显示不存在名称为独立窗口_Table1的datatable ,请问这个是怎么回事?

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


加好友 发短信
等级:超级版主 帖子:110790 积分:563882 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/8/11 15:27:00 [只看该作者]

没有必要这样用吧。

独立窗口的Table1表同样绑定同一个表,同样设置为副本,设置一样的筛选条件即可

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


加好友 发短信
等级:三尾狐 帖子:760 积分:5430 威望:0 精华:0 注册:2012/10/5 21:53:00
  发帖心情 Post By:2018/8/11 15:30:00 [只看该作者]

因为主窗口的Tables("明细_Table1")是从别的地方动态加载过来的,然后比较大,我需要每次打开是做查询选择,所以我的想法是在主窗口先加载,然后做个独立窗口加载这个表的内容,这样Tables("明细_Table1")就不用每次去加载,速度快很多。

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


加好友 发短信
等级:超级版主 帖子:110790 积分:563882 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/8/11 15:40:00 [只看该作者]

如果数据量达到一定程度,独立窗口也不可能全部加载,这个不是办法。

可以通过几个方面优化一下查询速度
1、给数据库表加上合适的索引
2、查询条件尽量避免使用like,in,is null等等条件
3、查询的结果如果多,可以使用分页显示
4、尽量加上日期范围条件
5、如果查询的数据范围相对固定,比如以本月(/本季/本年)为主,可以把本月(/本季/本年)的数据一次性加载到一个主表/临时表中使用
[此贴子已经被作者于2018/8/11 15:39:51编辑过]

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


加好友 发短信
等级:三尾狐 帖子:760 积分:5430 威望:0 精华:0 注册:2012/10/5 21:53:00
  发帖心情 Post By:2018/8/11 15:49:00 [只看该作者]

目前主窗口的Tables("明细_Table1")加载的话大概是2秒左右,但是我先加载后,用独立窗口再加载主窗口已经加载数据的话,速度基本是秒开,加载过来的数据在1万条左右。我目前就是想实现这个,但是不知道怎么第一次能加载,第二次他就报错。

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


加好友 发短信
等级:超级版主 帖子:110790 积分:563882 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/8/11 16:01:00 [只看该作者]

不能这样使用的。既然经常要用,为什么不直接作为主表加载?主表可以设置为初始不加载,需要的时候加载一次

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


加好友 发短信
等级:三尾狐 帖子:760 积分:5430 威望:0 精华:0 注册:2012/10/5 21:53:00
  发帖心情 Post By:2018/8/13 8:41:00 [只看该作者]

我倒是想主表加载,是MYSQL的数据库,可是狐表目前不支持直接链接啊 

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/8/13 10:56:00 [只看该作者]

变通处理一下,加上红字代码

 

forms("窗口2").show
Dim str_Conn As String = "server=voyo;uid=sa;pwd=hailun.;database=test"
Dim conn As New System.Data.SqlClient.sqlConnection(str_Conn)
conn.Open()
Dim mda As New System.Data.SqlClient.SQLDataAdapter("select * from table_1" , conn) '这里可以设置你的查询语句
Dim ds As New System.Data.DataSet()
mda.Fill(ds, "TableTemp") 'MySQLDataAdapter方法把数据放到一个新建的临时表里,这个临时表名可自定义,我这里写TableTemp
forms("窗口2").controls("Table1").Table.DataSource = ds.Tables("TableTemp") '把刚才的临时表TableTemp填充到我们的控件Table1里
conn.Colse

 

forms("窗口1").show
forms("窗口1").controls("Table1").Table.DataSource = forms("窗口2").controls("Table1").Table.DataTable
forms("窗口2").controls("Table1").Table.DataSource = forms("窗口1").controls("Table1").Table.DataTable

 

 

 


 


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


加好友 发短信
等级:三尾狐 帖子:760 积分:5430 威望:0 精华:0 注册:2012/10/5 21:53:00
  发帖心情 Post By:2018/8/13 14:31:00 [只看该作者]

谢谢,照此方法,问题解决了!
[此贴子已经被作者于2018/8/13 14:31:03编辑过]

 回到顶部