Foxtable(狐表)用户栏目专家坐堂 → vars变量


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

主题:vars变量

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


加好友 发短信
等级:狐精 帖子:3144 积分:20951 威望:0 精华:0 注册:2016/3/28 16:57:00
vars变量  发帖心情 Post By:2020/4/3 14:44:00 [只看该作者]

老师,我独立窗口(添加到页签的),窗口打开后都定义变量了变量 vars("editTable") =e.Form.TableName

后面录入窗口(或是审核窗口-通用的)用的模式窗口,可以直接用vars("editTable")

当我打开多个页签时,vars("editTable") 变量会出现混淆情况,这种有什么方法解决呢?

[此贴子已经被作者于2020/4/3 14:44:42编辑过]

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


加好友 发短信
等级:超级版主 帖子:109505 积分:557193 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/4/3 14:48:00 [只看该作者]

定义一个全局变量的字典,窗口名称做主键,表名称做值

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


加好友 发短信
等级:狐精 帖子:3144 积分:20951 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2020/4/3 15:13:00 [只看该作者]

请老师指导一下具体怎么定义,怎么用?

 


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


加好友 发短信
等级:超级版主 帖子:109505 积分:557193 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/4/3 15:15:00 [只看该作者]


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


加好友 发短信
等级:狐精 帖子:3144 积分:20951 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2020/4/3 15:43:00 [只看该作者]

老师,比如我全局代码定义:

Dim ty As New  Dictionary(Of String, String)

后面怎么来用呢?


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


加好友 发短信
等级:超级版主 帖子:109505 积分:557193 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/4/3 15:52:00 [只看该作者]

全局代码定义:

public ty As New  Dictionary(Of String, String)


使用

 ty.add(e.Form.Name,e.Form.TableName)


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


加好友 发短信
等级:狐精 帖子:3144 积分:20951 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2020/4/3 17:29:00 [只看该作者]

老师,还是没用来,来个实际的用法指导一下:比如我要分页加载:改怎么调用这个字典?

With DataTables( )
.LoadFilter = ""
.LoadPage = 0  '加载第一页
.LoadTop = e.Form.Controls("ComboBox1").Value   '每页20行
.LoadOver =  "序号" '加载依据列
.Load()
.LoadPage = .TotalPages -1  '加载最后一页数据
.Load()
e.Form.Controls("TextBox1").Value = .TotalPages & "/" & .TotalPages
End  With

[此贴子已经被作者于2020/4/3 17:29:43编辑过]

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


加好友 发短信
等级:超级版主 帖子:109505 积分:557193 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/4/3 17:38:00 [只看该作者]

With DataTables(ty(e.Form.Name) )

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


加好友 发短信
等级:狐精 帖子:3144 积分:20951 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2020/4/7 9:04:00 [只看该作者]

老师,窗口的afterload事件代码如下:

 

ty.add(e.Form.Name,e.Form.TableName)
msgbox(ty(e.Form.Name))
With DataTables(ty(e.Form.Name))
    .LoadFilter = ""

 

会报错提示:

 

.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2020.1.19.19
错误所在事件:窗口,日常费用支付管理,AfterLoad
详细错误信息:
已添加了具有相同键的项。

 

 

窗口打开后,在另一个独立窗口调用代码如下:

Dim r As Row =Tables(ty(e.Form.Name)).Current
With Tables("审核意见表")
    .Filter = "[ID] = '"& r("ID") &"'"
    .Sort = "审核日期"

会报错提示:

.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2020.1.19.19
错误所在事件:窗口,审核窗口,AfterLoad
详细错误信息:
给定关键字不在字典中。

[此贴子已经被作者于2020/4/7 9:16:27编辑过]

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


加好友 发短信
等级:超级版主 帖子:109505 积分:557193 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/4/7 9:22:00 [只看该作者]

判断一下,如果添加过就不要重复添加了
if ty.ContainsKey(e.Form.Name)=false then ty.add(e.Form.Name,e.Form.TableName)

如果是在afterload里面使用,直接使用e.Form.TableName即可,完全看不出使用字典的必要
With DataTables(e.Form.TableName)
    .LoadFilter = ""

除非是为了跨窗口使用,如果跨窗口使用,就不能使用ty(e.Form.Name),因为e.Form.Name指的是当前窗口名称,而不是其他窗口名称,应该是ty("日常费用支付管理")这种。审核窗口的错误看看是不是这个问题


 回到顶部
总数 21 1 2 3 下一页