Write in file txt

di il
4 risposte

Write in file txt

Buonasera a tutti, non capisco come mai quando faccio una write in append su un file txt, passando al record successivo di scrittura mi ripete sempre il record precedente. inserisco esempio di codice.

Open "c:\fatture.txt" For Append As #18

Write #18, tipo, codart, quanetesp, Codvar, Coddem, Codtipart, Coddem2, Codart2, Codvar2, Codtipart2, Descri, Codlav, FatMolcal, FatDivcal, Quacal; "" _
& Qm2net, Prezzo, Scont1, Scont2, Scont3, Codiva, Codcon, Datcon, Tippro, Peimpr, Libstr1, Libstr2, Libstr3, Libdbl1, Libdbl2, Libdbl3, Libing1; "" _
& Libing2, Libing3, Libdat1, Libdat2, Libdat3, annoordine, numeroordine, nmrigoordine, tipoevasione, dtcomprigo, posizione, rivoor

Close #18
Se è stato lanciato la close #18 ed eseguo la successiva write #19 se non c'è dato non dovrebbe non scrivere nulla?
Grazie in anticipo.
ciao

Giuseppe

4 Risposte

  • Re: Write in file txt

    Scusa, ma non si capisce che problema hai.
    passando al record successivo di scrittura mi ripete sempre il record precedente
    Nel codice che hai postato c'è solo la scrittura di una riga.
    Se è stato lanciato la close #18 ed eseguo la successiva write #19 se non c'è dato non dovrebbe non scrivere nulla?
    Perchè apri e chiudi continuamente il file? Non ce ne dovrebbe essere bisogno.
    Se fai una write scriverai una riga; la logica della presenza del dato ce la devi inserire tu.
  • Re: Write in file txt

    La write #19 scrive un altro record di tipo normale con valori diversi. Tu mi dicevi che se non c'è dato non scrive nulla in realtà nell'esempio che ti ho inserito il dato non c'è ma scrive il record vuoto. il programma legge una tabella di access che contiene un record e crea un file di testo con la specifica formattazione.Ogni write si riferisce a un singolo controllo di campo del record della tabella di access. Grazie ciao
  • Re: Write in file txt

    Tu mi dicevi che se non c'è dato non scrive nulla
    Non ho detto questo! Io ho detto che se fai una write allora scrivi su file.
    Cosa intendi per "non c'è dato"? Ad ogni modo se vuoi che non scriva nulla allora NON devi richiamare la write, per questo ci devi mettere un controllo tu.

    Nell'esempio che hai postato c'è solo la scrittura di una riga; se fai un'esportazione da una tabella access mi aspetto che ci sia un CICLO che scorre i record; inoltre mi aspetto che il file testo venga aperto e chiuso una SOLA volta, all'esterno di questo ciclo.
  • Re: Write in file txt

    giuseppe21965 ha scritto:


    La write #19 scrive un altro record di tipo normale con valori diversi. Tu mi dicevi che se non c'è dato non scrive nulla in realtà nell'esempio che ti ho inserito il dato non c'è ma scrive il record vuoto.
    Senza vedere il codice completo si può solo supporre...
    Sembrerebbe che tu chiami la Write senza prima fare alcun controllo sulla validità dei dati.

    giuseppe21965 ha scritto:


    il programma legge una tabella di access che contiene un record e crea un file di testo con la specifica formattazione.Ogni write si riferisce a un singolo controllo di campo del record della tabella di access.
    Quindi non ha senso avere <n> istruzioni Write, ma è necessario creare un ciclo che esegue UNA sola Write, passandogli i valori del record corrente, più o meno così (in pseudo codice):
     - apro il recordset (RS)
     - apro il file FATTURE.TXT
    Do While Not RS.Eof (INIZIO CICLO)
     --- leggo i valori del record
     --- li formatto e li assegno alle variabili di comodo
     --- scrivo i valori delle variabili nel file di testo
     --- passo al record successivo
    Loop
    - chiudo il file FATTURE.TXT
    - chiudo il recordset
    Con un ciclo sei certo al 100% che non avri mai righe vuote nel file di testo.

    Suggerimento: dai un'occhiata anche sulla guida al metodo GetString() dell'oggetto Recordset. Magari può esserti utile, oppure no.

Devi accedere o registrarti per scrivere nel forum
4 risposte