以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  答疑  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=71990)

--  作者:zhangxl1964
--  发布时间:2015/7/21 19:26:00
--  答疑
老师:你好!

     有个组合统计,在7月之前,运行正常,可在7月的组合统计时弹出:
    运行错误:
     .NET Framework 版本:2.0.50727.5485
     Foxtable 版本:2014.5.12.1
     错误所在事件:窗口,订单开票,Button1,Click
     详细错误信息:
     已添加了具有相同键的项。

     能否给予解惑

--  作者:大红袍
--  发布时间:2015/7/21 19:34:00
--  
 说明的代码有问题。贴出代码,上传项目。
--  作者:zhangxl1964
--  发布时间:2015/7/21 20:37:00
--  
Tables("订单开票_Table1").StopRedraw
Dim Filter1 As String
With e.Form.Controls("起始日期")
    If .Value IsNot Nothing Then
        If Filter1 >"" Then
            Filter1 = Filter1 & " And "
        End If 
        Filter1 = Filter1 & "日期 < \'" & .Value & "\'"
    End If
End With

Dim bd3 As New SQLGroupTableBuilder("统计表1","订单明细") 
bd3.C
Dim dt3 As fxDataSource
bd3.Groups.AddDef("日期",DateGroupEnum.Year,"年")
bd3.Groups.AddDef("日期",DateGroupEnum.Month,"月")
bd3.Groups.AddDef("订单编号") \'根据型号分组
bd3.Totals.AddDef("订单数量","订单数量") \'对数量进行统计
bd3.Totals.AddDef("订单金额","订单金额") \'对金额进行统计
bd3.Filter = Filter1
dt3 = bd3.BuildDataSource()

Dim bd4 As New SQLGroupTableBuilder("统计表1","发票明细") 
bd4.C
Dim dt4 As fxDataSource
bd4.Groups.AddDef("日期",DateGroupEnum.Year,"年")
bd4.Groups.AddDef("日期",DateGroupEnum.Month,"月")
bd4.Groups.AddDef("订单编号") \'根据型号分组
bd4.Totals.AddDef("发票数量","发票数量") \'对数量进行统计
bd4.Totals.AddDef("合计金额","合计金额") \'对金额进行统计
bd4.Filter = Filter1
dt4 = bd4.BuildDataSource()

dt3.Combine("订单编号",dt4,"订单编号") \'将销售统计数据组合到进货统计数据
Tables("订单开票_Table1").DataSource = dt3 \'将统计结果绑定到Table
With DataTables("订单开票_Table1").DataCols  \'用表达式列计算库存数据
    .Add("期初数量",Gettype(Double), "IsNull([订单数量],0) - ISNULL([发票数量],0)","未开票数量")
    .Add("期初金额",Gettype(Double), "IsNull([订单金额],0) - ISNULL([合计金额],0)","未开票金额")
End With

Dim Filter As String
With e.Form.Controls("起始日期")
    If .Value IsNot Nothing Then
        If Filter >"" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "日期 >= \'" & .Value & "\'"
    End If
End With
With e.Form.Controls("结束日期")
    If .Value IsNot Nothing Then
        If Filter >"" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "日期 <= \'" & .Value & "\'"
    End If
End With

Dim bd1 As New SQLGroupTableBuilder("统计表1","订单明细")
bd1.C
Dim dt1 As fxDataSource
bd1.Groups.AddDef("日期",DateGroupEnum.Year,"年")
bd1.Groups.AddDef("日期",DateGroupEnum.Month,"月")
bd1.Groups.AddDef("订单编号") \'根据型号分组
bd1.Totals.AddDef("订单数量","订单数量") \'对数量进行统计
bd1.Totals.AddDef("订单金额","订单金额") \'对金额进行统计
bd1.Filter = Filter
dt1 = bd1.BuildDataSource()

Dim bd2 As New SQLGroupTableBuilder("统计表1","发票明细")
bd2.C
Dim dt2 As fxDataSource
bd2.Groups.AddDef("日期",DateGroupEnum.Year,"年")
bd2.Groups.AddDef("日期",DateGroupEnum.Month,"月")
bd2.Groups.AddDef("订单编号") \'根据型号分组
bd2.Totals.AddDef("发票数量","发票数量") \'对数量进行统计
bd2.Totals.AddDef("合计金额","合计金额") \'对金额进行统计
bd2.Filter = Filter
dt2 = bd2.BuildDataSource()

dt1.Combine("订单编号",dt2,"订单编号") \'将销售统计数据组合到进货统计数据\'
dt1.Combine("订单编号",dt3,"订单编号") \'将销售统计数据组合到进货统计数据
\'
Tables("订单开票_Table1").DataSource = dt1 \'将统计结果绑定到Table
With DataTables("订单开票_Table1").DataCols  \'用表达式列计算库存数据
    .Add("未开票数量",Gettype(Double), "IsNull([期初数量],0) + IsNull([订单数量],0) - ISNULL([发票数量],0)","未开票数量")
    .Add("未开票金额",Gettype(Double), "IsNull([期初金额],0) + IsNull([订单金额],0) - ISNULL([合计金额],0)","未开票金额")
End With

Tables("订单开票_Table1").SetColVisibleWidth("年|60|月|40|订单编号|100|期初数量|90|期初金额|90|订单数量|90|订单金额|90|发票数量|90|合计金额|90|未开票数量|90|未开票金额|90")

Tables("订单开票_Table1").DefaultRowHeight = 35
DataTables("订单开票_Table1").DataCols("期初数量").SetFormat("#,###.00")
DataTables("订单开票_Table1").DataCols("期初金额").SetFormat("#,###.00")
DataTables("订单开票_Table1").DataCols("订单数量").SetFormat("#,###.00")
DataTables("订单开票_Table1").DataCols("订单金额").SetFormat("#,###.00")
DataTables("订单开票_Table1").DataCols("发票数量").SetFormat("#,###.00")
DataTables("订单开票_Table1").DataCols("合计金额").SetFormat("#,###.00")
DataTables("订单开票_Table1").DataCols("未开票数量").SetFormat("#,###.00")
DataTables("订单开票_Table1").DataCols("未开票金额").SetFormat("#,###.00")


Tables("订单开票_Table1").Cols("年").TextAlign = TextAlignEnum.Center
Tables("订单开票_Table1").Cols("月").TextAlign = TextAlignEnum.Center

With Tables("订单开票_Table1")
    .MergeMode = MergeModeEnum.Standard \'标准合并模式
    .MergeCols.Clear() \'清除原来的合并列
    .MergeCols.Add("年") \'加入要合并的列
    .MergeCols.Add("月")
    .MergeSort = "年,月" \'设置合并模式下的排序方式
    .AllowMerge = True \'启用合并模式

    .Cols("期初数量").GrandTotal = True 
    .Cols("期初金额").GrandTotal = True
    .Cols("订单数量").GrandTotal = True 
    .Cols("订单金额").GrandTotal = True
    .Cols("发票数量").GrandTotal = True 
    .Cols("合计金额").GrandTotal = True
    .Cols("未开票数量").GrandTotal = True 
    .Cols("未开票金额").GrandTotal = True
    .GrandTotal = True
End With
Tables("订单开票_Table1").AutoSizeCols()

Tables("订单开票_Table1").ResumeRedraw

--  作者:大红袍
--  发布时间:2015/7/21 20:41:00
--  

 你看看是不是多连接列的问题

 

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

 


--  作者:zhangxl1964
--  发布时间:2015/7/21 20:44:00
--  
现在的问题时,7月之前能正常运行,在7月份弹出提示的,我找不到原因。
--  作者:大红袍
--  发布时间:2015/7/21 20:44:00
--  
  看4楼啊。
--  作者:大红袍
--  发布时间:2015/7/21 20:45:00
--  

 各个分组统计,单独运行,看有没有数据生成。