以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  数据填充filler出错  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=58256)

--  作者:andy123
--  发布时间:2014/10/14 16:30:00
--  数据填充filler出错
昨天把两个表的明细列到一个表中,最后生成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编辑过]

--  作者:有点甜
--  发布时间:2014/10/14 16:34:00
--  

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


--  作者:andy123
--  发布时间:2014/10/14 16:46:00
--  
以下是引用有点甜在2014-10-14 16:34:00的发言:

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



检查列名正确。

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

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



--  作者:有点甜
--  发布时间:2014/10/14 17:06:00
--  

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

 

 我测试没有报错。


--  作者:andy123
--  发布时间:2014/10/14 17:33:00
--  
例子来了
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:test.zip

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

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

--  作者:有点甜
--  发布时间:2014/10/14 17:40:00
--  
 如果去到Append有什么问题?不是应该去掉的么?
--  作者:andy123
--  发布时间:2014/10/14 18:05:00
--  
以下是引用有点甜在2014-10-14 17:40:00的发言:
 如果去到Append有什么问题?不是应该去掉的么?


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


--  作者:有点甜
--  发布时间: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
--  发布时间:2014/10/15 9:45:00
--  

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

 


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