Foxtable(狐表)用户栏目专家坐堂 → [求助]动态表达式该怎么写?


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

主题:[求助]动态表达式该怎么写?

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


加好友 发短信
等级:幼狐 帖子:175 积分:1652 威望:0 精华:0 注册:2015/6/10 13:50:00
[求助]动态表达式该怎么写?  发帖心情 Post By: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编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109489 积分:557107 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:175 积分:1652 威望:0 精华:0 注册:2015/6/10 13:50:00
  发帖心情 Post By: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
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:175 积分:1652 威望:0 精华:0 注册:2015/6/10 13:50:00
  发帖心情 Post By:2017/5/9 21:19:00 [只看该作者]

谢谢
dt = DataTables("库存").Find("[关联列] = '" & e.DataRow("_Identify") & "'")
解决了

 回到顶部
帅哥,在线噢!
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109489 积分:557107 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/5/9 22:28:00 [只看该作者]

关联列如果是字符型就加上单引号,如果是整型就不需要

 回到顶部