Suggerimento per Conversione dati da file txt

di il
16 risposte

Suggerimento per Conversione dati da file txt

Ultimamente, con qualche difficoltà (per fortuna superata) sto procedendo alla creazione di una maschera per importare un file TXT in alcune tabelle provvisorie per poi rimaneggiarle e inserirle nelle tabelle operative.

Mi trovo però in un dubbio.
In primis: parliamo di righe di testo, con dei ";" a separare i campi; i campi li ho già definiti e il file (adesso) viene tranquillamente scompattato e poi io provvedo, sulla base del tipo di record (1° carattere del record) a smistare i record su altre tabelle temporanee per gestire tutto in maniera più comoda.

Il dubbio sorge in un tipo di record: stiamo parlando di un contratto tra una persona fisica (con Cod. Fiscale), una ditta e un'organizzazione intermediaria. Voglio far presente che la persona fisica può contrattare direttamente con l'organizzazione intermediaria, oppure con un'altra organizzazione intermediaria (tipo una Cooperativa), che a sua volta si associa all'intermediaria principale per contrattare con la ditta.

Il solo modo in cui posso sapere se la persona fisica contratta direttamente con l'intermediario principale o con la Cooperativa è visionando solo l'ultimo campo del record, dove trovo una partita IVA; questa può essere O la stessa dell'intermediario principale (e quindi la trovo sia nell'ultimo che nel 3° campo del record) oppure quella della cooperativa, (che la troverò solamente all'ultimo campo), ed io mi trovo nella necessità che, se vi è partita IVA di una Coop., questa dovrà andare a valorizzare un campo completamente distinto all'interno della tabella operativa.
Chiaramente, se non vi è una Coop, quel campo della tabella operativa dovrà restare vuoto.

Adesso non so che inventarmi.

Avevo pensato di aprire un Recordset dove scandagliare record per record e controllare se il campo finale è uguale o diverso dal campo3; perché se è diverso, vuol dire che ci troviamo davanti una Coop.; in questo caso dovrei dapprima gestire le informazioni (integrando l'occorrente) e quindi fare una query di aggiornamento sullo stesso campo.
Però non so se è una caxxta o meno.

Qualche suggerimento utile?
@Alex: tu sai a cosa mi riferisco; se hai ancora quel file, parlo del Record di tipo 2: le partite IVA che trovi al 3 e al 13° campo

16 Risposte

  • Re: Suggerimento per Conversione dati da file txt

    Sperando che @Alex comprenda meglio di me, credo tuttavia che devi operare per molti piccoli passi.
    1. Mi pare che si possa tradurre un file TXT in tabella Access, con una importazione, sfruttando proprio i ; di cui parli
    2. Ottenuti questi dati che si spera siano giusti/completi/coerenti, provvedi alla normalizzazione ecc...
  • Re: Suggerimento per Conversione dati da file txt

    Sgombriamo il campo da ogni possibile fraintendimento: tutti i soggetti hanno un codice fiscale, persone fisiche e non. Solo alcuni hanno anche la partita IVA. Per le persone non fisiche la partita IVA spesso è uguale al codice fiscale.
    Per le persone fisiche il codice fiscale è una stringa composta da 16 caratteri, alfanumerici. Per le persone non fisiche (le chiamerei persone giuridiche, intendendo per tali quelle non fisiche, indipendemente che siano riconosciute o meno) il codice fiscale è una stringa composta da 11 caratteri, solo numerici. (Mi limito a trattare quelle italiane, quindi non mi curo del fatto che a volte si anteponga IT agli 11 caratteri).

    carlo pots ha scritto:


    ...
    Il solo modo in cui posso sapere se la persona fisica contratta direttamente con l'intermediario principale o con la Cooperativa è visionando solo l'ultimo campo del record, dove trovo una partita IVA; questa può essere O la stessa dell'intermediario principale (e quindi la trovo sia nell'ultimo che nel 3° campo del record) oppure quella della cooperativa, (che la troverò solamente all'ultimo campo), ed io mi trovo nella necessità che, se vi è partita IVA di una Coop., questa dovrà andare a valorizzare un campo completamente distinto all'interno della tabella operativa.
    Chiaramente, se non vi è una Coop, quel campo della tabella operativa dovrà restare vuoto.
    ...
    Quindi? Facci un esempio concreto e prendendo in prestito le parole di Osvaldo, usa "nomi propri" dei campi e delle tabelle.
    Di importazione di file di testo ho un po' di esperienza (per un non programmatore - informatico professionista) e quando capisco di solito trovo una soluzione (a volte sono serviti anni ma il limite era la mia conoscenza insufficiente)
  • Re: Suggerimento per Conversione dati da file txt

    Voglio specificare una cosa: l'importazione del file in una tabella master provvisoria già è fatta e funziona.

    Veniamo al problema:
    Io ho questi due record all'interno dello stesso file:

    2;2020;
  • Re: Suggerimento per Conversione dati da file txt

    carlo pots ha scritto:


    Voglio specificare una cosa: l'importazione del file in una tabella master provvisoria già è fatta e funziona....
    Sono dati di tua invenzione, vero carlo pots? non hai pubblicato codici fiscali e denominazioni reali, ne sono certo. Se così non è cambia subito, subito subito.
  • Re: Suggerimento per Conversione dati da file txt

    Philcattivocarattere ha scritto:


    carlo pots ha scritto:


    Voglio specificare una cosa: l'importazione del file in una tabella master provvisoria già è fatta e funziona....
    [...] Se così non è cambia subito, subito subito.
    Fatto fatto fatto
  • Re: Suggerimento per Conversione dati da file txt

    carlo pots ha scritto:


    Fatto fatto fatto
    Sicuro sicuro sicuro? credo di vedere ancora qualche codice fiscale o partita iva che dir si voglia di persone non fisiche reale. Se non riesci più a modificare il post chiedi a Toki.

    carlo pots ha scritto:


    ...
    Come si può vedere, nel 3° campo troviamo una Partita IVA, che è quella dell'organizzazione intermediaria, ed è uguale per entrambi
    ...
    Alla luce delle modifiche probabilmente qualcosa è andato storto comunque il concetto è abbastanza chiaro

    carlo pots ha scritto:


    ...
    In pratica dovrei specificare che:
    Se Campo13=Campo3 allora
    PIVA_Contraente=Campo13
    Altrimenti
    Se Campo 13<>Campo3 allora
    PIVA_Contraente=Campo3
    PIVA_Coop=Campo14
    Endif
    Questo sarebbe l'ideale, però l'applicazione in fare di query mi riesce difficile.
    Si può fare, con un uso attento della IIf direttamente in una query. Come è fatta quella che usi adesso? Quando la vedo faccio un esempio concreto di correzione. Qui la abbozzo:
    ... 
    IIf(Campo13=Campo3, Campo13, Campo3) As PIVA_Contraente, 
    IIf(Campo13=Campo3, '', Campo14) As PIVA_Coop,
    ...
    vedi tu se nella seconda IIf bisogna usare Null al posto dei due apici singoli consecutivi.
  • Re: Suggerimento per Conversione dati da file txt

    vedi tu se nella seconda IIf bisogna usare Null al posto dei due apici singoli consecutivi.
    Bisogna inserire Null

    P.s.: grazie Toki, però ero al lavoro (ho fatto la notte e sono tornato adesso) e non potevo correggere la cosa
  • Re: Suggerimento per Conversione dati da file txt

    carlo pots ha scritto:


    Bisogna inserire Null
    Quando hai provato, se ci sono problemi siamo qua.
  • Re: Suggerimento per Conversione dati da file txt

    Domanda: è possibile inserirla direttamente nella query di accodamento o dovrò fare un'ulteriori query di aggiornamento?
  • Re: Suggerimento per Conversione dati da file txt

    carlo pots ha scritto:


    Domanda: è possibile inserirla direttamente nella query di accodamento o dovrò fare un'ulteriori query di aggiornamento?
    L'ho già scritto prima:

    Philcattivocarattere ha scritto:


    Si può fare, con un uso attento della IIf direttamente in una query. Come è fatta quella che usi adesso? Quando la vedo faccio un esempio concreto di correzione.
  • Re: Suggerimento per Conversione dati da file txt

    Alla fine ho risolto così:
    ...
    
    	IIf([tblinput].Campo3=[tblInput].Campo13, [TblInput].Campo3, [tblInput].Campo3) as PIVA_Contraente,"
        	IIf([tblinput].Campo3<>[tblinput].Campo13, [tblinput].Campo13, null) as PIVA_Cooperativa"
        	
    
    Perché quando la Partita IVA è identica, il sistema mi deve inserire la P.IVA del Contraente nel suo campo, mentre se la Partita IVA è diversa, il sistema mi deve inserire COMUNQUE la P.IVA del Campo3 in PIVA_Contraente, ma deve anche inserire la P.IVA diversa in PIVA_Cooperativa.
    In pratica, in caso di dati diversi, i campi da valorizzare sono 2 anziché 1 solo
  • Re: Suggerimento per Conversione dati da file txt

    carlo pots ha scritto:


    Alla fine ho risolto così:
    Sulla falsariga di quello che avevo abbozzato. Quindi ci siamo e ci siamo capiti.
  • Re: Suggerimento per Conversione dati da file txt

    Philcattivocarattere ha scritto:


    carlo pots ha scritto:


    Alla fine ho risolto così:
    Sulla falsariga di quello che avevo abbozzato. Quindi ci siamo e ci siamo capiti.
  • Re: Suggerimento per Conversione dati da file txt

    Rimanendo sempre in tema di conversione del file, mi trovo in un'altra incognita.
    Dovendo elaborare la query di accodamento, mi trovo a dover creare una chiave in questo modo:
    AAAA = Anno di esercizio (4 chr$)
    NNN = Matricola contraente (3 chr$)
    xxxxxxxxxxxxxxxx = Codice fiscale (16 chr$)
    G = Gruppo prodotti (1 chr$)
    COD = (3 chr$)
    PROV = (3 chr$)
    COM = (3 chr$)
    PROG = (4 chr$) dove bisogna inserire un progressivo da 1 a N per quanti record sono associati ad un determinato Codice Fiscale presente nella chiave, per distinguere le chiavi l'una dall'altra.

    Praticamente se Ciccio ha 4 record a suo nome, il progressivo dovrà essere calcolato dal primo record a suo nome e inserito nella chiave
    Una cosa del genere:
    2020nnn0vvvpppccc0001
    2020nnn0vvvpppccc0002
    2020nnn0vvvpppccc0003
    2020nnn0vvvpppccc0004

    Poi, quando si passa ai prodotti di Caio il progressivo finale della chiave dovrà ripartire nuovamente da 0001

    Suggerimenti operativi?
Devi accedere o registrarti per scrivere nel forum
16 risposte