以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]关于同步更新  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=52907)

--  作者:lesliecheung912
--  发布时间:2014/6/25 14:16:00
--  [求助]关于同步更新
现有两个表:“岗位表”,“档案表”,这两个表都有岗位,职级着两个字段,一个岗位对应一个职级。
现在想要实现:如果岗位表中的岗位和职级的内容都发生了改变,那么如何使得档案表中对应的岗位和职级的值和岗位表中的一致呢?

--  作者:有点甜
--  发布时间:2014/6/25 14:20:00
--  

 方法一:用关联,其它表的父表,都设置成岗位表。

 

 加入表达式列,直接引用父表数据 http://www.foxtable.com/help/topics/0106.htm

 


--  作者:有点甜
--  发布时间:2014/6/25 14:20:00
--  

 方法二:用代码的方法,参考 http://www.foxtable.com/help/topics/1453.htm

 


--  作者:lesliecheung912
--  发布时间:2014/6/25 15:43:00
--  
岗位名称有许多值,自然对应到档案表也是有许多不同的岗位名称,怎么样才能使得改变其中的一个岗位名称而引起档案表中相应的岗位名称的改变?
这样好像跨表不能实现啊,如果跨表不能实现要用关联,应该如何去关联呢

--  作者:有点甜
--  发布时间:2014/6/25 15:47:00
--  

 你用关联吧,直接关联即可。

 

 父表:岗位表,岗位名称列;

 

 子表:档案表,岗位名称列;

 

 设置:http://www.foxtable.com/help/topics/1644.htm

 


--  作者:lesliecheung912
--  发布时间:2014/6/25 16:28:00
--  
我之前在档案表的datacolchanged事件中加了以下代码:
If e.DataCol.Name = "职务岗位" Then
    If e.DataRow.IsNull("职务岗位") Then
        e.DataRow("职别") = Nothing
        e.DataRow("职级") = Nothing
        e.DataRow("职系") = Nothing
    Else
        Dim dr As DataRow = DataTables("部门岗位").Find ( "部门名称 = \'" & e.DataRow("工作部门") & "\' And 岗位名称 = \'" & e.DataRow("职务岗位") & "\'" )
        e.DataRow("职别") = dr("职别")
        e.DataRow("职级") = dr("职级")
        e.DataRow("职系") = dr("职系")
    End If
End If
现在如果做成关联表,当改变岗位名称的值时会报错误:
.NET Framework 版本:2.0.50727.4984
Foxtable 版本:2014.4.21.1
错误所在事件:表,员工档案表,DataColChanged
详细错误信息:
调用的目标发生了异常。
未将对象引用设置到对象的实例。

看来是和以上代码发生了冲突,以上代码的作用是当输入职务岗位时,职别,职级和职系会自动取值。
这应该如何改呢?


--  作者:有点甜
--  发布时间:2014/6/25 16:39:00
--  

 那就不要做关联,在岗位表的DataColchanged事件写入代码

 

For Each dr As DataRow In DataTables("档案表").Select("部门名称 = \'" & e.DataRow("工作部门") & "\' And 岗位名称 = \'" & e.OldValue & "\'")
    dr("岗位名称") = e.NewValue
Next


--  作者:lesliecheung912
--  发布时间:2014/6/25 17:03:00
--  
因为我还要做职级的更新,职级的数据类型是Int,按照你上面说的那样,再更改岗位表的职级时,会报以下错误:
.NET Framework 版本:2.0.50727.4984
Foxtable 版本:2014.4.21.1
错误所在事件:表,部门岗位,DataColChanged
详细错误信息:
调用的目标发生了异常。
无法在 System.Int32 和 System.String 上执行“=”操作。
请问甜姐,这个应该如何改啊?

--  作者:有点甜
--  发布时间:2014/6/25 17:04:00
--  

哦,忘记判断列名了

 

If e.DataCol.Name = "岗位名称" Then   
    For Each dr As DataRow In DataTables("档案表").Select("部门名称 = \'" & e.DataRow("工作部门") & "\' And 岗位名称 = \'" & e.OldValue & "\'")
        dr("岗位名称") = e.NewValue
    Next  
End If


--  作者:lesliecheung912
--  发布时间:2014/6/25 17:08:00
--  
谢谢甜姐,可以了