Bucle JSL FOR para verificar los valores en las celdas y eliminar el séptimo carácter si lo hayEste fragmento a continuación es una parte de mi guión. En este punto tengo una tabla de datos y algunas de las celdas en varias filas tienen un carácter especial adicional en la séptima posición... sí, un conjunto de datos extraño. Algunos no lo hacen. Hay varias filas y varias columnas, y el recuento de todas ellas puede variar.
Así que estoy usando un bucle FOR para verificar el valor de cada celda para cada fila y columna y luego recorte o elimine el octavo carácter si lo tiene. De hecho, el script puede simplemente hacer un left(dt,7) y estaría contento con eso. Sin embargo, estoy atascado porque cuando uso la función GETVALUES, coloca los valores de celda para esa columna en una matriz y no puedo entender cómo hacer el recorte izquierdo. Si, en cambio, hago un bucle en cada fila individualmente eliminando GETVALUES, entonces puedo recortar el valor correctamente pero no puedo descubrir cómo forzar el nuevo valor en la celda. He incluido ambas formas en el siguiente script.
//Loop to delete the closing crazy characters from each row, it is always the 7th character that needs to be removed.
For(n = 1, n <= ncol(dtWAPFile), n++,
colname = Column(n) << get name;
For( k = 1, k <= N Rows( dtWAPFile ), k++,
RowVal = dtWAPFile:colname << GetValues; //This gets a matrix
NewRowVal = Left(RowVal,6); //This doesn't work with the matrix
dtWAPFile:colname << setvalues(NewRowVal);//This doesn't work...
); For(n = 1, n <= ncol(dtWAPFile), n++,
colname = Column(n) << get name;
For( k = 1, k <= N Rows( dtWAPFile ), k++,
RowVal = dtWAPFile:colname[k]; //This gets the value for a row/column based on the loop
NewRowVal = Left(RowVal,6); //This trims the value
RowVal = setvalues(NewRowVal);//This doesn't work...can't seem to stuff it back in..
);
Re: Bucle JSL FOR para verificar los valores en las celdas y eliminar el séptimo carácter si lo hayTrabajó. ¡Gracias chicos! Por cierto, me encanta este foro, ustedes son brillantes y me hacen quedar bien en el trabajo
Re: Bucle JSL FOR para verificar los valores en las celdas y eliminar el séptimo carácter si lo hayModificando un poco el código de Jim:
NamesDefaultToHere(1);
// Test Table
dt = New Table( "Test",
Add Rows( 4 ),
New Column( "Column 1",
Character,
"Nominal",
Set Values( {"123456", "1234567", "12345678", "1234"} )
),
New Column( "Column 2",
Character,
"Nominal",
Set Values( {"123456789", "123", "123456", "1234567"} )
)
);
// Truncate each cell to the leftmost six characters
Wait(3);
cols = dt << getColumnNames("String");
for(c=1, c<=NItems(cols), c++,
for(r=1, r<=NRow(dt), r++,
Column(dt, cols[c])[r] = Left(Column(dt, cols[c])[r], 6);
);
);Re: Bucle JSL FOR para verificar los valores en las celdas y eliminar el séptimo carácter si lo hayNunca lo resolví, pero encontré una solución. Por alguna razón, pude revisar el código y funcionaría, pero cuando ejecuto el fragmento completo no funcionaría... raro.
Al final tuve que eliminar el primer bucle FOR y no incrustar el segundo bucle FOR dentro del primer bucle FOR.Espero haber cometido un simple error, pero no pude llegar allí y me quedé sin tiempo.
Re: Bucle JSL FOR para verificar los valores en las celdas y eliminar el séptimo carácter si lo hayOK... así que no probé el código muy bien... o en realidad no lo probé.:-(
me alegra que lo hayas resuelto
Re: Bucle JSL FOR para verificar los valores en las celdas y eliminar el séptimo carácter si lo haySi reviso el código y evito el bucle, entonces funciona.
Re: Bucle JSL FOR para verificar los valores en las celdas y eliminar el séptimo carácter si lo hayRecibo un error (abajo) pero me gusta escuchar que lo estoy haciendo demasiado difícil. Ojalá estemos cerca.
In the following script, error marked by /*###*/
For( n = 1, n <= N Col( dtWAPFile ), n++,
colname = Column( n ) << get name;
For( k = 1, k <= N Rows( dtWAPFile ), k++,
Column( dtWAPFile, n )[k] = Left( Column( dtWAPFile, n )[/*###*/k], 6 )
);
)
Re: Bucle JSL FOR para verificar los valores en las celdas y eliminar el séptimo carácter si lo hayCreo que lo estás haciendo demasiado difícil. Esta oda debería funcionar.
For( n = 1, n <= N Col( dtWAPFile ), n++,
colname = Column( n ) << get name;
For( k = 1, k <= N Rows( dtWAPFile ), k++,
Column( dtWAPFile, n )[k] = Left( Column( dtWAPFile, n )[k], 6 )
);
);