以文本方式查看主题
- 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")
|