Foxtable(狐表)用户栏目专家坐堂 → 对比问题


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

主题:对比问题

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


加好友 发短信
等级:六尾狐 帖子:1495 积分:12175 威望:0 精华:0 注册:2013/3/19 16:41:00
对比问题  发帖心情 Post By:2018/12/1 17:24:00 [只看该作者]

请问老师,我有两个表,其中表A中的出差人列的内容是不固定数目的人姓名,每个名字用“,”隔开;在表B中有姓名列和住址列两列。我想每次表A中的出差人列填写完后都与表B中的姓名列对比,如果表A出差人列的人名中在表B中的住是银川,就产生住宿费,否则不产生,代码怎么写呢?
 表A          表  B  
   张三,李四,王五        张三    银川
           李四    天津
           王五    上海

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110528 积分:562524 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/12/1 17:34:00 [只看该作者]

表A ,datacolchanged事件

If e.DataCol.name = "出差人" AndAlso e.newvalue > "" Then
    Dim dr As DataRow = DataTables(“B”).Find("住址='银川' and 姓名 in ('" & e.newvalue.replace(",","','") & "')")
    If dr IsNot Nothing Then
        msgbox("产生住宿费")
    End If
End If

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


加好友 发短信
等级:六尾狐 帖子:1495 积分:12175 威望:0 精华:0 注册:2013/3/19 16:41:00
  发帖心情 Post By:2018/12/3 11:53:00 [只看该作者]

为什么编译通不过呢?

 

If  Tables("出差记录").Current("出差地点") Like "小坝"  And   Tables("出差记录").Current("出差天数") > 0.5
    If e.DataCol.name = "出差人" AndAlso e.newvalue > "" Then
        Dim dr As DataRow = DataTables("职工信息总表").Find("小坝住房 = True and 姓名 in ('" & e.newvalue.replace(",","','") & "')")
        If dr IsNot Nothing Then
            msgbox("不产生住宿费")
        End If
    End If
End If


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/12/3 13:04:00 [只看该作者]

Dim r = Tables("出差记录").Current

If  r("出差地点") Like "小坝"  And r("出差天数") > 0.5
    If r("出差人") > "" Then
        Dim dr As DataRow = DataTables("职工信息总表").Find("小坝住房 = True and 姓名 in ('" & r("出差人").replace(",","','") & "')")
        If dr IsNot Nothing Then
            msgbox("不产生住宿费")
        End If
    End If
End If


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


加好友 发短信
等级:六尾狐 帖子:1495 积分:12175 威望:0 精华:0 注册:2013/3/19 16:41:00
  发帖心情 Post By:2018/12/3 14:11:00 [只看该作者]

红色的行代码还是通不过编译。另出差人也不一定是三个人,人数不固定,有时多,有时少。能对比吗。

 

Dim r = Tables("出差记录").Current

If  r("出差地点") Like "小坝"  And r("出差天数") > 0.5
    If r("出差人") > "" Then
        Dim dr As DataRow = DataTables("职工信息总表").Find("小坝住房 = True and 姓名 in ('" & r("出差人").replace(",","','") & "')")
        If dr IsNot Nothing Then
            msgbox("不产生住宿费")
        End If
    End If
End If


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/12/3 15:26:00 [只看该作者]

我测试,没问题。

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


加好友 发短信
等级:六尾狐 帖子:1495 积分:12175 威望:0 精华:0 注册:2013/3/19 16:41:00
  发帖心情 Post By:2018/12/3 15:48:00 [只看该作者]

老师,我找到问题了,我前面还有一段代码,相互干扰。谢谢你。

但这段代码没有反应,没有起到想要结果。


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/12/3 16:18:00 [只看该作者]

如果写到datacolchanged事件,代码这样测试。

 

msgbox(123)
If e.DataCol.name = "出差人" AndAlso e.newvalue > "" Then    
    msgbox(456)    
    If  e.DataRow("出差地点") Like "*小坝*"  And e.DataRow("出差天数") > 0.5        
        msgbox(789)
        Dim dr As DataRow = DataTables("职工信息总表").Find("小坝住房 = True and 姓名 in ('" & e.newvalue.replace(",","','") & "')")
        If dr IsNot Nothing Then
            msgbox("不产生住宿费")
        End If
    End If
End If


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


加好友 发短信
等级:六尾狐 帖子:1495 积分:12175 威望:0 精华:0 注册:2013/3/19 16:41:00
  发帖心情 Post By:2018/12/3 16:43:00 [只看该作者]

以下是引用有点甜在2018/12/3 16:18:00的发言:

如果写到datacolchanged事件,代码这样测试。

 

msgbox(123)
If e.DataCol.name = "出差人" AndAlso e.newvalue > "" Then    
    msgbox(456)    
    If  e.DataRow("出差地点") Like "*小坝*"  And e.DataRow("出差天数") > 0.5        
        msgbox(789)
        Dim dr As DataRow = DataTables("职工信息总表").Find("小坝住房 = True and 姓名 in ('" & e.newvalue.replace(",","','") & "')")
        If dr IsNot Nothing Then
            msgbox("不产生住宿费")
        End If
    End If
End If

老师你好,想写在BeforeSaveDataRow事件中。

[此贴子已经被作者于2018/12/3 16:46:01编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/12/3 16:51:00 [只看该作者]

那就改成

 

    msgbox(456)   
    If  e.DataRow("出差地点") Like "*小坝*"  And e.DataRow("出差天数") > 0.5       
        msgbox(789)
        Dim dr As DataRow = DataTables("职工信息总表").Find("小坝住房 = True and 姓名 in ('" & e.DataRow("出差人").replace(",","','") & "')")
        If dr IsNot Nothing Then
            msgbox("不产生住宿费")
        End If
    End If


 回到顶部
总数 17 1 2 下一页