Ciclo FOR JSL per controllare i valori nelle celle e rimuovere il settimo carattere se ce n'è unoQuesto frammento di seguito è una parte del mio script. A questo punto ho una tabella dati e alcune celle su varie righe hanno un carattere speciale extra nella settima posizione... sì, strano set di dati. Alcuni no. Sono presenti più righe e più colonne, il cui conteggio può variare.
Quindi sto usando un ciclo FOR per controllare il valore di ogni cella per ogni riga e colonna, quindi tagliare o rimuovere l'ottavo carattere se presente. In effetti, lo script può semplicemente fare left(dt,7) e ne sarei felice. Il punto in cui mi trovo però è bloccato perché quando utilizzo la funzione GETVALUES inserisce i valori delle celle per quella colonna in una matrice e non riesco a capire come eseguire il taglio sinistro. Se invece eseguo il ciclo di ciascuna riga individualmente rimuovendo GETVALUES, posso tagliare correttamente il valore ma non riesco a capire come forzare il nuovo valore nella cella. Ho incluso entrambi i modi nello script seguente.
//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..
);
Ri: Ciclo JSL FOR per controllare i valori nelle celle e rimuovere il settimo carattere se ce n'è unoLavorato. Grazie ragazzi! Adoro questo forum, ragazzi, siete fantastici e mi fate fare bella figura al lavoro
Ri: Ciclo JSL FOR per controllare i valori nelle celle e rimuovere il settimo carattere se ce n'è unoModificando leggermente il codice di 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);
);
);Ri: Ciclo JSL FOR per controllare i valori nelle celle e rimuovere il settimo carattere se ce n'è unoNon sono mai riuscito a capirlo, ma ho trovato una soluzione. Per qualche ragione potrei scorrere il codice e funzionerebbe, ma quando eseguo l'intero frammento non sarebbe….strano.
Alla fine ho dovuto rimuovere il primo ciclo FOR e non incorporare il secondo ciclo FOR all'interno del primo ciclo FOR.Spero di aver commesso un semplice errore, ma non sono riuscito ad arrivare e ho avuto poco tempo.
Ri: Ciclo JSL FOR per controllare i valori nelle celle e rimuovere il settimo carattere se ce n'è unoOK.....quindi non ho testato molto bene il codice......o in realtà non l'ho proprio testato. 
Sono contento che tu abbia capito
Ri: Ciclo JSL FOR per controllare i valori nelle celle e rimuovere il settimo carattere se ce n'è unoSe eseguo il codice e ignoro il loop, funziona.
Ri: Ciclo JSL FOR per controllare i valori nelle celle e rimuovere il settimo carattere se ce n'è unoRicevo un errore (sotto) ma mi piace sentire che lo sto rendendo troppo difficile. Speriamo di essere vicini.
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 )
);
)
Ri: Ciclo JSL FOR per controllare i valori nelle celle e rimuovere il settimo carattere se ce n'è unoPenso che tu lo stia rendendo troppo difficile. Quest'ode dovrebbe funzionare
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 )
);
);