以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- DataColChanged中,代码不执行? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=88655) |
-- 作者:yancheng -- 发布时间:2016/8/6 22:47:00 -- DataColChanged中,代码不执行? Se lect Case e.DataCol.name Case "入库单价" Dim dr As DataRow = Tables("入库明细").Current.DataRow Dim cmd As New SQLCommand Dim dt As DataTable cmd.C cmd.CommandText = "S ELECT * Fr om {材料} Where [定额编码] = \'" & dr("定额编码") & "\'" dt = cmd.ExecuteReader() If dt.DataRows.Count > 0 Then dt.DataRows(0)("成本价") = dr("入库单价") MessageBox.show(dt.DataRows.Count) End If Case "供应商编号" Dim dr As DataRow = Tables("入库明细").Current.DataRow Dim cmd As New SQLCommand Dim dt As DataTable cmd.C cmd.CommandText = "SEL ECT * F rom {材料} Where [定额编码] = \'" & dr("定额编码") & "\'" dt = cmd.ExecuteReader() If dt.DataRows.Count > 0 Then dt.DataRows(0)("供应商编号") = dr("供应商编号") MessageBox.show(1) End If End Select 入库单价,供应商编号,列的数据修改是从:采购入库.入库明细,关联表中修改的,不知道是不是这个原因?
[此贴子已经被作者于2016/8/7 10:10:00编辑过]
|
-- 作者:yancheng -- 发布时间:2016/8/6 22:47:00 -- 上面两个代码都 不执行,用测试的messbox.show,能正常弹出值 |
-- 作者:大红袍 -- 发布时间:2016/8/7 12:42:00 -- dt = cmd.ExecuteReader(true) If dt.DataRows.Count > 0 Then
dt.DataRows(0)("成本价") = dr("入库单价")
MessageBox.show(dt.DataRows.Count)
dt.Save
End If
|
-- 作者:yancheng -- 发布时间:2016/8/8 18:22:00 -- .NET Framework 版本:2.0.50727.5485 Foxtable 版本:2016.7.8.1 错误所在事件:表,入库明细,DataColChanged 详细错误信息: 调用的目标发生了异常。 对于不返回任何键列信息的 SelectCommand,不支持 UpdateCommand 的动态 SQL 生成。 |
-- 作者:大红袍 -- 发布时间:2016/8/8 18:32:00 -- 你材料表有问题,没有主键列 |
-- 作者:yancheng -- 发布时间:2016/8/8 18:53:00 -- Select Case e.DataCol.name Case "入库单价" Dim dr As DataRow = e.DataRow Dim cmd As New SQLCommand Dim dt As DataTable cmd.C cmd.CommandText = "SEL ECT * Fro m {材料} Where [定额编码] = \'" & dr("定额编码") & "\'" dt = cmd.ExecuteReader(True) If dt.DataRows.Count > 0 Then dt.DataRows(0)("成本价") = dr("入库单价") dt.Save End If Case "定额编码" Dim dr As DataRow = e.DataRow Dim cmd As New SQLCommand Dim dt As DataTable cmd.C cmd.CommandText = "SE LECT * Fro m {材料} Where [定额编码] = \'" & dr("定额编码") & "\'" dt = cmd.ExecuteReader(True) If dt.DataRows.Count > 0 Then dt.DataRows(0)("供应商编号") = dr("供应商编号") dt.DataRows(0)("供应商") = dr("供应商") dt.save End If End Select 这样可以了。刚才的问题是不是我改了代码为: cmd.CommandText = "SE LECT 定额编码,供应商编号 ,供应商,成本价 Fr om {材料} Where [定额编码] = \'" & dr("定额编码") & "\'" 这样好像不行。
|
-- 作者:大红袍 -- 发布时间:2016/8/8 20:17:00 -- 没必要这样修改啊,你可以用sqlfind的啊
http://www.foxtable.com/webhelp/scr/2911.htm
|