Foxtable(狐表)用户栏目专家坐堂 → 请问 'e' 需要怎样声明?


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

主题:请问 'e' 需要怎样声明?

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


加好友 发短信
等级:小狐 帖子:308 积分:3351 威望:0 精华:0 注册:2011/12/22 17:52:00
请问 'e' 需要怎样声明?  发帖心情 Post By:2011/12/24 14:09:00 [只看该作者]

我在练习帮助说明中关于“DataRowAdding”的操作时,在命令窗口运行

If e. DataTable .DataRows.Count = 0 Then '如果是一个空表
   
Return '那么返回
End
If

 

时出错了,提示为:编译错误:Name 'e' is not declared。

这个'e'不是直接能引用吗?还要怎样声明啊?


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


加好友 发短信 一级勋章
等级:狐仙 帖子:9875 积分:57584 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2011/12/24 14:14:00 [只看该作者]

e参数不能用于命令窗口,代表本表,本窗口的意思


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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33945 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2011/12/24 14:29:00 [只看该作者]

命令窗口只能这样

 

If CurrentTable.Rows.Count = 0 Then '如果是一个空表
    Return '那么返回
End If


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


加好友 发短信
等级:小狐 帖子:308 积分:3351 威望:0 精华:0 注册:2011/12/22 17:52:00
  发帖心情 Post By:2011/12/24 14:33:00 [只看该作者]

我把“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'

[此贴子已经被作者于2011-12-24 14:34:45编辑过]

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


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/12/25 9:57:00 [只看该作者]

不同的事件,有不同的e参数,你应该好好看看事件编程这一章。

 

例如DataColChanged的E参数有:

 

DataTable:返回发生数据更改的数据表。
DataRow: 返回发生数据更改的数据行。
DataCol: 返回发生数据更改的数据列。
NewValue: Object类型,表示新的值。
OldValue: Object类型,表示旧的值

 

窗口按钮的Clil事件e参数有:

 

Sender:返回触发事件的控件
Form: 返回控件所在的窗口

 

窗口按钮没有e.DataTable这样的用法,因为他们有DataTable这个e参数,你想一下,按钮和没有任何关系的,e.DaTable表示什么表?

 

[此贴子已经被作者于2011-12-25 9:57:18编辑过]

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


加好友 发短信
等级:小狐 帖子:308 积分:3351 威望:0 精华:0 注册:2011/12/22 17:52:00
  发帖心情 Post By:2011/12/25 19:39:00 [只看该作者]

 后来用 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

 
[此贴子已经被作者于2011-12-25 19:52:35编辑过]

 回到顶部