Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共12 条记录, 每页显示 10 条, 页签: [1] [2]
[浏览完整版]

标题:关于验证某行数据的有效性尚有二个问题待完善)

1楼
taoliju 发表于:2009/4/16 19:39:00

例如:当前选定行是第5行,如果这时你选定第X行或添加行,也就是说即将离开第5行,开始检验第五行中的第1列、第3列、第5列是否为空。如果为空,不能添加行不能选择其他行,如果不能空可以添加行也可以选择其他行。
在多位管理员及版主的帮助下,已经基本解决问题,现将代码粘贴如下:
BeforeAddDataRow事件:

If CurrentTable.Rows.Count <= 0 Then
    Return
End If
Dim r As Row = CurrentTable.Current
If r.isNull("第一列") Orelse r.IsNull("第三列") OrElse  r.IsNull("第五列") Then
    e.Cancel = True
End If
BeforeSelChange事件:
If CurrentTable.Rows.Count <= 1 Then
    Return
End If
Dim r As Row = CurrentTable.Current
If r.isNull("第一列") Orelse r.IsNull("第三列") OrElse  r.IsNull("第五列") Then
    If e.NewRange.RowSel <> e.OldRange.RowSel Then
        e.Cancel = True
    End If
End If

但还是有两个方面尚待完善,第一、添加行后不能直接选定新行,必须先选定原来行中的其他单元格后才允许选定新添加的行,这一点我把帮助中的例子试了一下,也存在这个问题,不知是什么原因。第二,删除最后的一行依然会出现错误代码。

[此贴子已经被作者于2009-4-17 12:34:01编辑过]
2楼
mr725 发表于:2009/4/16 20:29:00
这样?:

if 
第1列、第3列、第5列为空 then
    e.Cancel = True
end if
[此贴子已经被作者于2009-4-16 20:28:57编辑过]
3楼
taoliju 发表于:2009/4/16 20:36:00

请问楼上的朋友,代码应放在哪个事件的位置?我感觉此代码检测的并不是第5行的第1列第3列第5列,而是选择的其他行,似乎有些不妥,希望能够详细介绍一下

[此贴子已经被作者于2009-4-16 20:41:39编辑过]
4楼
mr725 发表于:2009/4/16 20:47:00

if  currenttable.position = 4 andalso e.DataRow.isnull("第1列")  then
    e.Cancel = True
end if

放在positionchanged事件中吧

[此贴子已经被作者于2009-4-16 20:52:19编辑过]
5楼
taoliju 发表于:2009/4/16 20:59:00
我原来也是这么想的,但currenttable.position = 4是固定的,这个4动态计算该怎样做呢? 联系我的QQ23426806
[此贴子已经被作者于2009-4-16 21:07:42编辑过]
6楼
mr725 发表于:2009/4/16 21:06:00

if  currenttable.current.isnull("第1列")  then  '=当前行 
    If e.NewRange.RowSel <> e.OldRange.RowSel Then 
        e.Cancel =
False 
    End if
end if

试一试吧,我也在学习啊~

[此贴子已经被作者于2009-4-16 21:09:20编辑过]
7楼
狐狸爸爸 发表于:2009/4/16 22:01:00

这是例子,注意我在两个事件中设置了代码,分别是BeforeAddDataRow和BeforeSelChange:
 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目26.table

8楼
taoliju 发表于:2009/4/16 22:28:00
非常感谢!基本解决了问题,只是在删除例子中的第二行时出现错误代码提示,不知是何原因?
9楼
czy 发表于:2009/4/16 23:07:00

是否要改成这样呢?
BeforeAddDataRow事件:

If CurrentTable.Rows.Count <= 0 Then
    Return
End If
Dim r As Row = CurrentTable.Current
If r.isNull("第一列") Orelse r.IsNull("第三列") OrElse  r.IsNull("第五列") Then
    e.Cancel = True
End If
BeforeSelChange事件:
If CurrentTable.Rows.Count <= 1 Then
    Return
End If
Dim r As Row = CurrentTable.Current
If r.isNull("第一列") Orelse r.IsNull("第三列") OrElse  r.IsNull("第五列") Then
    If e.NewRange.RowSel <> e.OldRange.RowSel Then
        e.Cancel = True
    End If
End If

10楼
taoliju 发表于:2009/4/17 8:38:00
谢谢
第一、添加行后不能直接选定新行,必须先选定原来行中的其他单元格后才允许选定新添加的行,这一点我把帮助中的例子试了一下,也存在这个问题,不知是什么原因。第二,删除最后的一行依然会出现错误代码。
[此贴子已经被作者于2009-4-17 12:37:04编辑过]
共12 条记录, 每页显示 10 条, 页签: [1] [2]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .02344 s, 3 queries.