Foxtable(狐表)用户栏目专家坐堂 → Table、副表和SQLTable问题求助


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

主题:Table、副表和SQLTable问题求助

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


加好友 发短信
等级:童狐 帖子:219 积分:1687 威望:0 精华:0 注册:2016/4/14 9:45:00
Table、副表和SQLTable问题求助  发帖心情 Post By:2019/1/4 9:39:00 [显示全部帖子]

1、有表1(有列A、B、C、D、E、F......等几十列,10万行左右数据,还会继续增加),副表若干(分别取表1中的相关列),每个副表分别都在相对应的单独窗口,运行起来到还正常,但数据量一上来就很慢很卡;

2、在阅读了帮助和搜索了论坛贴后后,感觉把窗口中的副表换成SQLTable对速度有所帮助,现在的问题:

     (1) SQLTable是否对运行速度提升会有所帮助,要怎么用才好?

     (2) 换成SQLTable后窗口打开时间长了很多,但打开后运行还算快,这是正常的吗?

     (3) 在SQLTable中,逻辑列显示不一样了,表达式列没有了,也没得选,表1中的DataColChanged事件代码也不起作用了,表样式也没有了;

     (4) 在SQLTable中进行编辑修改后,表1没有相应变动,用副表则会,这是为什么?

    水平和理解能力有限,请版主指教!


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


加好友 发短信
等级:童狐 帖子:219 积分:1687 威望:0 精华:0 注册:2016/4/14 9:45:00
  发帖心情 Post By:2019/1/4 10:06:00 [显示全部帖子]

副表currentChanged事件是写了代码,那也只是统计人数用的,就几行代码,这也会影响?

 

If Forms("中高级工考核").Opened Then
    Forms("中高级工考核").Controls("总人数").Text = e.Table.Compute("count(姓名)")
    Forms("中高级工考核").Controls("初级工").Text = e.Table.Compute("count(姓名)", "鉴定等级 = '初级工'")
    Forms("中高级工考核").Controls("中级工").Text = e.Table.Compute("count(姓名)", "鉴定等级 = '中级工'")
    Forms("中高级工考核").Controls("高级工").Text = e.Table.Compute("count(姓名)", "鉴定等级 = '高级工'")
    Forms("中高级工考核").Controls("技师").Text = e.Table.Compute("count(姓名)", "鉴定等级 = '技师'")
    Forms("中高级工考核").Controls("高级技师").Text = e.Table.Compute("count(姓名)", "鉴定等级 = '高级技师'")
    Forms("中高级工考核").Controls("男").Text = e.Table.Compute("count(姓名)", "性别 = '男'")
    Forms("中高级工考核").Controls("女").Text = e.Table.Compute("count(姓名)", "性别 = '女'")
End If

上述代码基本每个副表的currentChanged事件都写了,就这几行

[此贴子已经被作者于2019/1/4 10:07:11编辑过]

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


加好友 发短信
等级:童狐 帖子:219 积分:1687 威望:0 精华:0 注册:2016/4/14 9:45:00
  发帖心情 Post By:2019/1/4 10:31:00 [显示全部帖子]

打开窗口时间不算,我所说的卡顿是指打开窗口之后,鼠标点选表的任意行或单元格会有明显的停顿,点选窗口中的任意一个复选组合框进行筛选查询时也会的明显的卡顿,这是正常的吗?


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


加好友 发短信
等级:童狐 帖子:219 积分:1687 威望:0 精华:0 注册:2016/4/14 9:45:00
  发帖心情 Post By:2019/1/4 11:57:00 [显示全部帖子]

1、我的项目中总共也就3、4个表,且称之为表1、表2、表3、表4,除了表1,其它的表都不存在副表,每个表我都设置放在单独的窗口中;

2、运行项目如果只打开1个或2个副表窗口,运行还算正常,点选表的任意行什么的还不会卡顿很明显,再多开几个副表窗口,卡顿就明显了;

3、表1目前有10万行,60列左右,副表每个也基本上有5-6万行。每个副表都有几列(如姓名、身份证号码、工作单位、批次等)都是从表1中共用的,副表总列数不等;

4、表1所在窗口的复选组合框没有反应(窗口中的表不是副表),而另一个窗口中的表2(不是副表,也没有副表)类似的代码设置又能起作用,这又是为什么?

 

注:表1 的DataColChanged事件目前写了些代码,完全写好的话可能量比较大,主副表的currentChanged事件都差不多,就那几行代码,用来计算人数的。

 

相应的实例不是很好做,清空或减少数据量,运行又很好!

[此贴子已经被作者于2019/1/4 11:58:06编辑过]

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


加好友 发短信
等级:童狐 帖子:219 积分:1687 威望:0 精华:0 注册:2016/4/14 9:45:00
  发帖心情 Post By:2019/1/4 13:13:00 [显示全部帖子]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:我的项目0104.rar

 

删除了3、4万行数据及一些列数据;删除了另外几个表及窗口;劳烦版主给看看,我这个项目是不是有什么问题?


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


加好友 发短信
等级:童狐 帖子:219 积分:1687 威望:0 精华:0 注册:2016/4/14 9:45:00
  发帖心情 Post By:2019/1/4 15:52:00 [显示全部帖子]

全部写进去?那个“鉴定信息汇总”窗口中的复选组合框不能响应是什么原因?

 


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


加好友 发短信
等级:童狐 帖子:219 积分:1687 威望:0 精华:0 注册:2016/4/14 9:45:00
  发帖心情 Post By:2019/1/4 16:36:00 [显示全部帖子]

比如:筛选“鉴定批次”,点“查询”没有反应,其它控件也一样

 

[此贴子已经被作者于2019/1/4 16:37:40编辑过]

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


加好友 发短信
等级:童狐 帖子:219 积分:1687 威望:0 精华:0 注册:2016/4/14 9:45:00
  发帖心情 Post By:2019/1/4 22:15:00 [显示全部帖子]

If fl = "" Then

ElseIf e.Table.filter.IndexOf(fl) < 0 Then '如果没有包括雇员条件
    e.Filter = e.Table.filter & " And " & fl
End If


这段代码一替换进去,决引起报错:语法错误---“AND”运算符前缺少操作数


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


加好友 发短信
等级:童狐 帖子:219 积分:1687 威望:0 精华:0 注册:2016/4/14 9:45:00
  发帖心情 Post By:2019/1/5 14:16:00 [显示全部帖子]

图片点击可在新窗口打开查看currentChanged事件代码写到datacolchanged事件中,窗口中用于统计人数的文本框没有显示,我也按版主说的将代码中的e.table改成了表名,但没什么用,改回来写到Currentchanged事件中就又可以了;
      不过,将副表中的Currentchange事件代码去除后,速度快了不少到是真的!
[此贴子已经被作者于2019/1/5 14:21:44编辑过]

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


加好友 发短信
等级:童狐 帖子:219 积分:1687 威望:0 精华:0 注册:2016/4/14 9:45:00
  发帖心情 Post By:2019/1/5 14:42:00 [显示全部帖子]

DataColChanged事件:
If e.DataCol.Name = "鉴定等级" Then
    e.Form.Controls("总人数").Text = e.DataTable.Compute("count(姓名)",Tables("鉴定管理表").filter)
    e.Form.Controls("初级工").Text = e.DataTable.Compute("count(姓名)", "鉴定等级 = '初级工' And " & iif(Tables("鉴定管理表").filter>"",Tables("鉴定管理表").filter,"1=1"))
    e.Form.Controls("中级工").Text = e.DataTable.Compute("count(姓名)", "鉴定等级 = '中级工' And " & iif(Tables("鉴定管理表").filter>"",Tables("鉴定管理表").filter,"1=1"))
    e.Form.Controls("高级工").Text = e.DataTable.Compute("count(姓名)", "鉴定等级 = '高级工' And " & iif(Tables("鉴定管理表").filter>"",Tables("鉴定管理表").filter,"1=1"))
    e.Form.Controls("技师").Text = e.DataTable.Compute("count(姓名)", "鉴定等级 = '技师' And " & iif(Tables("鉴定管理表").filter>"",Tables("鉴定管理表").filter,"1=1"))
    e.Form.Controls("高级技师").Text = e.DataTable.Compute("count(姓名)", "鉴定等级 = '高级技师' And " & iif(Tables("鉴定管理表").filter>"",Tables("鉴定管理表").filter,"1=1"))
    e.Form.Controls("男").Text = e.DataTable.Compute("count(姓名)", "性别 = '男' And " & iif(Tables("鉴定管理表").filter>"",Tables("鉴定管理表").filter,"1=1"))
    e.Form.Controls("女").Text = e.DataTable.Compute("count(姓名)", "性别 = '女' And " & iif(Tables("鉴定管理表").filter>"",Tables("鉴定管理表").filter,"1=1"))
End If

CurrentChanged事件:
If e.Form.Opened Then
    e.Form.Controls("总人数").Text = DataTables("鉴定管理表").Compute("count(姓名)")
    e.Form.Controls("初级工").Text = DataTables("鉴定管理表").Compute("count(姓名)", "鉴定等级 = '初级工'")
    e.Form.Controls("中级工").Text = DataTables("鉴定管理表").Compute("count(姓名)", "鉴定等级 = '中级工'")
    e.Form.Controls("高级工").Text = DataTables("鉴定管理表").Compute("count(姓名)", "鉴定等级 = '高级工'")
    e.Form.Controls("技师").Text = DataTables("鉴定管理表").Compute("count(姓名)", "鉴定等级 = '技师'")
    e.Form.Controls("高级技师").Text = DataTables("鉴定管理表").Compute("count(姓名)", "鉴定等级 = '高级技师'")
    e.Form.Controls("男").Text = DataTables("鉴定管理表").Compute("count(姓名)", "性别 = '男'")
    e.Form.Controls("女").Text = DataTables("鉴定管理表").Compute("count(姓名)", "性别 = '女'")
End If

窗口文本框始终只显示表的各种的总人数,不会随筛选而变动显示
[此贴子已经被作者于2019/1/5 14:54:28编辑过]

 回到顶部
总数 16 1 2 下一页