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


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

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

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


加好友 发短信
等级:小狐 帖子:310 积分:2941 威望: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


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

什么叫“名表达式”?举例说明一下

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


加好友 发短信
等级:小狐 帖子:310 积分:2941 威望: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编辑过]

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


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

这个,变量直接使用即可,和表达式有啥关系?!

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

Dim a As String = "3"
Select Case a
    Case cFL1
        msgbox(0)
    Case cFL2
        msgbox(1)
    Case cFL3
        msgbox(2)
End Select

if e.row(“人员身份”) = A 直接这样使用即可。

您说的这个所谓的"名表达式"应该是指内插字符串的用法吧:https://docs.microsoft.com/zh-cn/dotnet/visual-basic/programming-guide/language-features/strings/interpolated-strings

目前foxtable的编译器不支持这种用法。需要.NET Framework 4.6及以上的版本才支持的。

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


加好友 发短信
等级:小狐 帖子:310 积分:2941 威望: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编辑过]

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


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

可以使用if判断。具体请举例详细的用法说明

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


加好友 发短信
等级:小狐 帖子:310 积分:2941 威望:0 精华:0 注册:2017/9/14 8:21:00
  发帖心情 Post By:2020/10/15 16:45:00 [只看该作者]


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

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


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

请详细描述需要做什么样的判断?具体的功能,使用场合,需要什么结果?

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


加好友 发短信
等级:小狐 帖子:310 积分:2941 威望: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中提取并动态生成比对项目,麻烦就出在这里。


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


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

表1的数据和结构是怎么样的?怎么样个动态法?

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