以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  全局变量和全局代码的问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=21083)

--  作者:chnfo
--  发布时间:2012/6/30 13:29:00
--  全局变量和全局代码的问题
是这样的,因为企业里有时候涉及到统计和业务单据界面计算显示方面的需要。
假设以库存为例子,每天都有出入库。
可能要按周、月统计情况。
那么就至少有两个参数
1、周的开始日,有7个选项,分别是周一至周七
2、月的开始日,有28个以上的选项,分别是1号~28号
3、小数点位数,例如金额,有的算得细到分,有的算得粗到元。

我想做一个表base,专门来存放这些参数,方便报表或者填写业务数据表的时候用到它们。
例如:
编号          名称                         参数值
1              周开始日                  可以让用户去选择1~7的数值
2              月开始日                  可以让用户输入1~28的数值
3              金额小数点位数          可以让用户输入0~2的数值

看了一下全局变量和全局参数,还是不太清楚该如何整,请教各位高手。

--  作者:狐狸爸爸
--  发布时间:2012/6/30 14:47:00
--  

你可以使用Var变量:
http://www.foxtable.com/help/topics/0325.htm

 
窗口中的控件可以绑定到Var变量的:
http://www.foxtable.com/help/topics/0704.htm

 
你可以将BeforeCloseProject事件中将Var变量的值保存到设置中,在AfterOpenProject事件中读取保存的值到Var变量中:

http://www.foxtable.com/help/topics/1544.htm

 


 
 
 

[此贴子已经被作者于2012-6-30 14:49:06编辑过]

--  作者:chnfo
--  发布时间:2012/6/30 22:42:00
--  
可能是我的意思没有表述清楚。
(1)全局变量的设置里,只有三列,不足以描述全局变量的所有属性
(2)我所要设的全局变量不是一个,是多个,还可能在做的过程中需要补充其它的全局变量,所以,用控件绑定的方式感觉不太合理
(3)至于要BeforeCloseProject中保存Var变量到设置中,既然不太好用全局变量来设置,这个好象就不太合适了。

我是想做成这样的
  编号 名称   说明   值   
   1WeekStart   每周开始日   2   
   2MonthStart 每月开始日 15
   3ListADot业务单据数量小数点位数     3
   4ListVDot 业务单据金额小数点位数  0 
当然,在这个表里还可以增加其它的变量

怎么样把这些表里的值设为各个名称的全局变量供所有的地方引用呢?

--  作者:狐狸爸爸
--  发布时间:2012/7/2 9:33:00
--  

其实很简单,不过你的表应该再增加一个名为“数据类型”的列,然后在AfteropenProject事件中设置代码:

 

For Each dr As DataRow In DataTables("xxx").Datarows
    Select Case dr("数据类型")
        Case "整数"
            Vars.Add(dr("名称"),Gettype(Integer),dr("值"))
        Case  "字符"
            Vars.Add(dr("名称"),Gettype(String),dr("值"))
    End Select
Next


--  作者:chnfo
--  发布时间:2012/7/3 9:45:00
--  
Very good!
学到方法了, 不一定要在全局变量中设置,而是用代码的方式来添加全局变量。
3Q!!

--  作者:狐狸爸爸
--  发布时间:2012/7/3 9:49:00
--  

呵呵,多看帮助,你就不会被这样的问题困扰。

其实帮助处处是宝来的。


--  作者:chnfo
--  发布时间:2012/7/6 11:59:00
--  
因为我是准备做数值处理,所以XXX表中设置初始值都是整数,那么是不是可以直接这样呢?
For Each dr As DataRow In DataTables("xxx").Datarows
\'    Select Case dr("数据类型")
\'       Case "整数"
            Vars.Add(dr("名称"),Gettype(Integer),dr("值"))
\'        Case  "字符"
\'            Vars.Add(dr("名称"),Gettype(String),dr("值"))
\'    End Select
Next
也就是说,把select都注释掉,但这样,保存的时候会报错?

--  作者:狐狸爸爸
--  发布时间:2012/7/6 14:41:00
--  

这个不应该有问题:

 

For Each dr As DataRow In DataTables("xxx").Datarows
    Vars.Add(dr("名称"),Gettype(Integer),dr("值"))
Next

 

具体德看错误提示,可以做个简单的出错的例子发上来。


--  作者:chnfo
--  发布时间:2012/7/27 10:14:00
--  
我把 DataTables("xxx")里的空白数据行删除之后,就不报错了。
不知道是不是这个原因:空白数据行里,V的值是空白