以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]自动输入  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=102761)

--  作者:积水成渊
--  发布时间:2017/6/25 13:09:00
--  [求助]自动输入
处理一张岗位表,字段有岗位,补贴金额,其中岗位有总经理,部长,店长。现在我需要判断岗位字段如果是总经理,则补贴金额字段自动填写300,如果岗。字段的内容是部长,则补贴金额字段自动填写260,该如果实现。在线等
--  作者:积水成渊
--  发布时间:2017/6/25 14:01:00
--  
If e.DataRow.IsNull("岗位") = False Then
 If e.DataRow("岗位") = "总经理" Then
    e.DataRow("补贴金额") =  100
 
Else
    e.DataRow("补贴金额") = Nothing
End If
End If   
If e.DataRow.IsNull("岗位") = False Then
 If e.DataRow("岗位") = "部长" Then
    e.DataRow("补贴金额") =  50
 
Else
    e.DataRow("补贴金额") = Nothing
End If
End If  

If e.DataRow.IsNull("岗位") = False Then
 If e.DataRow("岗位") = "店长" Then
    e.DataRow("补贴金额") =  30
 
Else
    e.DataRow("补贴金额") = Nothing
End If
End If



这种代码并不简洁,而且还不是联动的,就是还要我们重置列,补贴金额才会发生变化,我能不能将这段代码改成能放在杂项的命令窗口执行。

--  作者:李孝春
--  发布时间:2017/6/25 14:18:00
--  回复:(积水成渊)If e.DataRow.IsNull("岗位") = Fa...
参照这个   建议建一个补贴金额表  岗位  补贴金额 两个字段  

岗位     补贴金额 
总经理   100
部长      50
店长      30

单独建表有一个好处,便于你后续可以自己修改这个金额和岗位值,而不是每次都要修改系统代码!

代码如下:
If e.DataCol.Name = "岗位" Then   
    If e.NewValue Is Nothing Then 
        e.DataRow("补贴金额") = Nothing
    Else
        Dim dr As DataRow
        dr = DataTables("补贴金额表").sqlFind("[岗位] = \'" & e.NewValue & "\'")
        If dr IsNot Nothing Then 
            e.DataRow("补贴金额")= dr("补贴金额") 
        End If
    End If
End If
[此贴子已经被作者于2017/6/25 14:18:52编辑过]

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

重置列一下

 

If e.DataRow.IsNull("岗位") = False Then
    If e.DataRow("岗位") = "总经理" Then
        e.DataRow("补贴金额") =  100
    ElseIf e.DataRow("岗位") = "店长" Then
        e.DataRow("补贴金额") =  30
    ElseIf e.DataRow("岗位") = "部长" Then
        e.DataRow("补贴金额") =  50
    End If
Else
    e.DataRow("补贴金额") = Nothing
End If


--  作者:积水成渊
--  发布时间:2017/6/25 14:33:00
--  
感谢你提供的办法,我之前就是按照你的这种想法处理的。但是行不通,因为岗位这个字段是从人资系统获取的,人资系统的岗位字段发生变化,我表里的岗位字段就会发生改变,所以我觉得不能单独建个表去改变的
[此贴子已经被作者于2017/6/25 14:33:06编辑过]

--  作者:积水成渊
--  发布时间:2017/6/25 14:55:00
--  
有点色老师,如果岗位这个是动态表示式列,这段代码还能起到作用吗,因为岗位这个字段不是人工改的,而是绑定了另外一张表,所以如何另外一张表的岗位字段发生改变,我的表的岗位字段才会发生改变
--  作者:有点色
--  发布时间:2017/6/25 16:27:00
--  

 你可以用重置列的方式。

 

 在另一张表的datacolchanged事件写代码

 

If e.DataCol.Name = "岗位" Then

     DataTables("表A").datacols("某列").RaiseDataColChanged()

End If


--  作者:积水成渊
--  发布时间:2017/6/25 16:49:00
--  
另外一张表在别的系统软件里面。我们只是在数据库底层取数据,所有老师提供的方法行不通
--  作者:有点色
--  发布时间:2017/6/25 17:35:00
--  

 岗位列什么时候修改?通过什么方式修改?修改之后,重置列。