Rss & SiteMap

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

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

标题:关于DataList的current

1楼
cpayinyuan 发表于:2009/5/7 13:14:00

帮助中关于DataList的Current的说明及事例是:

DataRow类型,返回DataList所选定的行。

示例

……
为此,可将该按钮的Click事件代码设为:

Dim dst As WinForm.DataList = e.Form.Controls("DataList1")
Dim
dr as DataRow = dst.Current '获得选定行
If
dr Is Nothing Then
    Return
End
If
Dim
Index As Integer = Tables("订单").FindRow(dr) '获得选定行在Tables("订单")中的位置
If
Index >=0 Then '如果选定行在Tables("订单")中存在
   
Tables("订单").Position = Index '定位到选定行
    Forms(
"窗口1").Open() '打开编辑窗口
End
If

……

我有两个问题,是:
(1)上面的事例好像有点小问题,我就是照做的,结果总是出错,害得我查了半天。原因是获得DataList的当前行后直接用Dim Index As Integer = Tables("订单").FindRow(dr) 定位在Table中的位置,没有考虑这时候DataList中的当前行dr在Table中可能并不存在,即Table可能是经过筛选的,所以这时候会出现DataList中显示的当前行在Table中找不到,无法打开窗口,所以就出错。如果在用Table定位当前行之前加上一句:Tables("订单").Filter=True,应该就没有什么问题了。不知我的分析对不对?如果对建议修改帮助文件,作为帮助文件中的事例会经常被大家抄过来用,如果不修改会给大家造成误导。
(2)在上例中,假如窗口1不绑定订单表,而是绑定全局变量,是否就没有必要再用table的Findrow及position定位,可以直接用 vars("变量名")=dr("字段名"),窗口保存的时候,反过来:dr("字段名")=vars("变量名")。这种方法有什么问题吗?

[此贴子已经被作者于2009-5-7 15:25:23编辑过]
2楼
狐狸爸爸 发表于:2009/5/7 14:56:00
1、不应该出错啊,因为代码中加了判断的:
If Index >=0 Then '如果选定行在Tables("订单")中存在

2、当然可以的。
3楼
cpayinyuan 发表于:2009/5/7 15:24:00
以下是引用狐狸爸爸在2009-5-7 14:56:00的发言:
1、不应该出错啊,因为代码中加了判断的:
If Index >=0 Then '如果选定行在Tables("订单")中存在

     我知道您的意思,虽然有这个判断,不会引用空行,但用户希望的是只要表中存在这一行就打开窗口,即使有这个判断,仍然不会打开窗口,这不是用户希望的结果!应该可以算作出错.

[此贴子已经被作者于2009-5-7 15:24:35编辑过]
共3 条记录, 每页显示 10 条, 页签: [1]

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

Powered By Dvbbs Version 8.3.0
Processed in .04688 s, 2 queries.