以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 请教代码问题 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=48388) |
||||
-- 作者:shiliang -- 发布时间:2014/3/28 8:30:00 -- 请教代码问题 \'从库存表取平均单价 If e.DataCol.Name = "物料代码" Then \'如果内容发生变动的是品名列 If e.NewValue Is Nothing Then \'如果新值是空白,也就是品名列的内容为空 e.DataRow("加权平均单价") = Nothing \'那么清空此行单价列的内容 End If End If Dim db As DataRow \'否则在产品表查找同名的产品行,将找到的行赋值给变量dr db = DataTables("库存材料表").Find("[物料代码] = \'" & e.NewValue & "\'") Dim dw As DataRow = e.DataTable.DataRows(e.DataTable.DataRows.Count - 1) \'获得最后一行 If db IsNot Nothing Then \'如果找到了同名的产品行,也就是dr不是Nothing e.DataRow("加权平均单价") = dw("加权平均单价") End If 请教:错误在哪里
|
||||
-- 作者:狐狸爸爸 -- 发布时间:2014/3/28 8:38:00 -- 你遇到什么错误? |
||||
-- 作者:狐狸爸爸 -- 发布时间:2014/3/28 8:39:00 -- 从逻辑来说,应该:
If e.DataCol.Name = "物料代码" Then \'如果内容发生变动的是品名列 |
||||
-- 作者:shiliang -- 发布时间:2014/3/28 8:54:00 -- 我需要取得某一物料的最新的加权平均单价,但取不出,取得是所有物料的第一行的值 |
||||
-- 作者:shiliang -- 发布时间:2014/3/28 9:07:00 -- 修改了,也不行 |
||||
-- 作者:狐狸爸爸 -- 发布时间:2014/3/28 9:22:00 -- 你的代码明明取的是最后一行的值,怎么会是第一行呢?
做个简单的例子发上来说话。 |
||||
-- 作者:shiliang -- 发布时间:2014/3/28 9:35:00 -- 我发个附件
|
||||
-- 作者:狐狸爸爸 -- 发布时间:2014/3/28 9:51:00 -- 你代码写在那个表中啊?
|
||||
-- 作者:shiliang -- 发布时间:2014/3/28 9:54:00 -- 材料发放表 |
||||
-- 作者:狐狸爸爸 -- 发布时间:2014/3/28 10:32:00 -- 你的逻辑关系我们有看懂:
If e.DataCol.Name = "物料代码" Then \'如果内容发生变动的是品名列
上面红色的部分逻辑显然不对,材料发放表的新增行可能就是最后一行,怎么会取最后一行的平均单价? 例如我新增一行,最后一行就是新增行自己,自己取自己的平均单价,意义何在? 这里的库存材料表的作用又是什么? 你要理清楚逻辑,业务逻辑只有你自己懂。 |