<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Esta puede ser una pregunta realmente simple, pero después de muchas búsquedas y pruebas, no puedo resolverla.¿Cómo obtengo el número de columna para una columna dada si todo lo que sé es el nombre de la columna de un cuadro de diálogo de columna?
Código minimizado:
dlg = Diálogo de columna (dlg_firstParam = ColList ("Primer parámetro"));
primerParam = dlg["dlg_firstParam"][1];
yo = 5; // este es un caso de prueba.Supongamos que voy a seleccionar la quinta columna en el cuadro de diálogo de arriba.Si esto funciona, escribiría un bucle para i = 1 en ncol() y probaría el Nombre de columna ( i ) con el nombre del primer parámetro... pero no funciona.
mostrar (columna (i)); // devuelve: Columna("Fecha");
mostrar (primerParam); // devuelve: :Fecha;
show(nombreColumna(i)); //devuelve: Fecha;
//Ok, dadas las dos líneas anteriores, creo que debería poder quitar los dos puntos al principio de la cadena en :Date; y comparar con Fecha; como a continuación.Casi parece que funcionará...
a = parse(right(expr(firstParam),length(expr(firstParam))));
mostrar (a); // Devuelve: Fecha;
// Ok, entonces los dos puntos se eliminan.
if(nombreColumna(i)==a,b = 1, nombreColumna(i)!=a, b = 0);
mostrar (b); // devuelve 0
//////////////////
El código anterior es una prueba para ver si puedo recorrer y probar si el nombre de la columna ( i ) = una función de firstParam. Parece que debería funcionar, pero no lo hace. ¿Algunas ideas?
El método preferido sería simplemente devolver el número de columna directamente.Si me puedes ayudar con eso te lo agradecería.
(Editar: solo una nota para cambiar la última variable en su código de colnumber a alguna palabra clave que no sea JMP. colnumber está reservado. De lo contrario, funciona bien.)
¡Gracias por la solución! Un pequeño consejo para los que están por ahí, si la tabla de datos no está activa en la línea
colname = Column( "height" ) << getname;
Entonces esta línea no funcionará. Sin embargo, si especifica tanto la tabla de datos como el nombre de la columna:
colname = dt:height << getname;
¡Funciona perfectamente! Solo ofrezco algunos consejos para que otros no se cuelguen como yo;)
Gracias MS. Solo una nota para cambiar el "número de columna" en la última línea de su código a alguna palabra clave que no sea JMP. De lo contrario, funciona bien.
El tipo con el que trabajo sugirió una solución similar al obtener el número directamente:
colista = dt << obtener nombres de columna ( cadena ) ;
firstParam_name = primerParam << obtener nombre ;
ColumnNumber = contiene ( colista , firstParam_name ) ;
Puede usar la función Loc() para ubicar la posición de un nombre de columna en una lista de todos los nombres de columna (ordenados como en la tabla de datos).
Ejemplo:
dt = Abierto ( "$SAMPLE_DATA/Clase grande.jmp" ) ;
colista = dt << obtener nombres de columna ( cadena ) ;
nombre de columna = Columna ( "altura" ) << obtener nombre ;
colnumber = ( ubicación ( colista , nombre de columna ))[ 1 ] ;