以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]动态表达式该怎么写?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=100335)

--  作者:minxizai
--  发布时间:2017/5/9 19:49:00
--  [求助]动态表达式该怎么写?
       当前表为入库明细表,入库表主键与库存表的关联列建立了关联。
在入库明细表事件中,要在库存表中查找与主键相同的关联列,该怎么写表达式?

Dim dt As DataRow        
 dt = DataTables("库存").Find("[关联列] = \'" & e.DataRow(_Identify) & "\')
dt = DataTables("库存").Find("[关联列] = \'" & _Identify & "\'")

完整代码
Select Case e.DataCol.Name
    Case "商品名称"
        If e.DataRow.IsNull("商品名称") = False Then \'如果已经输入商品名称
            Dim dr As DataRow = DataTables("库存").AddNew()
            dr("关联列") = e.DataRow("_Identify")
            dr("业务日期") = e.DataRow("业务日期")
            dr("关联业务") = "入库"
            dr("商品名称") = e.DataRow("商品名称")
            dr("往来单位名称") = e.DataRow("供应商")
            dr("关联业务单号") = e.DataRow("单据编号")
            dr("入库_数量") = e.DataRow("数量")
            dr("入库_金额") = e.DataRow("金额")
        End If
    Case "金额"
        e.DataRow("单价") = e.DataRow("金额") / e.DataRow("数量")
        Dim dt As DataRow        \'否则在产品表查找同名的产品行,将找到的行赋值给变量dt
        dt = DataTables("库存").Find("关联列 = e.DataRow("_Identify")")
        If dt IsNot Nothing Then \'如果找到了同名的产品行,也就是dt不是Nothing
            dt("金额") = e.DataRow("金额")
        End If
    Case "单价"
        e.DataRow("金额") = e.DataRow("单价") * e.DataRow("数量")
        Dim dt As DataRow        \'否则在产品表查找同名的产品行,将找到的行赋值给变量dt
        dt = DataTables("库存").Find("[关联列] = \'" & _Identify & "\'")
        If dt IsNot Nothing Then \'如果找到了同名的产品行,也就是dt不是Nothing
            dt("数量") = e.DataRow("数量")
        End If
End Select
[此贴子已经被作者于2017/5/9 20:00:42编辑过]

--  作者:有点蓝
--  发布时间:2017/5/9 20:54:00
--  
Select Case e.DataCol.Name
    Case "商品名称"
        If e.DataRow.IsNull("商品名称") = False Then \'如果已经输入商品名称
            Dim dr As DataRow = DataTables("库存").AddNew()
            dr("关联列") = e.DataRow("_Identify")
            dr("业务日期") = e.DataRow("业务日期")
            dr("关联业务") = "入库"
            dr("商品名称") = e.DataRow("商品名称")
            dr("往来单位名称") = e.DataRow("供应商")
            dr("关联业务单号") = e.DataRow("单据编号")
            dr("入库_数量") = e.DataRow("数量")
            dr("入库_金额") = e.DataRow("金额")
        End If
    Case "金额","数量"
        e.DataRow("单价") = e.DataRow("金额") / e.DataRow("数量")
        Dim dt As DataRow        \'否则在产品表查找同名的产品行,将找到的行赋值给变量dt
        dt = DataTables("库存").Find("[关联列] = " & e.DataRow(_Identify))
        If dt IsNot Nothing Then \'如果找到了同名的产品行,也就是dt不是Nothing
            dt("入库_金额") = e.DataRow("金额")
            dt("入库_数量") = e.DataRow("数量")
        End If
End Select

--  作者:minxizai
--  发布时间:2017/5/9 21:13:00
--  
谢谢解答,还帮助简化了代码
但是修改成这样不行,提示dt = DataTables("库存").Find("[关联列] = " & e.DataRow(_Identify))出错
Select Case e.DataCol.Name
    Case "商品名称"
        If e.DataRow.IsNull("商品名称") = False Then \'如果已经输入商品名称
            Dim dr As DataRow = DataTables("库存").AddNew()
            dr("关联列") = e.DataRow("_Identify")
            dr("业务日期") = e.DataRow("业务日期")
            dr("关联业务") = "入库"
            dr("商品名称") = e.DataRow("商品名称")
            dr("往来单位名称") = e.DataRow("供应商")
            dr("关联业务单号") = e.DataRow("单据编号")
            dr("入库_数量") = e.DataRow("数量")
            dr("入库_金额") = e.DataRow("金额")
        End If
    Case "金额"
        e.DataRow("单价") = e.DataRow("金额") / e.DataRow("数量")
        Dim dt As DataRow        \'否则在产品表查找同名的产品行,将找到的行赋值给变量dt
        dt = DataTables("库存").Find("[关联列] = " & e.DataRow(_Identify))
        If dt IsNot Nothing Then \'如果找到了同名的产品行,也就是dt不是Nothing
            dt("金额") = e.DataRow("金额")
        End If
    Case "单价","数量"
        e.DataRow("金额") = e.DataRow("单价") * e.DataRow("数量")
        Dim dt As DataRow        \'否则在产品表查找同名的产品行,将找到的行赋值给变量dt
        dt = DataTables("库存").Find("[关联列] = " & e.DataRow(_Identify))
        If dt IsNot Nothing Then \'如果找到了同名的产品行,也就是dt不是Nothing
            dt("数量") = e.DataRow("数量")
        End If
End Select
另外请问为什么按帮助文档:非关联表之间的数据同步,修改为
Dim dr As DataRow = DataTables("库存").Find("关联列 = \'" & e.DataRow("_Identify") & "\'")
这样不会提示出错,但是达不到效果,库存不会变化
[此贴子已经被作者于2017/5/9 21:13:38编辑过]

--  作者:minxizai
--  发布时间:2017/5/9 21:19:00
--  
谢谢
dt = DataTables("库存").Find("[关联列] = \'" & e.DataRow("_Identify") & "\'")
解决了

--  作者:有点蓝
--  发布时间:2017/5/9 22:28:00
--  
关联列如果是字符型就加上单引号,如果是整型就不需要