以文本方式查看主题

-  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=28941)

--  作者:YDS
--  发布时间:2013/2/23 10:41:00
--  [求助]已解决,谢谢!请教高手这个按钮代码哪里错了?


图片点击可在新窗口打开查看此主题相关图片如下:130223.jpg
图片点击可在新窗口打开查看
按钮代码如下:

DataTables("生产进度").load()
DataTables("生产进度").DataCols("产品编号").RaiseDataColChanged()
DataTables("生产进度").DataCols("领取数量").RaiseDataColChanged()
Dim dt_jc As DataTable = DataTables("生产进度")
Dim dt_tj As DataTable = DataTables("统计表")
dt_tj.DataRows.Clear
For Each name As String In dt_jc.GetUniqueValues("完成数量 > 0", "员工")
Dim dr As DataRow = DataTables("生产进度").Find("员工 = \'" & name & "\'")
    Dim ndr As DataRow = dt_tj.AddNew
    ndr("部门") = dr("部门")
    ndr("员工") = name
    Dim filter As String = "员工 = \'" & name & "\'"
    ndr("支数") = dt_jc.Compute("Sum(完成数量)", filter & " And 日期 = #" & Date.Today & "#")
    ndr("点数") = dt_jc.Compute("Sum(大桨点数)", filter & " And 日期 = #" & Date.Today & "#")
    ndr("返工") = dt_jc.Compute("Sum(返工数量)", filter & " And 日期 = #" & Date.Today & "#")
    ndr("废品") = dt_jc.Compute("Sum(废品数量)", filter & " And 日期 = #" & Date.Today & "#")
    ndr("累计点值") = dt_jc.Compute("Sum(大桨点数)", filter)
Next
Tables("统计表").Sort = "部门,员工"
Tables("统计表").AutoSizeCols()
Tables("统计表").Cols("部门").TextAlign = TextAlignEnum.Center
Tables("统计表").Cols("员工").TextAlign = TextAlignEnum.Center
Tables("统计表").Cols("支数").TextAlign = TextAlignEnum.Center
Tables("统计表").Cols("点数").TextAlign = TextAlignEnum.Center
Tables("统计表").Cols("返工").TextAlign = TextAlignEnum.Center
Tables("统计表").Cols("废品").TextAlign = TextAlignEnum.Center
Tables("统计表").Cols("累计点值").TextAlign = TextAlignEnum.Center
Tables("统计表").SaveExcel("d:\\JXF\\" & Format(Date.Now, "yyyyMMddHHmmss") & ".xls","统计表")
MainTable = Tables("统计表")

[此贴子已经被作者于2013-2-25 15:27:51编辑过]

--  作者:程兴刚
--  发布时间:2013/2/23 10:48:00
--  
逻辑问题,生产进度表被您清空,Find没有找到行,更不存在引用字段的值!
--  作者:YDS
--  发布时间:2013/2/23 11:00:00
--  
生产进度表里面有数据啊,没有清空啊!
--  作者:程兴刚
--  发布时间:2013/2/23 11:32:00
--  
哦,看错变量了,那就判段dr不为空,执行后面的代码!
--  作者:lin_hailun
--  发布时间:2013/2/23 12:06:00
--  
 代码看着没什么错吧?

DataTables("生产进度").DataCols("产品编号").RaiseDataColChanged()
DataTables("生产进度").DataCols("领取数量").RaiseDataColChanged()

 看看是否对应的表属性的事件datacolchanged事件写错了。

-------------------

 解决不了就上传你的数据表。

--  作者:程兴刚
--  发布时间:2013/2/23 17:09:00
--  

DataTables("生产进度").load()
DataTables("生产进度").DataCols("产品编号").RaiseDataColChanged()
DataTables("生产进度").DataCols("领取数量").RaiseDataColChanged()
Dim dt_jc As DataTable = DataTables("生产进度")
Dim dt_tj As DataTable = DataTables("统计表")
dt_tj.DataRows.Clear
For Each name As String In dt_jc.GetUniqueValues("完成数量 > 0", "员工")
    Dim dr As DataRow = DataTables("生产进度").Find("员工 = \'" & name & "\'") \'这里不能避免员工同名的问题,要注意,建议用员工ID或身份证号码
    Dim ndr As DataRow = dt_tj.AddNew
    If dr IsNotnothing
        ndr("部门") = dr("部门")
    End If
    ndr("员工") = name
    Dim filter As String = "员工 = \'" & name & "\'"
    ndr("支数") = dt_jc.Compute("Sum(完成数量)", filter & " And 日期 = #" & Date.Today & "#")
    ndr("点数") = dt_jc.Compute("Sum(大桨点数)", filter & " And 日期 = #" & Date.Today & "#")
    ndr("返工") = dt_jc.Compute("Sum(返工数量)", filter & " And 日期 = #" & Date.Today & "#")
    ndr("废品") = dt_jc.Compute("Sum(废品数量)", filter & " And 日期 = #" & Date.Today & "#")
    ndr("累计点值") = dt_jc.Compute("Sum(大桨点数)", filter)
Next
Tables("统计表").Sort = "部门,员工"
Tables("统计表").AutoSizeCols()
Tables("统计表").Cols("部门").TextAlign = TextAlignEnum.Center
Tables("统计表").Cols("员工").TextAlign = TextAlignEnum.Center
Tables("统计表").Cols("支数").TextAlign = TextAlignEnum.Center
Tables("统计表").Cols("点数").TextAlign = TextAlignEnum.Center
Tables("统计表").Cols("返工").TextAlign = TextAlignEnum.Center
Tables("统计表").Cols("废品").TextAlign = TextAlignEnum.Center
Tables("统计表").Cols("累计点值").TextAlign = TextAlignEnum.Center
Tables("统计表").SaveExcel("d:\\JXF\\" & Format(Date.Now, "yyyyMMddHHmmss") & ".xls","统计表")
MainTable = Tables("统计表")


--  作者:YDS
--  发布时间:2013/2/25 15:26:00
--  
谢谢,已经解决了!