Ciao a tutti, sto realizzando un programma in vb6 che scriva da un file ASCII corrispondente al tracciato EDI contenente fatture di vendita e scriva solo alcuni valori in un altro file, ma ho problemi ad impostare i cicli di lettura e scrittura.
Queste le operazioni che eseguo, in pseudocodice:
codice:
Open txtPercorsoFileOrigine.Text For Input As #1 'Apro il file origine
Open "C:\TRAF2000" For Append as #2 'Apro il file destinazione
Do
Line input #1, lineal 'lineal è la mia riga
tiporiga = Mid$(lineal, 1, 3) 'da questo mi capisco che tipo di linea sto leggendo
if tiporiga = "BGM" Then 'Se tiporiga=BGM è l'inizio del pacchetto che devo scrivere nel file
'.... 'Scrivo nel file i campi che mi interessano
tipodoc = Mid$(lineal, 110, 6) 'Leggo i campi di origine
tipodocMulti = tipodoc '...e assegno i valori a variabili che poi userò x scrivere nel file di destinazione
Elseif tiporiga = "NAI" then
'prendo altra roba
'...
End if
'Fatto questo scrivo nel file
print #2, tipodocMulti, datadoc, ecc...
Loop until EOF(1)
Il problema della logica nasce dal fatto che io scrivo all'interno del file già durante il primo ciclo, e ho impostato le condizioni con gli if, quindi nel file finale avrò un rigo con tutti i record BGM, poi tutti i record NAI, e così via, mentre io nel file finale devo avere un solo rigo per ogni fattura, quindi contenente sullo stesso rigo prima BGM, di seguito NAI, ecc... ma se io scrivo contestualmente nel file va a finire che con il primo if io leggo la riga BGM e scrivo nel file, ricomincio il ciclo e leggo la riga NAI e la scrivo A CAPO nel file, in maniera errata.
Per meglio spiegarmi in due parole, il ciclo di lettura del file di origine inizia con il tiporiga = BGM e finisce quando nel file di lettura incontro per la seconda volta tiporiga = BGM, oppure quando tiporiga = TMA, che è l'ultima riga nel tracciato contenente i totali, e che pure mi serve
Mi aiutate a capirci come devo strutturare i cicli di lettura e scrittura?