以文本方式查看主题

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

如图,以上代码修改表B内容后,只能更新表A相同内容的第一行,如何遍历更改
图片点击可在新窗口打开查看此主题相关图片如下:更新表a.jpg
图片点击可在新窗口打开查看
表A中所有的行呢?

--  作者:有点蓝
--  发布时间: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产品和结构后
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:多条件替换.foxdb

,代码不执行
[此贴子已经被作者于2019/1/15 10:21:09编辑过]

--  作者:有点甜
--  发布时间:2019/1/15 10:21:00
--  

1、你把产品、结构、客户的值都填入了没有?

 

2、代码改成

 

Select Case e.DataCol.Name
    Case "客户","产品","结构"
        Dim Filter As String = ""
        If e.DataCol.name = "客户" Then
            filter = "[客户] = \'" & e.oldvalue & "\' And [产品] = \'" & e.DataRow("产品") & "\' And [结构] = \'" & e.DataRow("结构") & "\'"
        ElseIf e.DataCol.name = "产品" Then
            filter = "[客户] = \'" & e.DataRow("客户") & "\' And [产品] = \'" & e.oldvalue & "\' And [结构] = \'" & e.DataRow("结构") & "\'"
        ElseIf e.DataCol.name = "结构" Then
            filter = "[客户] = \'" & e.DataRow("客户") & "\' And [产品] = \'" & e.DataRow("产品") & "\' And [结构] = \'" & e.oldvalue & "\'"
        End If
        msgbox(filter)
        DataTables("稿件名称").ReplaceFor(e.DataCol.Name, e.NewValue, Filter)
End Select


--  作者:shissx
--  发布时间:2019/1/15 10:27:00
--  
嗯,我也在改if,上面的可以
然后在Select Case中也加了个
msgbox(filter)
提示的结果是新值,所以搜索不到吧

图片点击可在新窗口打开查看此主题相关图片如下:条件显示.png
图片点击可在新窗口打开查看

[此贴子已经被作者于2019/1/15 10:28:57编辑过]