Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di koolk
    Registrato dal
    Sep 2007
    Messaggi
    89

    [VB6] Andare a capo "manualmente" in lettura da file

    Buonasera a tutti, sto realizzando un programmino che legge un file ascii con i campi che seguono un tracciato ben preciso, scomposto su più righe: sostanzialmente il file è composto così
    1° riga: data registrazione
    2° riga: dati di fattura (n°doc, data fatt, cod.cliente, ecc)
    ...
    ...
    5° riga: vuota. Segna la fine del record, dalla 6° riga si ricomincia daccapo.
    Ora, le mie domande sono due: supponiamo che sulla 2° riga, composta da 10 campi, a me interessino i primi 8, letti i quali posso già andare a capo, come faccio?
    Domanda 2: arrivato alla 5° riga, come reimposto il ciclo per ricominciare a leggere?

    Posto il codice scritto finora:
    codice:
    Open "c:\ft_fm4.dat" For Input As #1
    Dim riga As String
    
    Do
        Line Input #1, linea
        'Estraggo la data registrazione dalla prima linea
        'Inizio Campi Testata
        asteriscotestata = Mid(linea, 1, 6)         'Scartare
        datareg = Mid(linea, 7, 10)                 'Data Registrazione
        contospeseinc = Mid(linea, 17, 9)           'Conto Spese Incasso
        contospesebol = Mid(linea, 26, 9)           'Conto Spese Bolli
        contospesetra = Mid(linea, 35, 9)           'Conto Spese Trasporto
        contospeseimb = Mid(linea, 44, 9)           'Conto Spese Imballo
        contospesevar = Mid(linea, 53, 9)           'Conto Spese Varie
        blanktestata1 = Mid(linea, 62, 45)          'BLANK
        ivaspeseinc = Mid(linea, 107, 2)            'Codice Iva Spese Incasso
        ivaspesebol = Mid(linea, 109, 2)            'Codice Iva Spese Bolli
        ivaspesetra = Mid(linea, 111, 2)            'Codice Iva Spese Trasporto
        ivaspeseimb = Mid(linea, 113, 2)            'Codice Iva Spese Imballo
        ivaspesevar = Mid(linea, 115, 2)            'Codice Iva Spese Varie
        numftiniziale = Mid(linea, 117, 6)          'Da numero fattura
        numftfinale = Mid(linea, 123, 6)            'A numero fattura
        numpartita = Mid(linea, 129, 1)             '"S"=Partita con anno
        blanktestata2 = Mid(linea, 130, 1)          'BLANK
        'Fine Campi Testata
        
        'Inizio Campi Record Fatture
        numfattura = Mid
    Loop Until EOF(1)
    Grazie a tutti in anticipo per l'aiuto
    Kool K

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    La Line Input legge l'intera linea, quindi la prima domanda non ha senso ...

    Per rispondere alla seconda dovresti spiegare cosa fai con il codice che hai mostrato, dopo che hai letto la prima riga con la Line Input ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it L'avatar di koolk
    Registrato dal
    Sep 2007
    Messaggi
    89
    Quote Originariamente inviata da oregon Visualizza il messaggio
    La Line Input legge l'intera linea, quindi la prima domanda non ha senso ...
    Ok, può anche andare bene così perchè tanto memorizzo comunque tutti i campi in variabili, anche quelli che non servono

    Per rispondere alla seconda dovresti spiegare cosa fai con il codice che hai mostrato, dopo che hai letto la prima riga con la Line Input ...
    Come vedi dal codice memorizzo tutto in variabili e apro un altro file in scrittura per scrivere quelle variabili. Al termine del giro, cioè arrivati al 5° rigo (che sarà sempre vuoto) devo ricominciare il giro di lettura e scrittura
    Kool K

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    O non parliamo dello stesso codice o non hai postato quello corretto ...

    In quello che hai mostrato non c'è nessuna parte che scrive ... anzi, sembra incompleto perché c'è una linea che termina con

    Mid

    in maniera strana...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it L'avatar di koolk
    Registrato dal
    Sep 2007
    Messaggi
    89
    Quote Originariamente inviata da oregon Visualizza il messaggio
    O non parliamo dello stesso codice o non hai postato quello corretto ...

    In quello che hai mostrato non c'è nessuna parte che scrive ... anzi, sembra incompleto perché c'è una linea che termina con

    Mid

    in maniera strana...
    Hai ragione, misteriosamente nel quotare il codice non è venuto il tutto completo. Riprovo
    codice:
    Do
        Line Input #1, linea
        'Estraggo la data registrazione dalla prima linea
        'Inizio Campi Testata
        asteriscotestata = Mid(linea, 1, 6)         'Scartare
        datareg = Mid(linea, 7, 10)                 'Data Registrazione
        contospeseinc = Mid(linea, 17, 9)           'Conto Spese Incasso
        contospesebol = Mid(linea, 26, 9)           'Conto Spese Bolli
        contospesetra = Mid(linea, 35, 9)           'Conto Spese Trasporto
        contospeseimb = Mid(linea, 44, 9)           'Conto Spese Imballo
        contospesevar = Mid(linea, 53, 9)           'Conto Spese Varie
        blanktestata1 = Mid(linea, 62, 45)          'BLANK
        ivaspeseinc = Mid(linea, 107, 2)            'Codice Iva Spese Incasso
        ivaspesebol = Mid(linea, 109, 2)            'Codice Iva Spese Bolli
        ivaspesetra = Mid(linea, 111, 2)            'Codice Iva Spese Trasporto
        ivaspeseimb = Mid(linea, 113, 2)            'Codice Iva Spese Imballo
        ivaspesevar = Mid(linea, 115, 2)            'Codice Iva Spese Varie
        numftiniziale = Mid(linea, 117, 6)          'Da numero fattura
        numftfinale = Mid(linea, 123, 6)            'A numero fattura
        numpartita = Mid(linea, 129, 1)             '"S"=Partita con anno
        blanktestata2 = Mid(linea, 130, 1)          'BLANK
        'Fine Campi Testata
        
        'Inizio Campi Record Fatture
        numfattura = Mid(linea, 1, 6)               'Numero Fattura
        datafattura = Mid(linea, 7, 10)             'Data Fattura (GG/MM/AAAA)
        codcliente = Mid(linea, 17, 4)              'Codice Cliente
        blankfatt1 = Mid(linea, 21, 3)              'BLANK
        notacred = Mid(linea, 24, 1)                ''C' = Nota Credito
        blankfatt2 = Mid(linea, 25, 2)              'BLANK
        codiceivafatt1 = Mid(linea, 27, 2)          '1 Codice Iva Fattura
        codiceivafatt2 = Mid(linea, 29, 2)          '2 Codice Iva Fattura
        codiceivafatt3 = Mid(linea, 31, 2)          '3 Codice Iva Fattura
        codiceivafatt4 = Mid(linea, 33, 2)          '4 Codice Iva Fattura
        codiceivafatt5 = Mid(linea, 35, 2)          '5 Codice Iva Fattura
        importoivafatt1 = Mid(linea, 37, 13)        '1 Importo Iva Fattura
        importoivafatt2 = Mid(linea, 50, 13)        '2 Importo Iva Fattura
        importoivafatt3 = Mid(linea, 63, 13)        '3 Importo Iva Fattura
        importoivafatt4 = Mid(linea, 76, 13)        '4 Importo Iva Fattura
        importoivafatt5 = Mid(linea, 89, 13)        '5 Importo Iva Fattura
        imponibilefatt1 = Mid(linea, 102, 13)       '1 Imponibile Fattura
        imponibilefatt2 = Mid(linea, 115, 13)       '2 Imponibile Fattura
        imponibilefatt3 = Mid(linea, 128, 13)       '3 Imponibile Fattura
        imponibilefatt4 = Mid(linea, 141, 13)       '4 Imponibile Fattura
        imponibilefatt5 = Mid(linea, 154, 13)       '5 Imponibile Fattura
        totimponibfatt = Mid(linea, 167, 13)        'Totale Imponibile Fattura
        totivafatt = Mid(linea, 180, 13)            'Totale Iva Fattura
        blankfatt3 = Mid(linea, 193, 26)            'BLANK
        spesetrasp = Mid(linea, 219, 13)            'Spese Trasporto
        speseinc = Mid(linea, 232, 13)              'Spese Incasso
        speseboll = Mid(linea, 245, 13)             'Spese Bolli
        speseimb = Mid(linea, 258, 13)              'Spese Imballo
        acconto = Mid(linea, 271, 13)               'Acconto
        totalefatt = Mid(linea, 284, 13)            'Totale Fattura
        altrespese = Mid(linea, 297, 13)            'Altre Spese
        blankfatt4 = Mid(linea, 310, 7)             'BLANK
        attivita = Mid(linea, 317, 1)               'Attività
        blankfatt5 = Mid(linea, 318, 58)            'BLANK
        blankfatt6 = Mid(linea, 376, 1)             '* x registrare solo l'incasso/BLANK
        blankfatt7 = Mid(linea, 377, 150)           'BLANK
        'Fine Campi Record Fatture
        
        'Inizio Campi Cliente
        blankcli1 = Mid(linea, 1, 6)                'AAAAAA
        ragsoccli = Mid(linea, 7, 30)               'Ragione sociale del cliente
        partivacli = Mid(linea, 37, 11)             'Partita Iva
        codfisccli = Mid(linea, 48, 16)             'Codice Fiscale
        indircli = Mid(linea, 64, 30)               'Indirizzo
        localcli = Mid(linea, 94, 25)               'Località
        capcli = Mid(linea, 119, 5)                 'Cap
        provcli = Mid(linea, 124, 2)                'Provincia
        tipocontab = Mid(linea, 126, 1)             'Tipo Contabile/Anagr.
        codisocli = Mid(linea, 127, 2)              'Codice ISO
        codivacee = Mid(linea, 129, 12)             'Codice Iva CEE
        contropart = Mid(linea, 141, 9)             'Conto Contropartita
        'Fine Campi Cliente
        
        'Inizio Campi Importi (Facoltativo. Obbligatorio per TS)
        blankimp1 = Mid(linea, 1, 6)                'BBBBBB
        contoricavomerce1 = Mid(linea, 7, 9)        '1 Conto di ricavo merce
        contoricavomerce2 = Mid(linea, 16, 9)       '2 Conto di ricavo merce
        contoricavomerce3 = Mid(linea, 25, 9)       '3 Conto di ricavo merce
        contoricavomerce4 = Mid(linea, 34, 9)       '4 Conto di ricavo merce
        contoricavomerce5 = Mid(linea, 43, 9)       '5 Conto di ricavo merce
        contoricavomerce6 = Mid(linea, 52, 9)       '6 Conto di ricavo merce
        contoricavomerce7 = Mid(linea, 61, 9)       '7 Conto di ricavo merce
        contoricavomerce8 = Mid(linea, 70, 9)       '8 Conto di ricavo merce
        contoricavomerce9 = Mid(linea, 79, 9)       '9 Conto di ricavo merce
        contoricavomerce10 = Mid(linea, 88, 9)      '10 Conto di ricavo merce
        aliquotaiva1 = Mid(linea, 97, 2)            '1 Aliquota Iva
        aliquotaiva2 = Mid(linea, 99, 2)            '2 Aliquota Iva
        aliquotaiva3 = Mid(linea, 101, 2)           '3 Aliquota Iva
        aliquotaiva4 = Mid(linea, 103, 2)           '4 Aliquota Iva
        aliquotaiva5 = Mid(linea, 105, 2)           '5 Aliquota Iva
        aliquotaiva6 = Mid(linea, 107, 2)           '6 Aliquota Iva
        aliquotaiva7 = Mid(linea, 109, 2)           '7 Aliquota Iva
        aliquotaiva8 = Mid(linea, 111, 2)           '8 Aliquota Iva
        aliquotaiva9 = Mid(linea, 113, 2)           '9 Aliquota Iva
        aliquotaiva10 = Mid(linea, 115, 2)          '10 Aliquota Iva
        imponibile1 = Mid(linea, 117, 13)           '1 Imponibile
        imponibile2 = Mid(linea, 130, 13)           '2 Imponibile
        imponibile3 = Mid(linea, 143, 13)           '3 Imponibile
        imponibile4 = Mid(linea, 156, 13)           '4 Imponibile
        imponibile5 = Mid(linea, 169, 13)           '5 Imponibile
        imponibile6 = Mid(linea, 182, 13)           '6 Imponibile
        imponibile7 = Mid(linea, 195, 13)           '7 Imponibile
        imponibile8 = Mid(linea, 208, 13)           '8 Imponibile
        imponibile9 = Mid(linea, 221, 13)           '9 Imponibile
        imponibile10 = Mid(linea, 234, 13)          '10 Imponibile
        causaleinc = Mid(linea, 247, 3)             'Causale x Incasso
        datainc = Mid(linea, 250, 10)               'Data x Incasso (GG/MM/AAAA)
        causaleacc = Mid(linea, 260, 3)             'Causale x Acconto
        'Fine Campi Importi
        
    Loop Until EOF(1)
    In questa parte di codice non c'è quella relativa alla scrittura nel file di destinazione, ma non credo importi al momento, visto che i miei dubbi riguardano il file in lettura, non quello in scrittura, che più o meno dovrei saper gestire. Il codice completo, in realtà dovrebbe avere la possibilità di "saltare" alla riga successiva del file di input alla riga 'Fine campi testata: da quel punto in poi la lettura del file deve continuare alla riga successiva (domanda n.1). Lo stesso poi per la parte di codice che riguarda record fatture, campi cliente e campi importi, che è l'ultima parte di un blocco. Dopo c'è la riga 5, che è una riga vuota, e poi il ciclo deve ricominciare (domanda n.2)

    Allego anche il file da cui leggo per capirci meglio
    File allegati File allegati
    Kool K

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    La

    Line Input #1, linea

    deve essere ripetuta prima di gestire i relativi dati per ogni linea, altrimenti lavori sempre sulla stessa linea.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it L'avatar di koolk
    Registrato dal
    Sep 2007
    Messaggi
    89
    Grazie mille, provo e faccio sapere.
    Kool K

  8. #8
    Utente di HTML.it L'avatar di koolk
    Registrato dal
    Sep 2007
    Messaggi
    89
    Perfetto, ha funzionato alla perfezione!!
    Kool K

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.