以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]事件中引用“全局变量”不会(已解决) (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=3489) |
-- 作者:roy78 -- 发布时间: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 -- 发布时间:2009/7/8 15:15:00 -- 如是当天,没必要设全局变量,可以直接 用#" & Date.Today & "#" |
-- 作者:roy78 -- 发布时间:2009/7/8 15:33:00 -- 谢谢,又学了一点,不过我是想知道事件中引用全局变量的格式,已经会了,谢谢。 |
-- 作者:yangming -- 发布时间:2009/7/8 15:39:00 -- 请你说明是放在哪个事件中的及你的正确的代码发上来,以便大家学习 |
-- 作者:roy78 -- 发布时间:2009/7/8 15:45:00 -- 全局变量设定同上,在按钮的单击事件中的设置: Dim dst As WinForm.DataList = e.Form.Controls("DataList1") dst.Rowfilter="[生产日期]=\'" & Vars("今天日期") & "\'" |
-- 作者:yangming -- 发布时间: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 -- 发布时间:2009/7/8 16:29:00 -- 哇哈哈,又学到了。谢谢 |
-- 作者:ybmjy -- 发布时间:2009/7/9 16:54:00 -- 怎样设置全局变量,在哪设哦。 |
-- 作者:狐狸爸爸 -- 发布时间:2009/7/9 16:57:00 -- Initialize 数据已经加载,所有的DataTable都已经生成,即将生成Table和窗口的时候执行,通常在此添加全局变量,以及针对DataTable的初始化设置。 例如将Initialize事件代码设为: Vars.Add("Aggregate",GetType(Boolean),False) 上面的代码增加了一个逻辑型全局变量Aggregate,并将订单表日期列的默认值设置当天日期。 |
-- 作者:8月32号 -- 发布时间:2009/7/9 16:57:00 -- 以下是引用ybmjy在2009-7-9 16:54:00的发言:
怎样设置全局变量,在哪设哦。 全局变量 在Foxtable中实际开发的时候,你会发现,你所编写的代码分布在各个事件中。 增加全局变量 语法 Vars.Add(VarName,GetType(Type)) 参数 VarName: 全局变量名称 例如: 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 ThenVars("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 |