以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]跨表引用的自动更新,表达式修改为代码 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=130129) |
||||
-- 作者:shissx -- 发布时间:2019/1/14 11:17:00 -- [求助]跨表引用的自动更新,表达式修改为代码 以下是用表达式列实现的,现在想改为代码: iif([节点]=\'①审稿\', Parent(jgrw).审稿, iif([节点]=\'②组稿\', Parent(jgrw).组稿, null)) iif(Convert(SubString(Parent(gjrw).年级,1,1),\'System.Single\') > 6 and Parent(gjrw).科目=\'语文\',\'文\', iif(Convert(SubString(Parent(gjrw).年级,1,1),\'System.Single\') > 6 and Parent(gjrw).科目=\'物理\',\'理\', \'小\')) iif([节点]=\'①审稿\' and [分级] = \'文\', Parent(jgrw).编文 * Convert(SubString(Parent(jgrw).编效,1,2),\'System.Single\')/100, iif([节点]=\'②组稿\' and [分级] = \'文\', Parent(jgrw).编文 * Convert(SubString(Parent(jgrw).编效,3,2),\'System.Single\')/100, null)) 参考帮助文件中《跨表引用的自动更新》一节,有无关联的代码都试了,3个小时也没试出来。。。求助 If e.DataCol.Name = "产品编号" Then If e.NewValue Is Nothing Then e.DataRow("品名") = Nothing e.DataRow("型号") = Nothing e.DataRow("规格") = Nothing e.DataRow("单价") = Nothing Else Dim dr As DataRow dr = e.DataRow.GetParentRow("产品") If dr IsNot Nothing e.DataRow("品名") = dr("品名") e.DataRow("型号") = dr("型号") e.DataRow("规格") = dr("规格") e.DataRow("单价") = dr("单价") End If End If End If 有疑惑的是,=e.DataRow("列名") 之后,怎么对其数据如表达式列一样进行函数处理,比如:SubString(e.DataRow("品名") ,1,2)提示错误,不知道如果使用才是正确的,或者本身就不能用这个函数?
[此贴子已经被作者于2019/1/14 11:19:35编辑过]
|
||||
-- 作者:有点甜 -- 发布时间:2019/1/14 11:59:00 -- 参考
http://www.foxtable.com/webhelp/scr/0240.htm
|
||||
-- 作者:shissx -- 发布时间:2019/1/14 12:10:00 -- 谢谢,正在测试!!! [此贴子已经被作者于2019/1/14 12:23:05编辑过]
|
||||
-- 作者:shissx -- 发布时间:2019/1/14 18:24:00 -- If e.DataCol.Name = "第一列" Then \'如果内容发生变动的是品名列 If e.NewValue Is Nothing Then \'如果新值是空白,也就是品名列的内容为空 Else Dim dr As DataRow \'否则在产品表查找同名的产品行,将找到的行赋值给变量dr dr = DataTables("表A").Find("[第一列] = \'" & e.OldValue & "\'") If dr IsNot Nothing Then \'如果找到了同名的产品行,也就是dr不是Nothing dr("第一列")= e.DataRow("第一列") End If End If End If |
||||
-- 作者:有点蓝 -- 发布时间:2019/1/14 20:16:00 -- If e.DataCol.Name = "第一列" Then \'如果内容发生变动的是品名列 If e.NewValue Is Nothing Then \'如果新值是空白,也就是品名列的内容为空 Else DataTables("表A").ReplaceFor("第一列",e.newvalue,"[第一列] = \'" & e.OldValue & "\'") End If End If
|
||||
-- 作者:shissx -- 发布时间:2019/1/15 9:41:00 -- 嗯,上面的已经会用,现在用了个多条件的,Filter只有客户的时候正常,后面的And不会加,加了就出错,请问该如何加呢? Select Case e.DataCol.Name Case "客户","产品","结构" Dim Filter As String = "[客户] = \'" & e.DataRow("客户") & "\' And [产品] = \'" & e.DataRow("产品") & "\' And [结构] = \'" & e.DataRow("结构") & "\'" DataTables("稿件名称").ReplaceFor(e.DataCol.Name, e.NewValue, Filter) End Select |
||||
-- 作者:有点甜 -- 发布时间:2019/1/15 10:01:00 --
代码没问题,语法没问题。你执行的时候,报什么错?
|
||||
-- 作者:shissx -- 发布时间:2019/1/15 10:04:00 -- 只有客户的时候,正常执行,加上And产品和结构后
,代码不执行 [此贴子已经被作者于2019/1/15 10:21:09编辑过]
|
||||
-- 作者:有点甜 -- 发布时间:2019/1/15 10:21:00 -- 1、你把产品、结构、客户的值都填入了没有?
2、代码改成
Select Case e.DataCol.Name |
||||
-- 作者:shissx -- 发布时间:2019/1/15 10:27:00 -- 嗯,我也在改if,上面的可以 然后在Select Case中也加了个 msgbox(filter) 提示的结果是新值,所以搜索不到吧
[此贴子已经被作者于2019/1/15 10:28:57编辑过]
|