Foxtable(狐表)用户栏目专家坐堂 → [求助]自动输入


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

主题:[求助]自动输入

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


加好友 发短信
等级:小狐 帖子:348 积分:2805 威望:0 精华:0 注册:2016/8/24 10:39:00
[求助]自动输入  发帖心情 Post By:2017/6/25 13:09:00 [只看该作者]

处理一张岗位表,字段有岗位,补贴金额,其中岗位有总经理,部长,店长。现在我需要判断岗位字段如果是总经理,则补贴金额字段自动填写300,如果岗。字段的内容是部长,则补贴金额字段自动填写260,该如果实现。在线等

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


加好友 发短信
等级:小狐 帖子:348 积分:2805 威望:0 精华:0 注册:2016/8/24 10:39:00
  发帖心情 Post By: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



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

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(积水成渊)If e.DataRow.IsNull("岗位") = Fa...  发帖心情 Post By:2017/6/25 14:18:00 [只看该作者]

参照这个   建议建一个补贴金额表  岗位  补贴金额 两个字段  

岗位     补贴金额 
总经理   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编辑过]

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By: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


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


加好友 发短信
等级:小狐 帖子:348 积分:2805 威望:0 精华:0 注册:2016/8/24 10:39:00
  发帖心情 Post By:2017/6/25 14:33:00 [只看该作者]

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

 回到顶部
帅哥哟,离线,有人找我吗?
积水成渊
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:348 积分:2805 威望:0 精华:0 注册:2016/8/24 10:39:00
  发帖心情 Post By:2017/6/25 14:55:00 [只看该作者]

有点色老师,如果岗位这个是动态表示式列,这段代码还能起到作用吗,因为岗位这个字段不是人工改的,而是绑定了另外一张表,所以如何另外一张表的岗位字段发生改变,我的表的岗位字段才会发生改变

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/6/25 16:27:00 [只看该作者]

 你可以用重置列的方式。

 

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

 

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

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

End If


 回到顶部
帅哥哟,离线,有人找我吗?
积水成渊
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:348 积分:2805 威望:0 精华:0 注册:2016/8/24 10:39:00
  发帖心情 Post By:2017/6/25 16:49:00 [只看该作者]

另外一张表在别的系统软件里面。我们只是在数据库底层取数据,所有老师提供的方法行不通

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/6/25 17:35:00 [只看该作者]

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


 回到顶部