Rss & SiteMap
Foxtable(狐表) http://www.foxtable.com
我在练习帮助说明中关于“DataRowAdding”的操作时,在命令窗口运行
If e. DataTable .DataRows.Count = 0 Then '如果是一个空表
Return '那么返回
End If
时出错了,提示为:编译错误:Name 'e' is not declared。
这个'e'不是直接能引用吗?还要怎样声明啊?
e参数不能用于命令窗口,代表本表,本窗口的意思
命令窗口只能这样
If CurrentTable.Rows.Count = 0 Then '如果是一个空表
Return '那么返回
End If
我把“DataRowAdding”的例子四,拷贝到窗口的一个按钮代码,想通过按钮来执行,还是出错了。
以下是代码
If e.DataTable.DataRows.Count = 0 Then '如果是一个空表
Return '那么返回
End If
Dim ColNames As String() = {"日期","客户","雇员"} '定义一个数组,保存复制列的名称
Dim dr As DataRow = e.DataTable.DataRows(e.DataTable.DataRows.Count - 1) '获得最后一行
For Each ColName As String in ColNames
e.DataRow(ColName) = dr(ColName) '将最后一行的内容复制到新增行中.
Next
保存时,出现:
编译错误:'DataTable' is not a member of 'ControlEventArgs'
不同的事件,有不同的e参数,你应该好好看看事件编程这一章。
例如DataColChanged的E参数有:
DataTable:返回发生数据更改的数据表。
DataRow: 返回发生数据更改的数据行。
DataCol: 返回发生数据更改的数据列。
NewValue: Object类型,表示新的值。
OldValue: Object类型,表示旧的值
窗口按钮的Clil事件e参数有:
Sender:返回触发事件的控件
Form: 返回控件所在的窗口
窗口按钮没有e.DataTable这样的用法,因为他们有DataTable这个e参数,你想一下,按钮和没有任何关系的,e.DaTable表示什么表?
后来用 Tables("客户"). 代替e. 调试通过了
对foxtable有更多的理解,我觉得下面一句效率很高。
For Each ColName As String In ColNames
Next
修改后代码为:
Dim ColNames As String () = { "日期" , "客户" , "雇员" } ' 定义一个数组,保存复制列的名称
Dim r As Row = Tables("客户").Rows (Tables("客户").Rows.Count - 1) '获得最后一行
Tables("客户").AddNew()
For Each ColName As String In ColNames
Tables("客户").Rows(Tables("客户").Rows.Count - 1)(ColName) = r(ColName) '将最后一行的内容复制到新增行中.
Next