以文本方式查看主题

-  易表在线答疑  (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"",""姓名...
谢谢!刚才就是没能转过弯来