Foxtable(狐表)用户栏目专家坐堂 → [求助]狐表有“名表达式”功能吗?


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

主题:[求助]狐表有“名表达式”功能吗?

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


加好友 发短信
等级:小狐 帖子:300 积分:2826 威望:0 精华:0 注册:2017/9/14 8:21:00
[求助]狐表有“名表达式”功能吗?  发帖心情 Post By:2020/10/15 14:51:00 [显示全部帖子]

求助狐爸,狐表有名表达式功能吗?如果没有要如何实现类似功能呢?

具体应用如下

' 人员身份分类

Dim cFL1,cFL2,cFL3 As String
cFL1 = DataTables("人员身份").GetComboListString("人员身份","人员类别=1","序号")  '行政人员,机关工勤
cFL2 = DataTables("人员身份").GetComboListString("人员身份","人员类别=2","序号")  '事业人员,事业工勤
cFL3 = DataTables("人员身份").GetComboListString("人员身份","人员类别=3","序号")  '特殊4类人员

 Select Case e.DataRow("人员身份")
        Case 表达式1 (变量cFL1的值)
…………
…………
        Case 表达式2 (变量cFL2的值)
…………
…………

        Case 表达式2 (变量cFL3的值)
…………
…………
    End Select
[此贴子已经被作者于2020/10/15 14:57:03编辑过]

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


加好友 发短信
等级:小狐 帖子:300 积分:2826 威望:0 精华:0 注册:2017/9/14 8:21:00
  发帖心情 Post By:2020/10/15 15:02:00 [显示全部帖子]

在其他某种语言中,有一种叫“名表达式”的东西,具体作用就是将一个变量值直接程作为序执行的一部分,其书写方式是用括号把变量括起来。

例如

A = “事业人员”

那么代码
if e.row(“人员身份”) = (A)
则程序执行的时候就变成
if e.row(“人员身份”) = “事业人员”


说直白点,就是使用变量直接构建程序代码
[此贴子已经被作者于2020/10/15 15:04:31编辑过]

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


加好友 发短信
等级:小狐 帖子:300 积分:2826 威望:0 精华:0 注册:2017/9/14 8:21:00
  发帖心情 Post By:2020/10/15 16:37:00 [显示全部帖子]

因为我实际应用情况并非如此简单,如果是这样简单应用,当然可以直接使用变量,问题是case 之后的值是多值,类似于:“A”,"B",“C”

Dim cFL1,cFL2,cFL3 As String
cFL1 = "1"
cFL2 = "2"
cFL3 = "3"

Dim a As String = "3"
Select Case a
    Case   cFL1   在运行时,这里的变量要替换成 “A”,"B",“C”    这样的多值比较,这里的 “A”,"B",“C” 是变量的值
        msgbox(0)
    Case cFL2 
        msgbox(1)
    Case cFL3
        msgbox(2)
End Select

上图可能更好理解

此主题相关图片如下:yt.png
按此在新窗口浏览图片

[此贴子已经被作者于2020/10/15 16:44:20编辑过]

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


加好友 发短信
等级:小狐 帖子:300 积分:2826 威望:0 精华:0 注册:2017/9/14 8:21:00
  发帖心情 Post By:2020/10/15 16:45:00 [显示全部帖子]


图片点击可在新窗口打开查看此主题相关图片如下:yt.png
图片点击可在新窗口打开查看

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


加好友 发短信
等级:小狐 帖子:300 积分:2826 威望:0 精华:0 注册:2017/9/14 8:21:00
  发帖心情 Post By:2020/10/15 17:04:00 [显示全部帖子]

有两个表,
表1:datatables("人员身份"),里边有一个字段,存储若干种人员身份分类信息,例如:参公管理人员、行政工勤人员、参公工勤人员等等,而且是不确定的。
表2:datatables("工资调整"),里边有一个字段也叫“人员身份”,现在的需求是,当表2中的某一条记录的有关工资信息被修改,就必须进行对应的计算,但在计算之前,先得判断当前记录中的“人员身份”属于表1中若干种“人员身份”中的哪一种,因为分属于不同的“人员身份”,计算公式是不一样的。
本来可以使用
select case tables("工资调整").row("人员身份")
case "参公管理人员"、"行政工勤人员"、"参公工勤人员"
计算公式
…………
end select

这样的代码,但问题是这里的case对比项目 "参公管理人员"、"行政工勤人员"、"参公工勤人员" 是不确定的,每次要表1中提取并动态生成比对项目,麻烦就出在这里。


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


加好友 发短信
等级:小狐 帖子:300 积分:2826 威望:0 精华:0 注册:2017/9/14 8:21:00
  发帖心情 Post By:2020/10/15 17:22:00 [显示全部帖子]

如前边窗口截图,通过GetComboListString并加条件,提取成一条字符串,并加工

Dim cFL1,cFL2,cFL3 As String
cFL1 = DataTables("人员身份").GetComboListString("人员身份","人员类别=1","序号")  '行政人员,机关工勤
Output.Show(cFL1)
cFL1 = """" & cFL1.Replace("|","""" & "," & """") & """"
Output.Show(cFL1)

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


加好友 发短信
等级:小狐 帖子:300 积分:2826 威望:0 精华:0 注册:2017/9/14 8:21:00
  发帖心情 Post By:2020/10/15 17:35:00 [显示全部帖子]

目前就是样使用若干IF ……End if结构在处理,觉得很不爽……

 回到顶部