Foxtable(狐表)用户栏目专家坐堂 → 预设值表如何在窗口保存数据和提取数据


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

主题:预设值表如何在窗口保存数据和提取数据

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


加好友 发短信
等级:八尾狐 帖子:1995 积分:6338 威望:0 精华:0 注册:2017/11/8 17:37:00
预设值表如何在窗口保存数据和提取数据  发帖心情 Post By:2021/11/20 5:10:00 [只看该作者]

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

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

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

 

 

 

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

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


 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110744 积分:563646 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1995 积分:6338 威望:0 精华:0 注册:2017/11/8 17:37:00
  发帖心情 Post By:2021/11/20 10:01:00 [只看该作者]

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


 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110744 积分:563646 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/11/20 10:28:00 [只看该作者]

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





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


加好友 发短信
等级:八尾狐 帖子:1995 积分:6338 威望:0 精华:0 注册:2017/11/8 17:37:00
  发帖心情 Post By: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、全局代码初始化的时候表格还没有,不能使用

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110744 积分:563646 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/11/20 10:39:00 [只看该作者]

给变量赋值的代码放到afteropenproject事件。全局代码只定义变量,不要赋值

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


加好友 发短信
等级:八尾狐 帖子:1995 积分:6338 威望:0 精华:0 注册:2017/11/8 17:37:00
  发帖心情 Post By:2021/11/20 10:54:00 [只看该作者]

这个代码怎样写呢?昨晚试了很久都不行?
“函数名”列名=文本的值

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

 回到顶部
帅哥,在线噢!
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110744 积分:563646 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/11/20 10:59:00 [只看该作者]

变量是没有办法动态定义的,只能一个一个傻傻的用

ddt01 = “xx”
ddt02 = “xxx”

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


加好友 发短信
等级:八尾狐 帖子:1995 积分:6338 威望:0 精华:0 注册:2017/11/8 17:37:00
  发帖心情 Post By:2021/11/20 11:14:00 [只看该作者]

我还傻傻的在试,呵呵

 回到顶部
帅哥,在线噢!
有点蓝
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110744 积分:563646 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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")

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