Foxtable(狐表)用户栏目专家坐堂 → [求助]事件中引用“全局变量”不会(已解决)


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

主题:[求助]事件中引用“全局变量”不会(已解决)

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


加好友 发短信
等级:一尾狐 帖子:463 积分:3559 威望:0 精华:0 注册:2009/6/26 8:01:00
[求助]事件中引用“全局变量”不会(已解决)  发帖心情 Post By:2009/7/8 14:35:00 [只看该作者]

我在系统事件INitialize中设置了全局变量,变量名为 今天日期
  Vars.Add("今天日期",GetType(date), Date.Today())
  想通过按钮返回字段为‘生产日期’且字段内容等于全局变量名为‘今天日期’的数据,不知道应该怎么设置,如下参考:我在帮助上看了半天也没看明白,哈哈,理解可能有问题。

 Dim dst As WinForm.DataList = e.Form.Controls("DataList1")
 dst.Rowfilter="[班次]='甲白' and 生产日期=Vars("今天日期")"
[此贴子已经被作者于2009-7-8 14:55:09编辑过]

 回到顶部
美女呀,离线,留言给我吧!
yangming
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:4109 积分:23338 威望:0 精华:21 注册:2008/9/1 20:07:00
  发帖心情 Post By:2009/7/8 15:15:00 [只看该作者]

如是当天,没必要设全局变量,可以直接  用#" & Date.Today & "#"
Dim dst As WinForm.DataList = e.Form.Controls("DataList1")
 dst.Rowfilter="[班次]='甲白' and [生产日期] =#" & Date.Today & "#"


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


加好友 发短信
等级:一尾狐 帖子:463 积分:3559 威望:0 精华:0 注册:2009/6/26 8:01:00
  发帖心情 Post By:2009/7/8 15:33:00 [只看该作者]

谢谢,又学了一点,不过我是想知道事件中引用全局变量的格式,已经会了,谢谢。

 回到顶部
美女呀,离线,留言给我吧!
yangming
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:4109 积分:23338 威望:0 精华:21 注册:2008/9/1 20:07:00
  发帖心情 Post By:2009/7/8 15:39:00 [只看该作者]

请你说明是放在哪个事件中的及你的正确的代码发上来,以便大家学习


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


加好友 发短信
等级:一尾狐 帖子:463 积分:3559 威望:0 精华:0 注册:2009/6/26 8:01:00
  发帖心情 Post By:2009/7/8 15:45:00 [只看该作者]

全局变量设定同上,在按钮的单击事件中的设置:
Dim dst As WinForm.DataList = e.Form.Controls("DataList1")
dst.Rowfilter="[生产日期]='" & Vars("今天日期") & "'"

 回到顶部
美女呀,离线,留言给我吧!
yangming
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:4109 积分:23338 威望:0 精华:21 注册:2008/9/1 20:07:00
  发帖心情 Post By:2009/7/8 16:23:00 [只看该作者]

如果加一个ComboBox1,那就可以这样

Dim com As String = e.Form.Controls("ComboBox1").Value
Dim dst As WinForm.DataList = e.Form.Controls("DataList1")
If com = "" Then
    dst.RowFilter = ""
Else
    com = "'" & com & "'"
 dst.Rowfilter="[班次]= " & com & " and [生产日期] =  '" & Vars("今天日期") & "'"
End If

不用全局变量的,直接日期的
Dim com As String = e.Form.Controls("ComboBox1").Value
Dim dst As WinForm.DataList = e.Form.Controls("DataList1")
If com = "" Then
    dst.RowFilter = ""
Else
    com = "'" & com & "'"
 dst.Rowfilter="[班次]= " & com & " and [生产日期] =#" & Date.Today & "#"
End If
[此贴子已经被作者于2009-7-8 16:25:07编辑过]

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


加好友 发短信
等级:一尾狐 帖子:463 积分:3559 威望:0 精华:0 注册:2009/6/26 8:01:00
  发帖心情 Post By:2009/7/8 16:29:00 [只看该作者]

  哇哈哈,又学到了。谢谢

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


加好友 发短信
等级:一尾狐 帖子:428 积分:4705 威望:0 精华:3 注册:2009/7/4 13:40:00
  发帖心情 Post By:2009/7/9 16:54:00 [只看该作者]

怎样设置全局变量,在哪设哦。


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


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

Initialize

数据已经加载,所有的DataTable都已经生成,即将生成Table和窗口的时候执行,通常在此添加全局变量,以及针对DataTable的初始化设置。

例如将Initialize事件代码设为:

Vars.Add("Aggregate",GetType(Boolean),False)
DataTables
("订单").DataCols("日期").DefaultValue = Date.Today()

上面的代码增加了一个逻辑型全局变量Aggregate,并将订单表日期列的默认值设置当天日期。


 回到顶部
美女呀,离线,留言给我吧!
8月32号
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:30 积分:210 威望:0 精华:0 注册:2009/7/7 14:23:00
  发帖心情 Post By:2009/7/9 16:57:00 [只看该作者]

以下是引用ybmjy在2009-7-9 16:54:00的发言:

怎样设置全局变量,在哪设哦。

全局变量

在Foxtable中实际开发的时候,你会发现,你所编写的代码分布在各个事件中。
我们之前提到的变量,都只能在定义该变量的事件代码中使用,我们无法用它们在不同的事件代码中传递信息。
全局变量就是为解决这个问题而提出的,
所谓全局变量,就是在任何一个事件代码中都可以使用的变量。
全局变量存储在集合
Vars
中。
全局变量的具体使用方法,我们会在今后的章节介绍,现在你只需了解这个概念。

增加全局变量

语法

Vars.Add(VarName,GetType(Type))
Vars.Add(VarName,GetType(Type),Value)

参数

VarName: 全局变量名称
Type:   
全局变量类型,需要配合GetType关键字来获得数据类型,例如GetType(String)表示字符型,GetType(Boolean)表示逻辑型。
Value:  
可选参数,用于设置全局变量的初始值。

例如:

Vars.Add("Mark1",GetType(Boolean),False)

表示增加一个逻辑型全局变量Mark1,初始值为False

Vars.Add("起始日期",GetType(Date),#12/31/2007#)

表示增加一个日期型全局变量,名称为“起始日期”,初始值为#12/31/2007#

引用全局变量

增加全局变量后,你既可在任何事件代码中引用全局变量。
引用全局变量的语法为:

Vars(VarName)

VarName:全局变量名称。

例如:

If Vars("Mark1") = False Then
    Vars(
"Mark1") = True
    Vars(
"起始日期") = #8/21/2002#
   
Output.Show(Vars("起始日期"))
End
If


使用全局变量

为了能够在不同的事件代码中交流数据,需要使用全局变量。
下面我们用一个简单的例子,来说明如何使用全局变量。

假定我们规定表A每天只能增加500行,为实现此目的,需要进行如下设置:

1、在项目事件Initialize中加入代码:

Vars.Add("Count",GetType(Integer))

上面的代码,增加了一个名为Count的全局变量,该变量为整数型,用于记录已经增加的行数。

2、在表A的DataRowAdded事件中加入代码:

Vars("Count") = Vars("Count") + 1

这样每增加一行,全局变量Count就会增加1

3、然后在表A的DataRowDeleted事件中加入代码:

Vars("Count") = Vars("Count") - 1

这样每删除一行,全局变量Count就会减1

4、最后在表A的BeforeAddDataRow事件中加入代码:

If Vars("Count") >= 500 Then '如果已经增加了500行
    Messagebox.Show("每天只能在表A中增加500行!","提示")
    e.Cancel = True '那么取消增加行
End
If

这个例子并没有多少实际的意义,重新打开项目,我们又可以增加500行了,不过这个例子很好地说明了如何使用全局变量在不同的事件中交流数据。

如果要跟踪全局变量值的变化,可以使用事件:GlobalVariableChanged


 回到顶部
总数 13 1 2 下一页