Foxtable(狐表)用户栏目专家坐堂 → DataColChanged中,代码不执行?


  共有1899人关注过本帖树形打印复制链接

主题:DataColChanged中,代码不执行?

帅哥哟,离线,有人找我吗?
yancheng
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:842 积分:5971 威望:0 精华:0 注册:2013/6/29 9:36:00
DataColChanged中,代码不执行?  发帖心情 Post By:2016/8/6 22:47:00 [只看该作者]

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
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:842 积分:5971 威望:0 精华:0 注册:2013/6/29 9:36:00
  发帖心情 Post By:2016/8/6 22:47:00 [只看该作者]

上面两个代码都 不执行,用测试的messbox.show,能正常弹出值 

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By: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
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:842 积分:5971 威望:0 精华:0 注册:2013/6/29 9:36:00
  发帖心情 Post By:2016/8/8 18:22:00 [只看该作者]

.NET Framework 版本:2.0.50727.5485
Foxtable 版本:2016.7.8.1
错误所在事件:表,入库明细,DataColChanged
详细错误信息:
调用的目标发生了异常。
对于不返回任何键列信息的 SelectCommand,不支持 UpdateCommand 的动态 SQL 生成。


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/8/8 18:32:00 [只看该作者]

 你材料表有问题,没有主键列

 回到顶部
帅哥哟,离线,有人找我吗?
yancheng
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:842 积分:5971 威望:0 精华:0 注册:2013/6/29 9:36:00
  发帖心情 Post By: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("定额编码") & "'"
这样好像不行。 

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/8/8 20:17:00 [只看该作者]

 没必要这样修改啊,你可以用sqlfind的啊

 

http://www.foxtable.com/webhelp/scr/2911.htm

 


 回到顶部