Foxtable(狐表)用户栏目专家坐堂 → 再次讨教:三表汇总-已解决


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

主题:再次讨教:三表汇总-已解决

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


加好友 发短信
等级:小狐 帖子:316 积分:2628 威望:0 精华:0 注册:2013/3/4 20:21:00
  发帖心情 Post By:2013/5/30 8:13:00 [只看该作者]

感谢don的神一般的代码!

图片点击可在新窗口打开查看


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


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

这样不知道能不能满足要求

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:三表汇总 (2).table

增加一个时间表,增加一个函数。直接在窗口1中的,更新按钮可以查看效果

[此贴子已经被作者于2013-5-30 10:45:37编辑过]

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


加好友 发短信
等级:小狐 帖子:316 积分:2628 威望:0 精华:0 注册:2013/3/4 20:21:00
  发帖心情 Post By:2013/5/30 13:18:00 [只看该作者]

以下是引用jspta在2013-5-30 10:44:00的发言:

这样不知道能不能满足要求

 下载信息  [文件大小:472.0 KB  下载次数:6]
图片点击可在新窗口打开查看点击浏览该文件:三表汇总 (2).table

增加一个时间表,增加一个函数。直接在窗口1中的,更新按钮可以查看效果

[此贴子已经被作者于2013-5-30 10:45:37编辑过]

感谢你的回复

我测试了,若删除某一行数据后,该天的日期在综合表里还是有的,只是没有单号、数量等信息了


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


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

以下是引用泡泡在2013-5-30 13:18:00的发言:

感谢你的回复

我测试了,若删除某一行数据后,该天的日期在综合表里还是有的,只是没有单号、数量等信息了

这个确实是问题,但是很简单,查询表是一个视图,你只需要加载的时候,加些判断条件就可以了,

毛坯入库编号 is not null or xx is not null 等 (这个条件你直接加到查询表本身就可以了)

 

所有的步骤汇总的结果就是,只剩下select * from {三表汇总} 一句话而已。

如果加载某个时间段,只需要加上时间

 

如果你是外部数据源(Access或MSSQL),把这个直接做成视图,效果一模一样


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


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

把jspta兄的自定义函数[三表汇总]改为以下似乎也可以达到jspta兄原来的效果

但我不解的是: 看不出如何向[三表汇总]表赋值?  望Jspta兄解惑,多谢!



Dim SQL As String
Dim arr1() As String = {"毛胚表","电镀表","出库表"}
Dim arr2() As String = {"入库日期","入库日期","出库日期"}

For IntA As Integer = 0 To 2
    SQL+ = " Union Select " & arr2(IntA) & " As 时间  from {" & arr1(IntA) & "}"
Next
Dim cmd As new SQLCommand
cmd.CommandText = SQL.substring(7)

Dim t As Table = Tables("时间表")
t.StopRedraw
t.DataTable.DataRows.clear
Dim f As New Filler
f.SourceTable = cmd.ExecuteReader
f.DataTable = t.DataTable '指定数据接收表
f.Fill() '填充数据
t.DataTable.Load
t.ResumeRedraw

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


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

验证是下面这句起作用,不解?
t.DataTable.Load

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


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

以下是引用don在2013-5-30 14:21:00的发言:
验证是下面这句起作用,不解?
t.DataTable.Load

没有赋值,只是把时间从三个表中提取出来,加入到时间表中。(这个是过渡表,连接三个表的关键)

 

再通过三表汇总视图(SQL查询表)自动进行汇总的

 

sql比较半调子,忘记了还可以用union,这样就不用循环了。

 

那句话只是重新执行了三表汇总的SQL查询语句,这样就把新添加的数据加载到这个汇总表中了

[此贴子已经被作者于2013-5-30 14:29:53编辑过]

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


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

OK,原来如此,多谢!

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


加好友 发短信
等级:小狐 帖子:316 积分:2628 威望:0 精华:0 注册:2013/3/4 20:21:00
  发帖心情 Post By:2013/6/1 8:48:00 [只看该作者]

首先感谢don的代码,该段代码已写入拙作的小系统中

在实测中又遇到一个问题,若基础表里,某一天有多条记录的话(即日期字段有重复值),在统计时就会报错

请问怎么能避开这个错误

 


图片点击可在新窗口打开查看此主题相关图片如下:无标题.png
图片点击可在新窗口打开查看


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


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

真是昏啊!你详尽交待问题及要求再说吧,你浪费别人多少宝贵的时间!

你最初(5月15的帖子)发贴时,已提醒你可能存在同日多条记录情况,及给出方法,但你置之不理!

 回到顶部
总数 53 上一页 1 2 3 4 5 6 下一页