Foxtable(狐表)用户栏目专家坐堂 → [求助]跨表填充,增加判断条件后死机(已解决)


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

主题:[求助]跨表填充,增加判断条件后死机(已解决)

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/4/2 21:29:00 [显示全部帖子]

 效率问题,建议用sql语句来做,参考代码

 

'日期转换
Dim rq As Date = Today()
'删除加班补休填报所有行
DataTables("在册名单").DeleteFor("[编号] Is Not Null ")

MainTable= Tables("在册名单")

 

Dim cmd As new SQLCommand
cmd.CommandText = "Select d.*, c.入监日期, c.离监日期 from {名册清单} As c inner join (Select b.编号, b.监区, b.单位, b.变动日期 from (Select 编号,max(变动日期) As 变动日期 from {变动日期} group by 编号) As a inner join {变动日期} As b  on a.编号 = b.编号 And a.变动日期 = b.变动日期) As d on c.编号 = d.编号" _
 & " where " & "入监日期 <= #" & rq & "# And 离监日期 > #" & rq & "#"
Dim f As New Filler
f.SourceTable = cmd.ExecuteReader
f.DataTable = DataTables("在册名单") '指定数据接收表
f.Fill() '填充数据

 

Tables("在册名单").Sort = "单位,编号"
Tables("在册名单").AutoSizeCols()
Tables("在册名单").Cols.Frozen = 4
Tables("在册名单").ListMode = True
With Tables("在册名单") '返回最末行
    .Position = .Rows.Count - 1
End With
'DataTables("在册名单").Save()


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/4/3 10:46:00 [显示全部帖子]

 回复6楼,应该是没有问题的。但是这种sql的方法,你使用之前,先把数据来源表保存才行,这样数据才正确。

 

 效率的话,是因为这个问题,你可以变通这改一下

 

http://www.foxtable.com/help/topics/2219.htm

 


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/4/3 13:58:00 [显示全部帖子]

我也来凑凑热闹

 

'日期转换
Dim rq As Date = Today()
'删除加班补休填报所有行
DataTables("在册名单").DeleteFor("[编号] Is Not Null ")
MainTable= Tables("在册名单")

 

Dim cmd As new SQLCommand
cmd.CommandText = "Select d.*, c.入监日期, c.离监日期 from {名册清单} As c inner join (Select b.编号, b.监区, b.单位, b.变动日期 from (Select 编号,max(变动日期) As 变动日期 from {变动日期} where 变动日期 <= #" & rq & "# group by 编号) As a inner join {变动日期} As b  on a.编号 = b.编号 And a.变动日期 = b.变动日期) As d on c.编号 = d.编号" _
 & " where " & "入监日期 <= #" & rq & "# And 离监日期 > #" & rq & "#"
Dim f As New Filler
f.SourceTable = cmd.ExecuteReader
f.DataTable = DataTables("在册名单") '指定数据接收表
f.Fill() '填充数据

 

Tables("在册名单").Sort = "单位,编号"
Tables("在册名单").AutoSizeCols()
Tables("在册名单").Cols.Frozen = 4
Tables("在册名单").ListMode = True
With Tables("在册名单") '返回最末行
    .Position = .Rows.Count - 1
End With
'DataTables("在册名单").Save()
 


 回到顶部