Per ogni riga con Inserisci inHo difficoltà con un'istruzione "insert into" all'interno di un'iterazione "For Each Row". Voglio cercare una categoria dalla colonna "Type" e, in base a questa, selezionare il valore nella colonna "COLUMN_NAME" per formare un elenco per ciascuna categoria. Credo di non riuscire con l'istruzione "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) ;
);
));
dichiarazione.
Automazione e scriptingRe: Per ogni riga con Inserisci inPer questo non è necessario usare For Each Row (se ho capito bene cosa vuoi ottenere). Basta usare For Each con << Get Rows Where e l'indicizzazione della tabella dati per ottenere i valori nell'elenco.
Re: Per ogni riga con Inserisci inIl codice fornito non può essere eseguito ed è difficile da leggere perché non ha la spaziatura corretta. Immagino che sia stato creato dall'intelligenza artificiale, dato che utilizza strane tecniche per JSL (ordinare le chiavi di un array associativo anche se sono già ordinate e così via).
Basandomi solo sul codice fornito (e sulla domanda), non capisco cosa tu voglia ottenere. Ma potresti semplicemente sostituire la lista Spud a ogni ciclo, il che ti sta creando problemi.
Re: Per ogni riga con Inserisci inGli incarichi consecutivi
Spud = Char(Cats(i));
Spud = {};
stanno sovrascrivendo il primo con il secondo. Sono anche all'interno del ciclo esterno, motivo per cui @jthi suggerisce che la lista venga ricreata anziché estesa.
Aggiungere un
show( row(), spud, ...etc... );
dichiarazione in diversi punti per ottenere risultati intermedi nel registro può essere utile. Oppure
write( "\!n x=" || char(x) || " y=" || char(y) );
se vuoi formattarlo. Oppure
write( Eval Insert("\!n x=^x^ y=^y^) );
che potrebbe essere più facile da leggere.
L'editor JSL dispone di un comando di riformattazione che può essere utile quando l'indentazione del loop risulta visivamente disallineata.