以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]动态表达式该怎么写? (http://foxtable.com/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 -- 关联列如果是字符型就加上单引号,如果是整型就不需要 |