以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]“表A”和“表B”同有一列“客户”列,当“表B”的客户数据发生改变时,“表A”的相应客户信息也同步改变,不使用关联表,如何写代码?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=96138)

--  作者:fengwenliuyan
--  发布时间:2017/2/14 9:13:00
--  [求助]“表A”和“表B”同有一列“客户”列,当“表B”的客户数据发生改变时,“表A”的相应客户信息也同步改变,不使用关联表,如何写代码?
“订单表”和“信息表”同有一列“客户”列,“信息表”是停靠在“订单表”的一个RecordGrid窗口控件中,当“订单表”中鼠标点击任意一列单元格时,该单元格所在行的客户的信息自动在“RecordGrid窗口控件”中显示出来,不使用关联表,应该如何写代码?
项目已经上传,请帮忙写下代码?谢谢!
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.foxdb


[此贴子已经被作者于2017/2/14 9:15:50编辑过]

--  作者:有点色
--  发布时间:2017/2/14 9:25:00
--  

CurrentChanged事件

 

Dim cr As Row = e.Table.Current
If cr IsNot Nothing Then
    Dim idx As Integer = Tables("信息表").FindRow("客户 = \'" & cr("客户") & "\'")
    If idx >= 0 Then
        Tables("信息表").Position = idx
    End If
End If


--  作者:fengwenliuyan
--  发布时间:2017/2/14 9:37:00
--  ok了,谢谢!
ok了,谢谢!
[此贴子已经被作者于2017/2/14 9:38:31编辑过]

--  作者:有点色
--  发布时间:2017/2/14 9:39:00
--  

 是CurrentChanged事件。

 

 如果写在dataColChanged事件,这样写

 

If e.DataCol.name = "客户" Then
    Dim idx As Integer = Tables("信息表").FindRow("客户 = \'" & e.DataRow("客户") & "\'")
    If idx >= 0 Then
        Tables("信息表").Position = idx
    End If
End If


--  作者:fengwenliuyan
--  发布时间:2017/2/14 9:41:00
--  谢谢呢!!!
谢谢呢!!!
--  作者:fengwenliuyan
--  发布时间:2017/2/15 10:41:00
--  写在datecolchanged中的代码失败了???

If e.DataCol.name = "客户" Then
    Dim idx As Integer = Tables("意和客户信息表").FindRow("客户 = \'" & e.DataRow("客户") & "\'")
    If idx >= 0 Then
        Tables("意和客户信息表").Position = idx
    End If
End If
写在datecolchanged中的代码失败了???

--  作者:有点色
--  发布时间:2017/2/15 10:56:00
--  
 4楼代码没问题。
--  作者:fengwenliuyan
--  发布时间:2017/2/15 11:00:00
--  
CurrentChanged:
Dim cr As Row = e.Table.Current
If cr IsNot Nothing Then
    Dim idx As Integer = Tables("意和客户信息表").FindRow("客户 = \'" & cr("客户") & "\'")
    If idx >= 0 Then
        Tables("意和客户信息表").Position = idx
    End If
End If
有效果

datecolchanged:
If e.DataCol.name = "客户" Then
    Dim idx As Integer = Tables("意和客户信息表").FindRow("客户 = \'" & e.DataRow("客户") & "\'")
    If idx >= 0 Then
        Tables("意和客户信息表").Position = idx
    End If
End If
没效果

--  作者:有点色
--  发布时间:2017/2/15 11:03:00
--  
 两个都要写。
--  作者:fengwenliuyan
--  发布时间:2017/2/16 10:40:00
--  都写上的话,结果是一样的。
都写上的话,结果是一样的,比如说:客户“北京”的第二列编辑后,鼠标必须在其他客户订单行上点击,然后回来点击该行“北京”订单,“客户信息表”才会显示更改后的数据变动,
现在希望的是,
比如说:客户“北京”的第二列编辑后,鼠标只要点击当前单元格以外的任意位置都可以使“客户信息表”显示更改数据,包括点击在当前客户行上也一样!?