Foxtable(狐表)用户栏目专家坐堂 → [求助]datacolchanging


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

主题:[求助]datacolchanging

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


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

红袍老师,

 Case Else
        For Each dr As DataRow In dt2.DataRows
            MessageBox.Show(e.DataCol.Name & 1)
            MessageBox.Show(dr("列名") & 2)
            If e.DataCol.Name =dr("列名") Then
                MessageBox.Show(e.DataCol.Name =dr("列名"))
                Dim dr1,dr2 As DataRow
                dr1=e.DataTable.find(dr("列名") & "='" & e.NewValue & "' And _Identify <> '" & e.DataRow("_Identify") & "'")
                dr2=e.DataTable.find(dr("列名") & " Like '" & e.DataRow(dr("列名")) & "%' and " & dr("列名") & " <> '" & e.DataRow(dr("列名")) & "' And " & dr("列名") & " Is Not null")
                If dr1 IsNot Nothing Then
                    MessageBox.Show("【" & e.NewValue & "】" & "重复是否正确!","请确认")
                    e.Cancel = True
                    e.DataRow.save
                    Exit For
                ElseIf dr2 IsNot Nothing Then
                    Messagebox.Show("存在下级编码,不能修改名称!","提示")
                    e.Cancel=True
                    e.DataRow.save
                    Exit For
                End If
                Functions.Execute("Haveuseadd",e)
            Else
                Continue For
            End If
        Next
        
提示

图片点击可在新窗口打开查看此主题相关图片如下:qq图片20160111202709.png
图片点击可在新窗口打开查看



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


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

 这段代码没问题,加入msgbox定位错误。

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


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

o  找到了 老师,
 另外一个问题,第一个要是取消了,后面的for each 就会出错了,怎么能避免呢,还没想好

BeforeSaveDataRow


Dim e As object=args(0)
Dim bm As String=e.DataTable.name
Dim dt2 As DataTable
dt2 = Functions.Execute("loading","Z006配置列",0,"1=1")

Dim name As String
Dim fdr1 As List(of DataRow) = dt2.Select("表名='"& bm &"' And 是否必填=True")
Dim fdr2 As List(of DataRow) = dt2.Select("表名='"& bm &"' And 不允许重复=True")
If fdr1 IsNot Nothing Then
    For Each dr1 As DataRow In fdr1
        If e.DataRow(dr1("列名")) ="" OrElse e.DataRow(dr1("列名")).Contains(" ") OrElse e.DataRow(dr1("列名")) =Nothing Then '如果未输入内容
            Dim Result As DialogResult
            Result = MessageBox.Show(dr1("列名") & "列存在异常字符或为空,是否返回!","提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
            If Result = DialogResult.Yes Then
                e.Cancel = True '则禁止退出编辑模式
                Exit For
            Else
                e.DataTable.RejectChanges()
                Exit For
            End If
        End If
    Next
End If

’以下将会出错了,因为行没有了
If fdr2 IsNot Nothing Then
    For Each dr2 As DataRow In fdr2
        Dim dr As DataRow=e.DataTable.find(dr2("列名") & "='" & e.DataRow(dr2("列名")) & "'And _Identify <> '" & e.DataRow("_Identify") & "'")
        If dr IsNot Nothing Then
            Dim Result As DialogResult
            Result =MessageBox.Show(e.DataRow(dr2("列名")) & "已经重复,是否返回!","提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
            If Result = DialogResult.Yes Then
                e.Cancel = True
                Exit For
            Else
                e.DataTable.RejectChanges()
                Exit For
            End If
        End If
    Next
End If
[此贴子已经被作者于2016/1/12 8:54:35编辑过]

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


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

RejectChanges之后,再执行,不要写在前面。

 

Dim fdr2 As List(of DataRow) = dt2.Select("表名='"& bm &"' And 不允许重复=True")


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


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

老师,
   麻烦您再给看看,还是有错误,不知道怎么改

.NET Framework 版本:2.0.50727.3053
Foxtable 版本:2015.12.22.1
错误所在事件:表,表A,BeforeSaveDataRow
详细错误信息:
调用的目标发生了异常。
此行已从表中移除并且没有任何数据。BeginEdit() 将允许在此行中创建新数据


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


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



[此贴子已经被作者于2016/1/12 14:50:47编辑过]

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


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

Dim bm As String=e.DataTable.name
Dim dt2 As DataTable=DataTables("表B")
For Each dc As DataCol In DataTables(e.DataTable.name).DataCols
    Dim fdr1 As List(of DataRow) = dt2.Select("表名='"& bm &"'")
    If fdr1 IsNot Nothing Then
        For Each dr1 As DataRow In fdr1
            If dc.Name=dr1("列名") Then
                If dr1("是否必填")=True Then
                    If e.DataRow(dr1("列名")) ="" OrElse e.DataRow(dr1("列名")).Contains(" ") OrElse e.DataRow(dr1("列名")) =Nothing Then '如果未输入内容
                        Dim Result As DialogResult
                        Result = MessageBox.Show(dr1("列名") & "列存在异常字符或为空,是否返回!","提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
                        If Result = DialogResult.Yes Then
                            e.Cancel = True '则禁止退出编辑模式
                            Exit For
                        Else
                            e.cancel = True
                            e.DataTable.RejectChanges()
                            Return
                        End If
                    End If
                End If
                If dr1("不允许重复")=True Then
                    Dim dr As DataRow=e.DataTable.find(dr1("列名") & "='" & e.DataRow(dr1("列名")) & "'And _Identify <> '" & e.DataRow("_Identify") & "'")
                    If dr IsNot Nothing Then
                        Dim Result As DialogResult
                        Result =MessageBox.Show(e.DataRow(dr1("列名")) & "已经重复,是否返回!","提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
                        If Result = DialogResult.Yes Then
                            e.Cancel = True
                            Exit For
                        Else
                            e.cancel = True
                            e.DataTable.RejectChanges()
                            Return
                        End If
                    End If
                End If
            Else
                Continue For
            End If
        Next
    Else
        Exit For
    End If
Next

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


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

哦 学习了 谢谢老师

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


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

老师,
  在自定义函数中使用 Return  仅仅是停止执行一下,不需要返回值,用 Return Nothing 还是用Return false 哪一个好?

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


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

顺便在问下老师,


7楼代码,判断好些罗列,是否过于啰嗦,请问老师会怎么设计或是写代码。

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