Foxtable(狐表)用户栏目专家坐堂 → 数据填充filler出错


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

主题:数据填充filler出错

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


加好友 发短信
等级:小狐 帖子:322 积分:2662 威望:0 精华:0 注册:2014/6/24 17:29:00
数据填充filler出错  发帖心情 Post By:2014/10/14 16:30:00 [只看该作者]

昨天把两个表的明细列到一个表中,最后生成EXCEL报表的功能眼看就要实现了。
但使用时发现,订单明细正常,而收款明细有漏掉行,检查发现是重复值,于Distinct属性改为FALSE,但马上报错。
报错信息:
.NET Framework 版本:2.0.50727.5485
Foxtable 版本:2014.10.9.1
错误所在事件:
详细错误信息:
该行已经属于此表。

去掉    fss.Distinct = False这句就不报错了,但填充的数据有漏掉一些重复值。
代码一并贴上,请帮忙看看哪里有错?

Dim txt As String
txt =  e.Form.Controls("客户筛选").value
If txt <> "客户筛选" Then   
    Dim f As New Filler   '先填充订单统计
    f.SourceTable = DataTables("订单统计表") '指定数据来源
    f.SourceCols = "客户名称,名称,型号规格,数量,单位,单价,小计,发货日期" '指定数据来源列
    f.Append = False
    f.Distinct = False    '允许出现重复值
    f.Filter = "客户名称 ='" & txt &  "' And 发货标志 = True "
    f.DataTable = DataTables("对账单") '指定数据接收表
    f.DataCols = "客户名称,名称,型号规格,数量,单位,单价,小计,发货日期" '指定数据接收列
    f.Fill() '填充数据
    
    Tables("对账单").Sort = "发货日期"

    Dim fss As New Filler   '再填充收款金额
    fss.SourceTable = DataTables("收款明细表") '指定数据来源
    fss.SourceCols = "日期,收款金额" '指定数据来源列
    fss.Distinct = False
    fss.Append = False
    fss.Filter = "客户名称='" & txt & "'"
    fss.DataTable = DataTables("对账单") '指定数据接收表
    fss.DataCols = "收款日期,收款金额"  '指定数据接收列
    fss.Fill()  '填充数据

    Dim Book As New XLS.Book(ProjectPath & "Attachments\对账单.xls")
    Dim fl As String = ProjectPath & "Reports\对账单.xls"
    Book.Build()   '生成细节区
    Book.Save(fl)  '保存工作簿
    Dim Proc As New Process '打开工作簿
    Proc.File = fl
    Proc.Start()
    DataTables("对账单").DataRows.Clear
Else
    MessageBox.Show("未选择客户,请重新选择!")
End If
[此贴子已经被作者于2014-10-14 16:32:11编辑过]

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


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

 目测,应该是你的列名写错了,检测一下 SourceCols  和 DataCols 对应的列名是否正确。


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


加好友 发短信
等级:小狐 帖子:322 积分:2662 威望:0 精华:0 注册:2014/6/24 17:29:00
  发帖心情 Post By:2014/10/14 16:46:00 [只看该作者]

以下是引用有点甜在2014-10-14 16:34:00的发言:

 目测,应该是你的列名写错了,检测一下 SourceCols  和 DataCols 对应的列名是否正确。



检查列名正确。

 将fss.Append = False这行注释掉就不会报错。

只是有些重复行会漏掉,数据不完整。



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


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

 出错例子发上来,说明意图。

 

 我测试没有报错。


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


加好友 发短信
等级:小狐 帖子:322 积分:2662 威望:0 精华:0 注册:2014/6/24 17:29:00
  发帖心情 Post By:2014/10/14 17:33:00 [只看该作者]

例子来了
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:test.zip

忘记说明问题了,生成EXCEL报表,收款金额的重复值不见了

[此贴子已经被作者于2014-10-14 17:38:00编辑过]

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


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

 如果去到Append有什么问题?不是应该去掉的么?

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


加好友 发短信
等级:小狐 帖子:322 积分:2662 威望:0 精华:0 注册:2014/6/24 17:29:00
  发帖心情 Post By:2014/10/14 18:05:00 [只看该作者]

以下是引用有点甜在2014-10-14 17:40:00的发言:
 如果去到Append有什么问题?不是应该去掉的么?


图片点击可在新窗口打开查看此主题相关图片如下:2014-10-14_180527.jpg
图片点击可在新窗口打开查看
去掉会出现空列。


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


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

 那不是空白,收款表就没有这些列的记录啊

 

Dim f As New Filler   '先填充订单统计

Dim fss As New Filler   '再填充收款金额

f.SourceTable = DataTables("订单明细表") '指定数据来源
f.SourceCols = "客户名称,型号规格,数量,发货日期" '指定数据来源列
'f.Append = False
f.Distinct = False    '允许出现重复值
f.Filter = "客户名称 = '张三'"
f.DataTable = DataTables("对账单") '指定数据接收表
f.DataCols = "客户名称,型号规格,数量,发货日期" '指定数据接收列
f.Fill() '填充数据

Tables("对账单").Sort = "发货日期"

fss.SourceTable = DataTables("收款明细表") '指定数据来源
fss.SourceCols = "客户名称,收款日期,收款金额" '指定数据来源列
'fss.Append = False
fss.Distinct = False
fss.Filter = "客户名称 = '张三'"
fss.DataTable = DataTables("对账单") '指定数据接收表
fss.DataCols = "客户名称,收款日期,收款金额"  '指定数据接收列
fss.Fill()  '填充数据

Dim Book As New XLS.Book(ProjectPath & "Attachments\对账单.xls")
Dim fl As String = ProjectPath & "Reports\对账单.xls"
Book.Build()   '生成细节区
Book.Save(fl)  '保存工作簿
Dim Proc As New Process '打开工作簿
Proc.File = fl
Proc.Start()

'DataTables("对账单").DataRows.Clear


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


加好友 发短信
等级:小狐 帖子:322 积分:2662 威望:0 精华:0 注册:2014/6/24 17:29:00
  发帖心情 Post By:2014/10/15 9:45:00 [只看该作者]

实际想实现的是这种效果:

 


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


 回到顶部