Foxtable(狐表)用户栏目专家坐堂 → datacolchanged


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

主题:datacolchanged

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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/6/14 11:55:00 [显示全部帖子]

2楼的代码不可能不行的,如果不行,做个简单例子发上来说话。

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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/6/14 15:51:00 [显示全部帖子]

呵呵,lsy兄,不用担心重复增加行问题的,因为他原来的代码是先找已经增加的行,如果没有,再增加新的行。

 

 


 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:例程1.foxdb


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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/6/14 16:05:00 [显示全部帖子]

哈,确实如此,我考虑不周。

 

这样修改代码,可以解决重复增加的问题:

 

Select Case e.DataCol.name
    Case "生产调度令号","客户单位","姓名","类别","财产名称","型号规格","单位","是否异常"
        Dim dr As DataRow = DataTables("顾客财产异常处理").Find("生产调度令号 = '" & e.DataRow("生产调度令号") & "'")
        If e.DataCol.name = "生产调度令号" Then
            Dim dr1 As DataRow = DataTables("顾客财产异常处理").Find("生产调度令号 = '" & e.OldValue & "'")
            If dr1 IsNot Nothing Then
                dr1.Delete
            End If
        End If
        If e.DataRow("是否异常") = "异常" Then
            If dr Is Nothing Then
                dr = DataTables("顾客财产异常处理").AddNew()
            End If
            dr("生产调度令号") = e.DataRow("生产调度令号")
            dr("客户单位") = e.DataRow("客户单位")
            dr("姓名") = e.DataRow("姓名")
            dr("类别") = e.DataRow("类别")
            dr("财产名称") = e.DataRow("财产名称")
            dr("型号规格") = e.DataRow("型号规格")
            dr("单位") = e.DataRow("单位")
        Else
            If dr IsNot Nothing Then
                dr.Delete
            End If
        End If
End Select


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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/6/14 16:17:00 [显示全部帖子]

用BeforeSaveDataRow还是有漏洞,例如我先保存一下,再修改编号,再保存,就会重复增加了。

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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/6/14 16:54:00 [显示全部帖子]

会删除原来的,并重新增加一行。

如果要在原来的基础上修改,这个代码是不行的,要改为:

 

Select Case e.DataCol.name
    Case "生产调度令号","客户单位","姓名","类别","财产名称","型号规格","单位","是否异常"
        Dim dr As DataRow
        If e.DataCol.name = "生产调度令号" Then
            dr = DataTables("顾客财产异常处理").Find("生产调度令号 = '" & e.OldValue & "'")
            If dr IsNot Nothing Then
                dr("生产调度令号") = e.DataRow("生产调度令号")
            End If
        End If
        If dr Is Nothing Then
            dr = DataTables("顾客财产异常处理").Find("生产调度令号 = '" & e.DataRow("生产调度令号") & "'")
        End If
        If e.DataRow("是否异常") = "异常" Then
            If dr Is Nothing Then
                dr = DataTables("顾客财产异常处理").AddNew()
            End If
            dr("生产调度令号") = e.DataRow("生产调度令号")
            dr("客户单位") = e.DataRow("客户单位")
            dr("姓名") = e.DataRow("姓名")
            dr("类别") = e.DataRow("类别")
            dr("财产名称") = e.DataRow("财产名称")
            dr("型号规格") = e.DataRow("型号规格")
            dr("单位") = e.DataRow("单位")
        Else
            If dr IsNot Nothing Then
                dr.Delete
            End If
        End If
End Select

[此贴子已经被作者于2013-6-14 16:59:39编辑过]

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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/6/14 17:04:00 [显示全部帖子]

以下是引用秦昌丽在2013-6-14 17:03:00的发言:
如果没有那个异常不异常的选择呢

 

那就删除这个条件判断:

 

If e.DataRow("是否异常") = "异常" Then
'

end if

 

 


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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/6/14 17:09:00 [显示全部帖子]

Select Case e.DataCol.name
    Case "生产调度令号","客户单位","姓名","类别","财产名称","型号规格","是否异常","客户单位"
        Dim dr As DataRow
        If e.DataCol.name = "生产调度令号" Then
            dr = DataTables("顾客财产异常处理").Find("生产调度令号 = '" & e.OldValue & "'")
            If dr IsNot Nothing Then
                dr("生产调度令号") = e.DataRow("生产调度令号")
            End If
        End If
        If dr Is Nothing Then
            dr = DataTables("顾客财产异常处理").Find("生产调度令号 = '" & e.DataRow("生产调度令号") & "'")
        End If
        If e.DataRow("是否异常") = "异常" Then
            If dr Is Nothing Then
                dr = DataTables("顾客财产异常处理").AddNew()
            End If
            dr("生产调度令号") = e.DataRow("生产调度令号")
            dr("客户单位") = e.DataRow("客户单位")
            dr("姓名") = e.DataRow("姓名")
            dr("类别") = e.DataRow("类别")
            dr("财产名称") = e.DataRow("财产名称")
            dr("型号规格") = e.DataRow("型号规格")
            dr("单位") = e.DataRow(“客户单位")
        Else
            If dr IsNot Nothing Then
                dr.Delete
            End If
        End If
End Select
 
心急吃不得热豆腐,先系统学习一下帮助吧:
图片点击可在新窗口打开查看
 
看帮助一定要按顺序,头一两遍可以不求甚解,第三遍开始要将每个例子实际操作演练一遍,不明白的就上论坛求助。
三遍之后才开始做系统,先设计好表,想做什么功能,就做什么功能,遇到问题在帮助找答案,找不到的在论坛提问,不断遇到问题,不断解决问题,慢慢就熟悉了。
此外一定要先掌握《使用指南》,然后再看《开发指南》

[此贴子已经被作者于2013-6-14 17:14:25编辑过]

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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/6/15 9:35:00 [显示全部帖子]

惭愧,我误解了你的意思,错误批评你了。

 

图片点击可在新窗口打开查看

 

如果这样,异常登记表,增加一个字符型的列,名称为“来源表”,用于登记这个异常来自哪个表。

代码改为:

 

Select Case e.DataCol.name
    Case "生产调度令号","客户单位","姓名","类别","财产名称","型号规格","单位","是否异常","来源表"
        Dim dr As DataRow
        If e.DataCol.name = "生产调度令号" Then
            dr = DataTables("顾客财产异常处理").Find("生产调度令号 = '" & e.OldValue & & "' And 来源表 = '" & e.DataTable.Name & "'")
            If dr IsNot Nothing Then
                dr("生产调度令号") = e.DataRow("生产调度令号")

                dr("来源表") = e.DataTable.Name
            End If
        End If
        If dr Is Nothing Then
            dr = DataTables("顾客财产异常处理").Find("生产调度令号 = '" & e.DataRow("生产调度令号") "' And 来源表 = '" & e.DataTable.Name & "'")
        End If
        If e.DataRow("是否异常") = "异常" Then
            If dr Is Nothing Then
                dr = DataTables("顾客财产异常处理").AddNew()
            End If
            dr("生产调度令号") = e.DataRow("生产调度令号")

              dr("来源表") = e.DataTable.Name
            dr("客户单位") = e.DataRow("客户单位")
            dr("姓名") = e.DataRow("姓名")
            dr("类别") = e.DataRow("类别")
            dr("财产名称") = e.DataRow("财产名称")
            dr("型号规格") = e.DataRow("型号规格")
            dr("单位") = e.DataRow("单位")
        Else
            If dr IsNot Nothing Then
                dr.Delete
            End If
        End If
End Select

 

 

 

 

[此贴子已经被作者于2013-6-15 9:35:59编辑过]

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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/6/15 10:08:00 [显示全部帖子]

如果是一个表有相同的调度号列,那么只能根据Identify来区分了。

异常表增加一个ID列,整数型的。

 

 

Select Case e.DataCol.name
    Case "生产调度令号","客户单位","姓名","类别","财产名称","型号规格","单位","是否异常","ID"
        Dim dr As DataRow
        If e.DataCol.name = "生产调度令号" Then
            dr = DataTables("顾客财产异常处理").Find("生产调度令号 = '" & e.OldValue  & "' And ID = " & e.DataRow("_Idenify"))
            If dr IsNot Nothing Then
                dr("生产调度令号") = e.DataRow("生产调度令号")

                dr("ID") = e.DataRow("_Idenify")
            End If
        End If
        If dr Is Nothing Then
            dr = DataTables("顾客财产异常处理").Find("生产调度令号 = '" & e.DataRow("生产调度令号") & "' And ID = " & e.DataRow("_Idenify"))
        End If
        If e.DataRow("是否异常") = "异常" Then
            If dr Is Nothing Then
                dr = DataTables("顾客财产异常处理").AddNew()
            End If
            dr("生产调度令号") = e.DataRow("生产调度令号")

                dr("ID") = e.DataRow("_Idenify")
            dr("客户单位") = e.DataRow("客户单位")
            dr("姓名") = e.DataRow("姓名")
            dr("类别") = e.DataRow("类别")
            dr("财产名称") = e.DataRow("财产名称")
            dr("型号规格") = e.DataRow("型号规格")
            dr("单位") = e.DataRow("单位")
        Else
            If dr IsNot Nothing Then
                dr.Delete
            End If
        End If
End Select

 

 


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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/6/15 10:47:00 [显示全部帖子]

_Identify

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