以文本方式查看主题
- 易表在线答疑 (http://egrid2000.com/dvbbs/index.asp)
-- 用户社区 (http://egrid2000.com/dvbbs/list.asp?boardid=2)
---- [求助]列名是动态拼凑出来的,如何获取具体的列值 (http://egrid2000.com/dvbbs/dispbbs.asp?boardid=2&id=27862)
|
-- 作者:andy31009
-- 发布时间:2015/4/2 18:27:00
-- [求助]列名是动态拼凑出来的,如何获取具体的列值
如题所示,假设一个表的某一列名称为"1号_合做数量",一般情况下该列的一个具体值可以用[1号_合做数量]来获取,但如果列名是动态拼凑出来的呢:[%前缀%]+"合做数量" ,(假设[%前缀%] = "1号_"),这种情况下又该如何获取列值呢?
我想做一个统计计件工资的表,如附件中的截图所示,[1号_工价],这个列名需要动态拼凑出来 此主题相关图片如下:计件工资统计.jpg
if([%姓名1%] = "" and [%姓名2%] = "" ,SetVariable("%合做人数%",0), true) and if([%姓名1%] <> "" and [%姓名2%] = "" ,SetVariable("%合做人数%",1) and SetVariable("%合做人员%",[%姓名1%]), true) and if([%姓名1%] = "" and [%姓名2%] <> "" ,SetVariable("%合做人数%",1) and SetVariable("%合做人员%",[%姓名2%]), true) and if([%姓名1%] <> "" and [%姓名2%] <> "" ,SetVariable("%合做人数%",2), true) and if([%合做人数%] = 0, msgbox("请选择合做人员!", 0), SetVariable("%合做人数%",[%合做人数%]+1) and SetVariable("%平均金额%",[1号_工价] * [%合做数量%] / [%合做人数%]) and ReplaceFor("单表测试","合做数量",[%合做数量%] ,"姓名", "=", [姓名] ) and ReplaceFor("单表测试","1号_金额",[%平均金额%],"姓名", "=", [姓名]) )
[此贴子已经被作者于2015/4/3 10:21:42编辑过]
|
-- 作者:cnzayu
-- 发布时间:2015/4/2 20:32:00
--
在运行过程中动态设置指定列的刷新公式。
语法 SetColFormula(Grid,Col,Formula) Grid 指定表,可以用表名称,也可以用表位置表示。 Col 指定列,可以用列名称,也可以用列位置表示。 Formula 刷新公式。
例子 SetColFormula(GridName,"金额","[数量]*[单价]*(1-[折扣])")
提示:如果刷新公式中有引号,那么公式用两个引号表示一个,具体写法:
1、按照常规写出刷新公式: SetColFormula(GridName,"型号",FindText("产品资料","品名","编号","=",[编号]))
2、将刷新公式中的每个双引号分别用连续的两个双引号代替: SetColFormula(GridName,"型号",FindText(""产品资料"",""品名"",""编号"",""="",[编号]))
3、最后给刷新公式的两端加上双引号: SetColFormula(GridName,"型号","FindText(""产品资料"",""品名"",""编号"",""="",[编号])")
|
-- 作者:dancedy
-- 发布时间:2015/4/3 8:51:00
--
一般函数可以直接拼接,如 FindText(GridName,[%前缀%]+"合做数量")
具体情况具体分析,可以上传例子
|
-- 作者:andy31009
-- 发布时间:2015/4/3 10:23:00
--
我想做一个统计计件工资的表,如附件中的截图所示,[1号_工价],这个列名需要动态拼凑出来 此主题相关图片如下:计件工资统计.jpg
if([%姓名1%] = "" and [%姓名2%] = "" ,SetVariable("%合做人数%",0), true) and if([%姓名1%] <> "" and [%姓名2%] = "" ,SetVariable("%合做人数%",1) and SetVariable("%合做人员%",[%姓名1%]), true) and if([%姓名1%] = "" and [%姓名2%] <> "" ,SetVariable("%合做人数%",1) and SetVariable("%合做人员%",[%姓名2%]), true) and if([%姓名1%] <> "" and [%姓名2%] <> "" ,SetVariable("%合做人数%",2), true) and if([%合做人数%] = 0, msgbox("请选择合做人员!", 0), SetVariable("%合做人数%",[%合做人数%]+1) and SetVariable("%平均金额%",[1号_工价] * [%合做数量%] / [%合做人数%]) and ReplaceFor("单表测试","合做数量",[%合做数量%] ,"姓名", "=", [姓名] ) and ReplaceFor("单表测试","1号_金额",[%平均金额%],"姓名", "=", [姓名]) )
[此贴子已经被作者于2015/4/3 10:29:23编辑过]
|
-- 作者:dancedy
-- 发布时间:2015/4/3 10:56:00
--
假设[%前缀%] = "1号_"
Eval("SetVariable(""%平均金额%"",[" + [%前缀%] + "工价] * [%合做数量%] / [%合做人数%]) ")
|
-- 作者:andy31009
-- 发布时间:2015/4/3 11:55:00
-- 回复:(dancedy)假设[%前缀%] = "1号_" Ev...
非常感谢版主,终于解决了我的难题。之前我也有看到Eval这个函数,但由于是第一次学习,根本就想不到用这个函数来解决。
|
-- 作者:andy31009
-- 发布时间:2015/4/8 9:42:00
--
我在新增行的时候遇到问题了,列名用动态拼凑出来的时候,新增行不成功,也没有任何错误提示。请版主指点,谢谢!
SetVariable("%列名前缀%",Mid(colname, 0, 4)) and addRow("单表测试1","姓名,工序,[%列名前缀%]+""是否合做""",赵明达,热压,true) 或者 addRow("单表测试1","姓名,工序,Eval([%列名前缀%]+""是否合做"")",赵明达,热压,true)
[此贴子已经被作者于2015/4/8 10:19:49编辑过]
|
-- 作者:dancedy
-- 发布时间:2015/4/8 10:21:00
--
Eval("addRow(""单表测试1"",""姓名,工序," + [%列名前缀%] + "是否合做"",""赵明达"",""热压"",true)")
|
-- 作者:andy31009
-- 发布时间:2015/4/8 10:21:00
--
后来仔细想了一下,最终转过弯来了
SetVariable("%列名前缀%",Mid(colname, 0, 4)) and Eval("addRow(""单表测试1"","""+[%列名前缀%]+"是否合做"",true)")
|
-- 作者:andy31009
-- 发布时间:2015/4/8 10:22:00
-- 回复:(dancedy)Eval("addRow(""单表测试1"",""姓名...
谢谢!刚才就是没能转过弯来
|