以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  合并excel数据到表,需要其他列联动不能实现,系统无提示,麻烦检查,谢谢  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=91989)

--  作者:zhangjian222200
--  发布时间:2016/10/24 9:31:00
--  合并excel数据到表,需要其他列联动不能实现,系统无提示,麻烦检查,谢谢
写在“男生资料”表,表属性,datarowadded事件,检查代码,却未发现逻辑没有什么错误;详见附图、项目文件,麻烦检查,谢谢!

代码如下:
\'合并excel数据到"推荐人手机"列,系统自动延长"降级日期"列
If e.DataRow("推荐人手机") IsNot Nothing Then
    Dim tjrsj As Double = e.DataRow("推荐人手机")    \'定义,推荐人手机,首字母命名
    Dim drjj As DataRow = DataTables("男生资料").Find("[手机号码] = \'" & tjrsj & "\'")    \'定义推荐人所在的行,根据推荐人手机号,找到推荐人所在的行.变量名是dr降级的首字母
    If  drjj  IsNot Nothing Then
        Dim d As Date = drjj("降级日期")                 \'定义已有降级日期
        Dim t As Date = Date.today                       \'定义当天日期
        If drjj.Isnull("降级日期") Then
            d = t.adddays(30) \'加上30天
        Else
            d = d.adddays(30) \'加上30天
        End If
    End If
End If


[此贴子已经被作者于2016/10/24 9:33:42编辑过]

--  作者:有点蓝
--  发布时间:2016/10/24 9:50:00
--  
1、"推荐人手机"改为字符列(手机号码有必要使用双精度吗)

2、不想改,这里改改

Dim drjj As DataRow = DataTables("男生资料").Find("[手机号码] = " & tjrsj)   

--  作者:狐狸爸爸
--  发布时间:2016/10/24 9:52:00
--  
If e.DataRow.Isnull("推荐人手机") = False Then
    Dim tjrsj As Double = e.DataRow("推荐人手机")    \'定义,推荐人手机,首字母命名
    Dim drjj As DataRow = DataTables("男生资料").Find("[手机号码] = \'" & tjrsj & "\'")    \'定义推荐人所在的行,根据推荐人手机号,找到推荐人所在的行.变量名是dr降级的首字母
    If  drjj  IsNot Nothing Then
        Dim d As Date = drjj("降级日期")                 \'定义已有降级日期
        Dim t As Date = Date.today                       \'定义当天日期
        If drjj.Isnull("降级日期") Then
            d = t.adddays(30) \'加上30天
        Else
            d = d.adddays(30) \'加上30天
        End If
    Else
        MessageBox.show("没有符合条件的行,当然不会有动作")
    End If
Else
        MessageBox.show("这个时候,推荐人手机还没有输入吧,这种情况,应该是DatacolChanged事件,不是DataRowAdded事件")
End If

学会一些基本的调试,可以自己解决多数问题。



--  作者:狐狸爸爸
--  发布时间:2016/10/24 9:54:00
--  
DataColChanged事件:

Select Case e.DataCol.name
    Case "推荐人手机"
        Dim drjj As DataRow = DataTables("男生资料").Find("[手机号码] = \'" & e.NewValue & "\'")    \'定义推荐人所在的行,根据推荐人手机号,找到推荐人所在的行.变量名是dr降级的首字母
        If  drjj  IsNot Nothing Then
            Dim d As Date = drjj("降级日期")                 \'定义已有降级日期
            Dim t As Date = Date.today                       \'定义当天日期
            If drjj.Isnull("降级日期") Then
                d = t.adddays(30) \'加上30天
            Else
                d = d.adddays(30) \'加上30天
            End If
        End If
End elect
           

--  作者:zhangjian222200
--  发布时间:2016/10/24 17:57:00
--  
问下:3楼的代码,在任何位置用MessageBox.show()测试,都没有问题,只是降级日期列,始终没有变化
但是,将下述代码,是复制3楼代码,只是红色部分修正,降级日期列就有了正确的结果,是什么原因呢?

\'合并excel数据到"推荐人手机"列,系统自动延长"降级日期"列
If e.DataRow.Isnull("推荐人手机") = False Then
    Dim tjrsj As Double = e.DataRow("推荐人手机")    \'定义,推荐人手机,首字母命名
    Dim drjj As DataRow = DataTables("男生资料").Find("[手机号码] = \'" & tjrsj & "\'")    \'定义推荐人所在的行,根据推荐人手机号,找到推荐人所在的行.变量名是dr降级的首字母
        If drjj.Isnull("降级日期") Then
        Dim d As Date = drjj("降级日期")                 \'定义已有降级日期
        Dim t As Date = Date.today                       \'定义当天日期
    If  drjj  IsNot Nothing Then
            drjj("降级日期") = t.adddays(30) \'加上30天
     MessageBox.show(d)
        Else
            drjj("降级日期") = d.adddays(30) \'加上30天
        End If
    Else
        MessageBox.show("没有符合条件的行,当然不会有动作")
    End If
Else
    MessageBox.show("这个时候,推荐人手机还没有输入吧,这种情况,应该是DatacolChanged事件,不是DataRowAdded事件")
End If