以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  预设值表如何在窗口保存数据和提取数据  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=173237)

--  作者:zhuxinhui
--  发布时间:2021/11/20 5:10:00
--  预设值表如何在窗口保存数据和提取数据

预设值表如何在窗口保存数据和提取数据
图片点击可在新窗口打开查看此主题相关图片如下:qq截图20211120045023.jpg
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20211120050048.jpg
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20211120050234.jpg
图片点击可在新窗口打开查看

 

 

 

预设值表的数据如上面操作虽然可以保存和提取全局值,但是如果顺序一变就会出错,所以一定要强调按顺序保存提取才行。还有其他的更好的方法吗?例如:1、怎样直接定义函数名列为变量,文本为值?

               2、怎样把窗口每一个文本框保存为一行数据?


--  作者:有点蓝
--  发布时间:2021/11/20 9:26:00
--  
如果只是为了把表格的数据和控件对应起来,完全不需要使用这种全局代码,反而更复杂了。

其次全局代码的用法完全是错误的
1、不能在全局代码定义变量的时候直接给变量赋值
2、全局代码初始化的时候表格还没有,不能使用

再次,这种字典数据的维护,个人建议在窗口里直接使用表格维护,直观又简单,需要增加一个字典项的时候完全不需要改窗口。如果使用文本框的方式,如果以后要加一个项目,还得重新改窗口添加一个文本框对应,多麻烦

如果一定要使用文本框,建议使用find等函数查表获取对应的行,然后和文本框值对应起来,比如:
给控件赋值,建议表格增加一个索引列,和控件的名称对应起来,比如表格索引1,对应文本框textbox1、索引2,对应文本框textbox2,然后代码
for each dr as datarow in datatables("预设值").select("类别=‘基本资料’")
e.form.controls("textbox" & dr("索引")).text = dr("文本")
next

从控件取值
for each dr as datarow in datatables("预设值").select("类别=‘基本资料’")
dr("文本") = e.form.controls("textbox" & dr("索引")).text 
next
[此贴子已经被作者于2021/11/20 9:39:55编辑过]

--  作者:zhuxinhui
--  发布时间:2021/11/20 10:01:00
--  
我是想:在各个模块设置里,都可以预设些资料或二选一的选择性项目或会计凭证科目,在各模块的操作中就直接调用这些预设资料来进行自动处理数据,例如:应收帐款的管理就直接调用预设科目来批量生成凭证。


--  作者:有点蓝
--  发布时间:2021/11/20 10:28:00
--  
查表再用并不会比直接使用变量慢多少。再说了,确定知道ddt01、ddt02这种没有任何表述性的名称表示个神马东西吗?换个开发人员,根本理解不了,就算是自己,过一段时间,估计也忘记了。感觉是为了自己“觉得”方便而方便,反而给以后挖了个坑。





--  作者:zhuxinhui
--  发布时间:2021/11/20 10:31:00
--  
我个人觉得,使用全局变量就灵活些,在模块内都可以任意使用

1、这个解决了窗口文本框与表之间数据的保存修改。
如果一定要使用文本框,建议使用find等函数查表获取对应的行,然后和文本框值对应起来,比如:
给控件赋值,建议表格增加一个索引列,和控件的名称对应起来,比如表格索引1,对应文本框textbox1、索引2,对应文本框textbox2,然后代码
for each dr as datarow in datatables("预设值").select("类别=‘基本资料’")
e.form.controls("textbox" & dr("索引")).text = dr("文本")
next

从控件取值
for each dr as datarow in datatables("预设值").select("类别=‘基本资料’")
dr("文本") = e.form.controls("textbox" & dr("索引")).text 
next
二、怎样给变理赋值呢??
其次全局代码的用法完全是错误的
1、不能在全局代码定义变量的时候直接给变量赋值
2、全局代码初始化的时候表格还没有,不能使用

--  作者:有点蓝
--  发布时间:2021/11/20 10:39:00
--  
给变量赋值的代码放到afteropenproject事件。全局代码只定义变量,不要赋值
--  作者:zhuxinhui
--  发布时间:2021/11/20 10:54:00
--  
这个代码怎样写呢?昨晚试了很久都不行?
“函数名”列名=文本的值

for each dr as datarow in datatables("预设值").select("类别=‘基本资料’")
 dr("函数名").text = dr("文本")
next
这个试过也不行????

--  作者:有点蓝
--  发布时间:2021/11/20 10:59:00
--  
变量是没有办法动态定义的,只能一个一个傻傻的用

ddt01 = “xx”
ddt02 = “xxx”

--  作者:zhuxinhui
--  发布时间:2021/11/20 11:14:00
--  
我还傻傻的在试,呵呵
--  作者:有点蓝
--  发布时间:2021/11/20 11:26:00
--  
可以考虑使用字典,比如

全局代码
public dict as new dictionary(of string ,string)

afteropenproject
for each dr as datarow in datatables("预设值").select("类别=‘基本资料’")
dict.add(dr("函数名"),dr("文本"))
next

其它事件调用
e.form.controls("textbox1").text = dict("ddt01")