Foxtable(狐表)用户栏目专家坐堂 → 多表关联遇到问题,请教一下


  共有8060人关注过本帖树形打印复制链接

主题:多表关联遇到问题,请教一下

帅哥哟,离线,有人找我吗?
kmzb56
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:528 积分:5034 威望:0 精华:0 注册:2012/4/6 19:31:00
多表关联遇到问题,请教一下  发帖心情 Post By:2012/6/23 9:50:00 [只看该作者]

 


我建立了三个表:结构如下:想达到的目的没达到,发上来请狐爸及各位高手说明一下没达到目的的原因。
业务登记

业务登记

登记日期() ----> 日期型
长() ----> 字符型(5)
宽() ----> 字符型(5)
高() ----> 字符型(5)
装货地() ----> 字符型(16)
目的地() ----> 字符型(16)
付款方式() ----> 字符型(8)
fa piao() ----> 逻辑型
备注() ----> 字符型(30)
货物描述() ----> 字符型(20)
要求车型() ----> 字符型(16)
发货日期() ----> 日期型
重量(重量(吨)) ----> 单精度小数
客户编号() ----> 整数
客户名称() ----> 字符型(16) ----> Parent(客户资料_业务登记).客户名称
办公电话() ----> 字符型(13) ----> Parent(客户资料_业务登记).办公电话
运货名称() ----> 字符型(16) ----> Parent(客户资料_业务登记).货物名称
联系人() ----> 字符型(6) ----> Parent(客户资料_业务登记).主联系人
手机() ----> 字符型(11) ----> Parent(客户资料_业务登记).手机

客户联系人

手机() ----> 字符型(11)
职务() ----> 字符型(8)
客户编号() ----> 整数
备注() ----> 字符型(16)
联系人() ----> 字符型(6)
客户名称() ----> 字符型(16) ----> Parent(客户资料_客户联系人).客户名称
电话() ----> 字符型(16) ----> Parent(客户资料_客户联系人).办公电话

客户资料

客户名称() ----> 字符型(16)
主联系人() ----> 字符型(6)
办公电话() ----> 字符型(13)
手机() ----> 字符型(11)
地址() ----> 字符型(40)
传真() ----> 字符型(13)
货物名称() ----> 字符型(16)
备注() ----> 字符型(20)
客户编号() ----> 字符型(16)

关联 客户资料_客户联系人

客户资料._Identify ----> 客户联系人.客户编号

关联 客户资料_业务登记

客户资料._Identify ----> 业务登记.客户编号

 


问题1
   建立了关连表,其中两列调用父表的值。问题是现在子表想修改自己那两例的值修改不了,像锁定了一样,另外就是如果父表修改了值子表也会跟着改。
    我想达到子表又能取值于父表的初始值,但改子表的值和改父表的相互不影响,但最初始子表可以默认取值父表,只是其中两例。并不是所有哟。
问题2

我想把联系人这例设计成,如果我下拉例表值是主联系人时,要以直接调用父表中的主联系人为“客户联系人”表中联系人的值,同时手机号也为此人的手机号。我在本表的datacolchanging设置代码为:If e.DataCol.Name = "职务" Then
    If e.NewValue ="主联系人" Then
        If e.DataCol.name="联系人"then
        e.Newvalue="parent(客户资料_客户联系人).主联系人"
      End If
   End If
 End If
不起作用。请问是什么原因?

问题3
请问我的列顺序是好的,怎么关联了后了顺序变了,有什么方法方便改回顺序没?


 回到顶部
帅哥哟,离线,有人找我吗?
mr725
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2012/6/23 11:54:00 [只看该作者]

这么长的描述,最好配上实例。  要不多数狐友只能图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
xongyijd
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:245 积分:3629 威望:0 精华:1 注册:2010/5/9 18:45:00
  发帖心情 Post By:2012/6/23 14:53:00 [只看该作者]

问题1:你这个情况父子表不应该关联或者不要用表达试列,使用find查找行来阈值,

问题2:你是表达试列不能用代码,用iif吧,如果不是用表达试,在表DataColChanged中

If e.DataCol.Name =="联系人"
If e.NewValue ="主联系人" Then
Dim w As DataRow = DataTables("父表").Find("联系人 = '主联系人'")
e.DataRow("客户联系入") = w("主联系人")
e.DataRow("手机号码") = w("手机号码")
End If
End If

问题3:列顺序是要变的,可以用代码设计比如SetColVisibleWidth直接设置列位置和宽或者视图设计

[此贴子已经被作者于2012-6-23 15:00:04编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
kmzb56
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:528 积分:5034 威望:0 精华:0 注册:2012/4/6 19:31:00
你说的问题2的问题  发帖心情 Post By:2012/6/24 19:33:00 [只看该作者]

我试过iff了,当成立时返值,当条件不成立时返回另一值,而我的另一值是我输入的的新值,在这iff里输入的新值用什么表示?谢谢!


 回到顶部
帅哥哟,离线,有人找我吗?
kmzb56
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:528 积分:5034 威望:0 精华:0 注册:2012/4/6 19:31:00
  发帖心情 Post By:2012/6/24 22:47:00 [只看该作者]

以下是引用xongyijd在2012-6-23 14:53:00的发言:

问题1:你这个情况父子表不应该关联或者不要用表达试列,使用find查找行来阈值,

问题2:你是表达试列不能用代码,用iif吧,如果不是用表达试,在表DataColChanged中

If e.DataCol.Name =="联系人"
If e.NewValue ="主联系人" Then
Dim w As DataRow = DataTables("父表").Find("联系人 = '主联系人'")
e.DataRow("客户联系入") = w("主联系人")
e.DataRow("手机号码") = w("手机号码")
End If
End If

问题3:列顺序是要变的,可以用代码设计比如SetColVisibleWidth直接设置列位置和宽或者视图设计

受这个思路启发,我把业务登记表这个的客户名称这个列改了下,不用表达试列了,直接在DataColChanged中改了代码,但我的查找条件是根据客户编号来查找到,感觉客户编号又不好记,不好弄,同时我的客户名称有可能重复,比如,李老板,另一个也是李老板,这个怎么操作?查找哪列好些?

[此贴子已经被作者于2012-6-23 15:00:04编辑过]


 回到顶部