以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]datacolchanging (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=79894) |
-- 作者:blsu33 -- 发布时间:2016/1/11 20:34:00 -- [求助]datacolchanging 红袍老师, 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 提示 |
-- 作者:大红袍 -- 发布时间:2016/1/11 20:48:00 -- 这段代码没问题,加入msgbox定位错误。 |
-- 作者:blsu33 -- 发布时间: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编辑过]
|
-- 作者:大红袍 -- 发布时间:2016/1/12 9:16:00 -- RejectChanges之后,再执行,不要写在前面。
Dim fdr2 As List(of DataRow) = dt2.Select("表名=\'"& bm &"\' And 不允许重复=True") |
-- 作者:blsu33 -- 发布时间:2016/1/12 13:13:00 -- 老师, 麻烦您再给看看,还是有错误,不知道怎么改 .NET Framework 版本:2.0.50727.3053 Foxtable 版本:2015.12.22.1 错误所在事件:表,表A,BeforeSaveDataRow 详细错误信息: 调用的目标发生了异常。 此行已从表中移除并且没有任何数据。BeginEdit() 将允许在此行中创建新数据 |
-- 作者:blsu33 -- 发布时间:2016/1/12 13:16:00 -- [此贴子已经被作者于2016/1/12 14:50:47编辑过]
|
-- 作者:大红袍 -- 发布时间: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 -- 发布时间:2016/1/12 14:51:00 -- 哦 学习了 谢谢老师 |
-- 作者:blsu33 -- 发布时间:2016/1/12 16:16:00 -- 老师, 在自定义函数中使用 Return 仅仅是停止执行一下,不需要返回值,用 Return Nothing 还是用Return false 哪一个好?
|
-- 作者:blsu33 -- 发布时间:2016/1/12 16:25:00 -- 顺便在问下老师, 7楼代码,判断好些罗列,是否过于啰嗦,请问老师会怎么设计或是写代码。
|