Para cada fila con inserción enTengo problemas con una instrucción "insert into" dentro de una iteración "For Each Row". Quiero buscar una categoría en la columna "Tipo" y, con base en eso, seleccionar el valor en la columna "COLUMN_NAME" para crear una lista para cada categoría. Creo que estoy fallando con la instrucción "Insert Into".
// Get the current data table
dt = Current Data Table();
colName = "Type";
// Get the column reference
Types = Column( colName );
// Extract all values from the column
allValues = Types << Get Values;
// Get unique values (removes duplicates)
Cats = Associative Array( allValues ) << Get Keys;
// Sort the unique values (optional)
Cats = Sort List( Cats );
// Display results in the log
Show( Cats );
delCats = {"", "-"};
For( i = 1, i <= N Items( delCats ), i++,
Remove From( Cats, As List( Loc( Cats, delCats[i] ) ) )
);
show(Cats);
For For( i = 1, i <= N Items( Cats ), i++,
Spud = Char(Cats(i));
Spud = {};
For Each Row(
// Access column values directly by name
If(:Type = Char(Cats[i]), Insert Into(Spud, :COLUMN_NAME) ;
);
));
declaración.
Automatización y scriptingRe: Para cada fila con inserción enNo es necesario usar "For Each Row" para esto (si entiendo bien lo que buscas). Simplemente usa "For Each" con << Obtener filas donde y subíndices de tabla de datos para obtener los valores en tu lista.
Re: Para cada fila con inserción enEl código proporcionado no se puede ejecutar y es difícil de leer debido a la falta de espaciado. Supongo que se trata de una IA creada por ella, ya que utiliza técnicas extrañas para JSL (ordenar las claves de un array asociativo aunque ya estén ordenadas, etc.).
Basándome solo en el código proporcionado (y la pregunta), no estoy seguro de qué buscas. Pero es posible que estés reemplazando tu lista de Spud en cada bucle, lo cual te está causando problemas.
Re: Para cada fila con inserción enLas asignaciones consecutivas
Spud = Char(Cats(i));
Spud = {};
Están sobrescribiendo el primero con el segundo. También están dentro del bucle externo, por lo que @jthi sugiere que la lista se está recreando en lugar de extenderse.
Añadiendo un
show( row(), spud, ...etc... );
También puede ser útil indicar varios lugares para obtener resultados intermedios en el registro. O
write( "\!n x=" || char(x) || " y=" || char(y) );
si quieres formatearlo. O
write( Eval Insert("\!n x=^x^ y=^y^) );
que podría ser más fácil de leer.
El editor JSL tiene un comando de reformateo que puede ayudar cuando la sangría del bucle queda desalineada visualmente.