Ciao,
Sto cercando di eseguire una serie di loop nidificati uno alla volta in modo che i loop interni si verifichino una volta ogni volta che viene eseguito il loop esterno.
Per dare un po 'più di contesto ho un file PDF lungo 58 pagine. Ogni due pagine è un documento individuale che desidero separare e aprire una nuova tabella per l'utilizzo della procedura guidata per l'importazione di testo (quindi 29 documenti raggruppati insieme in un unico PDF). Voglio anche che i nomi delle colonne inizino sulla 32a riga e che i dati inizino sulla 33esima riga di ogni documento di due pagine.
Per fare questo ho nidificato per cicli a Start di nomi di colonne e Inizio dati nello script di testo guidato. Vi sono 134 linee tra i nomi delle colonne su ciascuno dei 29 documenti, e successivamente 134 linee tra i quali i dati iniziano su ciascuno dei 29 documenti di 2 pagine.
C'è anche un ciclo for attorno all'intero script per aprire il file principale 29 volte, con i cicli successivi che scelgono la riga da avviare e creare una tabella per ogni documento inserito nel file.
Come dovrei usare il comando Break o Continua per fare in modo che lo script esegua il primo ciclo for una volta, passa al ciclo for successivo e lo esegue una volta, quindi continua lo script eseguendo ogni ciclo for solo una volta prima di ricominciare da capo il file e passando attraverso la successiva iterazione del ciclo for? Anche se si dispone di ogni ciclo for, ricorda l'iterazione passata per mantenere il conteggio delle righe dove dovrebbe essere.
Grazie,
opaco
//opens text file using text wizard
for(i=1, i<=29, i++,
Open(
"C:\Users\file.txt",
columns(
New Column( "Parameters", Character, "Nominal" ),
New Column( "Results", Character, "Nominal" ),
New Column( "Units", Character, "Nominal" ),
New Column( "Uncertainty", Character, "Nominal" ),
New Column( "Spec", Character, "Nominal" ),
New Column( "Methods", Character, "Nominal" ),
New Column( "c000007", Character, "Nominal" ),
New Column( "c000008", Character, "Nominal" ),
New Column( "c000009", Character, "Nominal" ),
New Column( "c0000010", Character, "Nominal" ),
New Column( "c0000011", Character, "Nominal" ),
New Column( "c0000012", Character, "Nominal" ),
New Column( "c0000013", Character, "Nominal" ),
New Column( "c0000014", Character, "Nominal" ),
New Column( "c0000015", Character, "Nominal" ),
New Column( "c0000016", Character, "Nominal" ),
New Column( "c0000017", Character, "Nominal" ),
New Column( "c0000018", Numeric, "Continuous", Format( "Best", 10 ) )
),
Import Settings(
End Of Line( CRLF, CR, LF ),
End Of Field( Space, CSV( 0 ) ),
Strip Quotes( 1 ),
Use Apostrophe as Quotation Mark( 0 ),
Use Regional Settings( 0 ),
Scan Whole File( 1 ),
Treat empty columns as numeric( 0 ),
CompressNumericColumns( 0 ),
CompressCharacterColumns( 0 ),
CompressAllowListCheck( 0 ),
Labels( 1 ),
Column Names Start(
for(q=1, q<=29, q++,
(32*q)+for(p=135, p<29, p++,
(show(p));
);
);
),
Data Starts(
for(t=1, t<=29, t++,
(33*t)+for(s=135, s<29, s++,
(show(s));
);
);
),
Lines To Read( "135" ),
Year Rule( "20xx" )
)
));Prova qualcosa di simile
filename = Save Text File( "$temp\x.csv", "a,b,c
1,2,3
a,b,c
2,3,4
a,b,c
3,4,5
" );
dtlist = {};
For( i = 1, i <= 3, i += 1,
names = (i - 1) * 2 + 1;
data = names + 1;
dtlist[i] = Open(
filename,
columnNamesStart( names ),
DataStarts( data ),
Lines To Read( 1 )
);
dtlist[i] << setname( "segment" || Char( i ) );
);
Tre tabelle con nomi impostati da JSL
@MattP ,
Ho provato a guardare attraverso il tuo codice e qui ci sono un paio di cose che ho notato:

Le sezioni evidenziate non hanno molto senso per me. Consiglierei un approccio diverso se sei disposto a provarlo. Esegui il tuo ciclo for e lascia che legga tutti i dati nella tabella dati. Anche se può essere controintuitivo leggere più dati del necessario, penso sia dall'efficienza che dalla chiarezza del codice, sarebbe molto più facile post-elaborare i dati letti piuttosto che cercare di limitare ciò che sta arrivando . Quindi, mantieni il ciclo esterno e rimuovi i loop interni nelle sezioni "Colonna" e "Dati". Una volta ottenuti i dati, prendiamo una tabella di dati di esempio e vediamo come filtrare ciò che desideri. Dare un colpo e carillon in qualsiasi aiuto.