Foxtable(狐表)用户栏目专家坐堂 → [求助]新增加行未使用状态


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

主题:[求助]新增加行未使用状态

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


加好友 发短信
等级:九尾狐 帖子:2927 积分:20167 威望:0 精华:0 注册:2012/2/3 17:45:00
  发帖心情 Post By:2016/1/21 21:32:00 [只看该作者]

正则中好不容易判断了很多次重复问题,难道白判断了是吗

Select Case e.DataCol.Name                                                                                         '判断编码和名称是否重复开始
    Case dt3.DataRows(0)("列名")'编码规则列
        Dim dr,dr1,dr2 As DataRow
        Dr=dt3.DataRows(0)
        dr1=e.DataTable.find(dr("列名") & "='" & e.NewValue & "' And _Identify <> '" & e.DataRow("_Identify") & "'")
        If dr1 IsNot Nothing Then
            MessageBox.Show("【" & e.NewValue & "】" & "重复是否正确!","请确认")
            e.Cancel = True
            Return Nothing
            'e.DataRow.save
        Else If e.DataCol.Name = "编码规则" AndAlso e.OldValue <> Nothing Then
            dr2= e.DataTable.find(dr("列名") & " Like '" & e.OldValue & "%' and " & dr("列名") & " <> '" & e.OldValue & "'")
            If dr2 IsNot Nothing Then
                Messagebox.Show("存在下级编码,不能修改编码!","提示")
                e.Cancel=True
                e.DataRow.save
                Return Nothing
            End If
        End If
        Functions.Execute("Haveuseadd",e)
    Case Else
        For Each dr As DataRow In dt2.DataRows
            Dim str() As String=dr("列名").split(",")
            For i As Integer=0 To str.Length-1
                If e.DataCol.name=str(i) Then
                    Dim dr1,dr2 As DataRow
                    dr1=e.DataTable.find(e.DataCol.Name & "='" & e.NewValue & "' And _Identify <> '" & e.DataRow("_Identify") & "'")
                    dr2=e.DataTable.find(e.DataCol.Name & " Like '" & str(i) & "%' and " & str(i) & " <> '" & e.DataRow(str(i)) & "' And " & str(i) & " Is Not null")
                    If dr1 IsNot Nothing Then
                        MessageBox.Show("【" & e.NewValue & "】" & "重复是否正确!","请确认")
                        e.Cancel = True
                        e.DataRow.save
                        Return Nothing
                        Exit For
                    ElseIf dr2 IsNot Nothing Then
                        Messagebox.Show("[" & e.DataRow(str(i)) & "】" & "存在下级编码,不能修改名称!","提示")
                        e.Cancel=True
                        e.DataRow.save
                        Return Nothing
                        Exit For
                    End If
                    Functions.Execute("Haveuseadd",e)
                Else
                    Continue For
                End If
            Next
        Next
End Select
[此贴子已经被作者于2016/1/21 21:32:52编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  42楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/1/21 22:00:00 [只看该作者]

没有白判断,你这里判读的话,是必要的。

 

而设置唯一约束的,是为了保证最后保存的时候不重复的最后一道防线。


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


加好友 发短信
等级:九尾狐 帖子:2927 积分:20167 威望:0 精华:0 注册:2012/2/3 17:45:00
  发帖心情 Post By:2016/1/22 9:50:00 [只看该作者]

o  那我又在 保存的时候审核一遍 是否多余呢
BeforeSaveDataRow

For Each dr As DataRow In drs
    If e.DataTable.DataCols.Contains(dr("列名")) Then
        If dr("是否必填") = True Then
            If e.DataRow.IsNull(dr("列名")) OrElse e.DataRow(dr("列名")).trim = Nothing Then
                MessageBox.Show(dr("列名") & "列存在异常字符或为空!","提示")
                e.Cancel = True '则禁止退出编辑模式
                Return Nothing
            End If
        End If
        If dr("不允许重复")=True Then
            Dim fdr As DataRow=e.DataTable.find(dr("列名") & "='" & e.DataRow(dr("列名")) & "' And _Identify <> '" & e.DataRow("_Identify") & "'")
            If fdr IsNot Nothing Then
                MessageBox.Show(e.DataRow(dr("列名")) & "已经重复!")
                e.Cancel = True
         

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  44楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/1/22 9:59:00 [只看该作者]

1、BeforeSaveDataRow没必要用For Each啊,每一行保存的时候都会触发一次BeforeSaveDataRow事件的。

 

2、保存前肯定要判断,如果不判断,重复的话,就会报错了。


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


加好友 发短信
等级:九尾狐 帖子:2927 积分:20167 威望:0 精华:0 注册:2012/2/3 17:45:00
  发帖心情 Post By:2016/1/22 10:04:00 [只看该作者]

哦 老师 这里的FOR EACH  不是当前表的

是遍历另外一个表控制必填列的表 列 ,遍历那个表,如果本表有这个字段为空或异常字符,提示,这样应该没有问题吧。


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  46楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/1/22 10:08:00 [只看该作者]

检测是必要的

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


加好友 发短信
等级:九尾狐 帖子:2927 积分:20167 威望:0 精华:0 注册:2012/2/3 17:45:00
  发帖心情 Post By:2016/1/22 10:21:00 [只看该作者]

另外 老师 由于没有做过成熟的软件 我已经返工多次了  

为了避免重复返工 还想问您一下

基础档案类的 表结构都应该包含什么呢 或者 您看看我的表结构还少什么基本性的结构(录入信息列可以 忽略 如颜色 尺寸 类似的)

以部门档案为例,您看有什么问题吗





[此贴子已经被作者于2016/1/28 10:17:03编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2927 积分:20167 威望:0 精华:0 注册:2012/2/3 17:45:00
  发帖心情 Post By:2016/1/22 10:23:00 [只看该作者]

比如 多用户操作 问题 或是 网络应用上的问题 还需要增加列
[此贴子已经被作者于2016/1/22 10:23:26编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  49楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/1/22 10:25:00 [只看该作者]

部门档案?肯定得有部门的信息吧,诸如 公司、名称之类的。


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


加好友 发短信
等级:九尾狐 帖子:2927 积分:20167 威望:0 精华:0 注册:2012/2/3 17:45:00
  发帖心情 Post By:2016/1/22 10:28:00 [只看该作者]

编码规则  编码名称 就是 后期 在Initialize 初始化Caption 还有别的在您的高度上 应该还有的



 回到顶部
总数 59 上一页 1 2 3 4 5 6 下一页