以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  A表与B表 的列共享问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=84195)

--  作者:kmzb56
--  发布时间:2016/4/25 18:57:00
--  A表与B表 的列共享问题
A表 与B表,想让B表与A表的几列与A表的几列相关的值,并且由A表的值决定,B表的值不能自主修改,我知道的方法是用A表与B表关联,然后B表用表达试的方式指定值为父表的某列,请问有其它用代码的方式实现没?怎么设计?或有帮助文档没?
--  作者:大红袍
--  发布时间:2016/4/25 19:38:00
--  

其它方法:跨表引用

 

http://www.foxtable.com/help/topics/1451.htm

 

http://www.foxtable.com/help/topics/1453.htm

 


--  作者:kmzb56
--  发布时间:2016/4/25 21:47:00
--  
谢谢!看来得再看一下帮助文档了,但这样提醒让我更有针对性,效率也更高。
--  作者:kmzb56
--  发布时间:2016/4/25 22:32:00
--  
这个方式是可以的,但关键是他两个表是得有类似一样的产品编号等,但我的没有,是用identify 与 中一个表的序号做关联,并且没有做单向关联。
--  作者:大红袍
--  发布时间:2016/4/25 22:40:00
--  

那你代码就改一下啊,列名对应就行的。

 

 dr =  DataTables("产品").Find("[_Identify] = \'" & e.NewValue &  "\'")


--  作者:kmzb56
--  发布时间:2016/4/27 20:06:00
--  
If e.DataCol.Name = "_Identify" Then \'如果内容发生变动的是品名列
    If e.NewValue Is Nothing Then \'如果新值是空白,也就是品名列的内容为空
        e.DataRow("客户名称") = Nothing \'那么清空此行单价列的内容
    Else
        Dim dr As DataRow 
 dr = DataTables("客户资料").Find("[_Identify] = \'" & e.NewValue & "\'")
        If dr IsNot Nothing Then \'如果找到了同名的产品行,也就是dr不是Nothing
            e.DataRow("客户名称") = dr("客户名称") 
        End If
    End If
End If

不得行,我是想把业务登记表的客户名称,从客户表上继承下来。这样好像不行哟。

--  作者:大红袍
--  发布时间:2016/4/27 20:08:00
--  
If e.DataCol.Name = "产品编号" Then \'如果内容发生变动的是品名列
    If e.NewValue Is Nothing Then \'如果新值是空白,也就是品名列的内容为空
        e.DataRow("客户名称") = Nothing \'那么清空此行单价列的内容
    Else
        Dim dr As DataRow = DataTables("客户资料").Find("[_Identify] = \'" & e.NewValue & "\'")
        If dr IsNot Nothing Then \'如果找到了同名的产品行,也就是dr不是Nothing
            e.DataRow("客户名称") = dr("客户名称") 
        End If
    End If
End If

--  作者:kmzb56
--  发布时间:2016/4/27 20:25:00
--  
If e.DataCol.Name = "序号" Then \'如果内容发生变动的是品名列
    If e.NewValue Is Nothing Then \'如果新值是空白,也就是品名列的内容为空
        e.DataRow("客户名称") = Nothing \'那么清空此行单价列的内容
    Else
        Dim dr As DataRow 
 dr = DataTables("客户资料").Find("[_Identify] = \'" & e.NewValue & "\'")
        If dr IsNot Nothing Then \'如果找到了同名的产品行,也就是dr不是Nothing
            e.DataRow("客户名称") = dr("客户名称") 
            e.DataRow("联系人") = dr("主联系人") 
 End If
    End If
End If


这样已经可以了,但问题的关键来了,我是不想用关联表的方式,这样仍然避免不了用关联表,并且我要在关联表的子表下添加记录才可以继承下来,有什么好的办法不用关联的方式没? 我感觉这样跟用关联的效率差不多。因为我业务表的序号是不手动录入的,是靠在子表输入时,序号自动增加变化。

[此贴子已经被作者于2016/4/27 20:26:48编辑过]

--  作者:大红袍
--  发布时间:2016/4/27 20:58:00
--  
 为什么要用关联?你直接写代码就可以的啊。
--  作者:kmzb56
--  发布时间:2016/4/27 22:39:00
--  
明天上传一下列子。。