以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 有点甜老师,您再帮我看看,着急 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=47242) |
||||
-- 作者:happly145 -- 发布时间:2014/3/6 19:25:00 -- 有点甜老师,您再帮我看看,着急 今天测试,发现了一个问题,以前没有注意到。您在帮我看看怎么解决?
此主题相关图片如下:1.jpg 此主题相关图片如下:2.jpg 此主题相关图片如下:3.jpg 工时核算的DATACOLCHANGING的代码是: If e.DataCol.Name.StartsWith("工序") Then Dim filter As String = "产品名称 = \'" & e.DataRow("产品名称") & "\'" Dim fdr As DataRow = DataTables("产品信息").Find(filter) If fdr IsNot Nothing Then Dim fdr2 As DataRow = DataTables("工时统计").Find(filter & " and 单号 = \'" & e.DataRow("单号") & "\'") If fdr2 Is Nothing Then fdr2 = DataTables("工时统计").AddNew fdr2("产品名称") = e.DataRow("产品名称") fdr2("日期") = e.DataRow("日期") fdr2("单号") = e.DataRow("单号") fdr2("数量") = e.DataRow("数量") Else For Each dc As DataCol In DataTables("工时统计").DataCols If dc.Name <> "日期" AndAlso dc.name <> "产品名称" AndAlso dc.name <> "单号" AndAlso dc.Name <> "数量" Then fdr2(dc.name) = Nothing End If Next End If For Each dc As DataCol In e.DataTable.DataCols If dc.Name.StartsWith("工序") AndAlso e.DataRow(dc.name) > "" Then Dim names() As String = e.DataRow(dc.name).split(",") For Each name As String In names Dim sum As Double = e.DataTable.Compute("sum(数量)", filter & " and 单号 = \'" & e.DataRow("单号") & "\' and " & dc.Name & " like \'*" & name & "*\'") sum = sum * fdr(e.DataCol.Name) If DataTables("工时统计").DataCols.Contains(name) Then fdr2(name) += sum End If Next End If Next Else msgbox("没有找到【产品信息】对应的数据!") End If End If 只希望的是乘法关系,即数量乘以工时 [此贴子已经被作者于2014-3-6 23:10:58编辑过]
|
||||
-- 作者:happly145 -- 发布时间:2014/3/6 20:07:00 -- [此贴子已经被作者于2014-3-6 20:13:29编辑过]
|
||||
-- 作者:happly145 -- 发布时间:2014/3/6 21:17:00 -- [此贴子已经被作者于2014-3-6 22:58:21编辑过]
|
||||
-- 作者:happly145 -- 发布时间:2014/3/7 19:14:00 -- 有点甜老师在吗? 每次选择人后,前面工序的值怎么都和本次值一样呀?
[此贴子已经被作者于2014-3-7 19:15:32编辑过]
|
||||
-- 作者:happly145 -- 发布时间:2014/3/7 19:48:00 -- |
||||
-- 作者:有点甜 -- 发布时间:2014/3/7 20:04:00 -- 呃,没看懂你的意思。不是每种工时的累加么? |
||||
-- 作者:happly145 -- 发布时间:2014/3/7 20:23:00 -- 有点甜老师您看 首先 产品信息表中,工时是给定的,不能更改。目的是要与数量相乘。 其次 在工时核算表中,对应的列(工序)中选择李军峰(有可能是多个人完成一个工序),在工时统计表中,李军峰得到的工时就是1乘以10=10 第三,选择石耀辉(他是完成打标的工作),所以石耀辉的工时应为2乘以10=20,但是,这时候,李军峰的值变了,变成石耀辉的工时值了。 |
||||
-- 作者:happly145 -- 发布时间:2014/3/7 20:23:00 -- 然后您再看后面 此主题相关图片如下:5.jpg |
||||
-- 作者:有点甜 -- 发布时间:2014/3/7 20:53:00 -- 哦,你改一下代码
If e.DataCol.Name.StartsWith("工序") Then |