以文本方式查看主题

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

--  作者:wakai
--  发布时间:2017/11/20 23:17:00
--  临时列跨表更新查询出错
以商品ID为关联,输入商品ID后用临时列显示商品单价,现希望修改临时列商品单价后,能自动更新商品表的价格,DataColChanged代码如下,
Select Case e.DataCol.Name
    Case "商品单价"
        If e.OldValue <> e.NewValue Then
            Dim pr As DataRow
            pr = DataTables("合同_商品").Find("[商品ID] = " & e.DataRow("商品ID") )
            If pr IsNot Nothing Then
                DataTables("合同_商品").DataCols("商品ID").RaiseDataColChanged(pr)
            End If
        End If
End Select
提示
无法在 System.String 和 System.Int32 上执行“=”操作。

临时列及数据库类型均设为单精度了
[此贴子已经被作者于2017/11/20 23:20:19编辑过]

--  作者:有点甜
--  发布时间:2017/11/21 8:36:00
--  
Select Case e.DataCol.Name
    Case "商品单价"
        If e.OldValue <> e.NewValue Then
            DataTables("合同_商品").DataCols("商品ID").RaiseDataColChanged("[商品ID] = \'" & e.DataRow("商品ID") & "\'")
        End If
End Select

--  作者:wakai
--  发布时间:2017/11/21 17:15:00
--  
老师还是不行,没有更新到合同_商品表中,会是临时列不能更新吗
--  作者:有点甜
--  发布时间:2017/11/21 17:32:00
--  
贴出你表格【合同_商品】的datacolchanged事件代码。
--  作者:wakai
--  发布时间:2017/11/23 15:01:00
--  
Select Case e.DataCol.Name 
    Case "商品单价"
        Dim Filter As String = "[商品ID] = \'" & e.DataRow("商品ID") & "\'"
        Dim drs As List(Of DataRow) = DataTables("合同_商品").Select(Filter)
        For Each dr As DataRow In drs
            dr(e.DataCol.Name) = e.NewValue
        Next
End Select

--  作者:有点蓝
--  发布时间:2017/11/23 16:18:00
--  
"商品单价"是表达式列吗:http://www.foxtable.com/webhelp/scr/2381.htm
--  作者:有点甜
--  发布时间:2017/11/23 18:19:00
--  

你写5楼代码,还不能实现功能?那就把实例发上来看看。


--  作者:wakai
--  发布时间:2017/11/23 22:44:00
--  
不是表达式列,是临时列
--  作者:有点甜
--  发布时间:2017/11/23 22:54:00
--  

5楼代码如果执行了,肯定会计算。

 

如果无效,做个具体例子发上来测试。