<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />这可能是一个非常简单的问题,但经过大量搜索和测试后我无法弄清楚。如果我只知道列对话框中的列名称,如何获取给定列的列号?
最小化代码:
dlg = 列对话框( dlg_firstParam = ColList( "第一个参数"));
第一个参数 = dlg["dlg_firstParam"][1];
我 = 5; // 这是一个测试用例。假设我要选择上面对话框中的第五列。如果这有效,我会为 i = 1 编写一个循环到 ncol() 并根据第一个参数名称测试列名称( i )...但它不起作用。
显示(第(i)列); // 返回:Column("日期");
显示(第一个参数); // 返回: :日期;
显示(列名(i)); //返回:日期;
//好吧,鉴于上面两行,我想我应该能够去掉 :Date; 中字符串开头的冒号并与日期进行比较;如下。看起来几乎可以工作...
a = parse(right(expr(firstParam),length(expr(firstParam))));
显示(一); // 返回:日期;
// 好的,所以冒号被去掉了。
if(列名(i)==a,b = 1, 列名(i)!=a, b = 0);
显示(b); // 返回 0
////////////////////////////////////
上面的代码是一个测试,看看我是否可以循环并测试列名(i)是否=firstParam的函数。 看起来应该有效,但事实并非如此。 有任何想法吗?
首选方法是直接返回列号。如果您能帮助我,我将不胜感激。
(编辑:只需注意将代码中的最后一个变量从 colnumber 更改为某个非 JMP 关键字。colnumber 被保留。 否则工作正常。)
感谢您的解决方案! 如果数据表未在线上激活,给那些人一个小提示
colname = Column( "height" ) << getname;
那么这条线就行不通了。 但是,如果您同时指定数据表和列名称:
colname = dt:height << getname;
它工作完美! 只是提供一些建议,这样其他人就不会像我一样陷入困境;)
谢谢女士。只需注意将代码最后一行中的“colnumber”更改为某个非 JMP 关键字。 否则它工作正常。
我的同事通过直接获取号码提出了类似的解决方案:
碰撞= dt <<获取列名(细绳) ;
第一个参数名称=第一个参数<<得到名字;
列号=包含(碰撞,第一个参数名称) ;
您可以使用 Loc() 函数在所有列名列表(按数据表中的顺序)中定位列名的位置。
例子:
dt =打开( “$SAMPLE_DATA/大类.jmp” ) ;
碰撞= dt <<获取列名(细绳) ;
科名=柱子( “高度” ) <<获取名称;
列号= (洛克(碰撞,科名))[ 1 ] ;