以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]跨表取值赋值问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=146530)

--  作者:大树孔
--  发布时间:2020/2/25 20:38:00
--  [求助]跨表取值赋值问题
狐狸戴迪好
有个问题一直不会处理,看过帮助文档很多次还是不会,请求帮帮忙。

现状:现有三个表,分别为“基本信息”、“企业”和“个体户”,通过“编号”列建立关联。
问题:
1、如何实现“基本信息”表中的“案件名称“列可以根据该表中的“公司名称”和表“企业”、“个体户”及对应的关联表自动生成,即“案件名称“的值为 “公司名称”与“企业名称”、“个体户名称”、“个体户经营者” “案由” 案?
2、追加1:“基本信息”每一行对应的关联表“企业”和“个体户”表的数据可能同时存在,也可能只存在其中之一,如何进行判断?
3、追加2:以上是想通过表实现,如果想通过窗口控件实现,又如何实现?

感谢!
[此贴子已经被作者于2020/2/25 20:38:54编辑过]

--  作者:大树孔
--  发布时间:2020/2/25 20:39:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:跨表取值.table


--  作者:sloyy
--  发布时间:2020/2/25 20:46:00
--  
1 用表达式列
2 不明白什么意思
3 用记录窗

--  作者:大树孔
--  发布时间:2020/2/25 20:51:00
--  [求助]跨表取值赋值问题
1表达式列无法实现,原因在于父表无法引用子表(如您能做到,烦请帮忙一下,感谢)
--  作者:有点蓝
--  发布时间:2020/2/25 21:44:00
--  
比如:

Select Case e.DataCol.Name
    Case  "公司名称","案由","编号"
        Dim s As String = e.DataRow("公司名称")
        Dim dr As DataRow = DataTables("企业").Find("编号 = " & e.DataRow("编号"))
        If dr IsNot Nothing Then
            s = s & dr("企业名称")
        End If
        \'“个体户”参考上面同样的方法查询取值拼到s变量里即可,这个留给自己试试
        e.DataRow("案件名称") = s & e.DataRow("案由") 
End Select

至于窗口,没看到有设计的窗口,不知道窗口到底是怎么样的,所以无法说明

--  作者:大树孔
--  发布时间:2020/2/25 22:59:00
--  [求助]跨表取值赋值问题
不知为何,复制您的代码,没反应。
--  作者:有点蓝
--  发布时间:2020/2/25 23:06:00
--  
旧数据重置一下列:

图片点击可在新窗口打开查看

--  作者:大树孔
--  发布时间:2020/2/25 23:37:00
--  [求助]跨表取值赋值问题
.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2019.12.17.18
错误所在事件:表,企业,DataColChanged
详细错误信息:
Exception has been thrown by the target of an invocation.
Column \'公司名称\' does not belong to table 企业.

关联表增加行会出现这个错误,不知道如何优化好点儿。代码我是放父表的datacolchanged中的

--  作者:有点蓝
--  发布时间:2020/2/26 8:45:00
--  
错误所在事件:表,企业,DataColChanged,给出具体代码