Come intercettare il valore #NUM!

di il
6 risposte

Come intercettare il valore #NUM!

Buongiorno a tutti,

non sono un professionista di access ma lo uso per tool in ufficio.

Mi trovo in una situazione particolare: il mio DB si alimenta con un foglio excel che viene fornito dall'esterno e che contiene il valore Partita IVA.

Tale foglio è linkato nel DB che, tramite una query, Normalizza a 12 cifre il contenuto del campo Partita IVA importando il tutto in una tabella. (Essendo il campo numerico può capitare che ci siano degli zeri iniziali che sarebbero persi nell'importazione)

Mi sono imbattuto in un probabile errore di immissione che non so quante volte potrà ripetersi, per cui molti valori non sono numerici ma contengono anche delle lettere, per cui il collegamento tra tale foglio e la tabella che si crea nel DB mi fornisce il valore #NUM! per il valore non numerico.

Inizialmente ho utilizzato una funzione IF per cercare di trasformarlo nella striga “ERR” non preventivando che, essendo a monte il problema, la mia soluzione non avrebbe funzionato.

Ho anche provato a convertire in Stringa il valore Partita IVA ma, essendo il problema proprio in ingresso, la cosa non ha funzionato.

La mia richiesta è quindi: esiste un metodo per intercettare il valore #NUM! del file e trasformarlo nel valore “ERR” (è solo un esempio) all'interno della tabella creata?

Grazie anticipate e saluti

Max

6 Risposte

  • Re: Come intercettare il valore #NUM!

    Il campo P.IVA deve essere testo, e se l'importazione è fatta correttamente non si perdono gli ZERI INIZIALI, essendo un Testo.

    Le Importazioni si fanno con la Definizione di SPECIFICA DI IMPORTAZIONE che consente l'attribuzione di personalizzazioni sulla Conversione, hai usato questo metodo…? Se NO…  usalo, se SI verificalo meglio.

    Purtroppo non sapendo come lavori devi verificare tu questo aspetto…

  • Re: Come intercettare il valore #NUM!

    Ciao Alex,

    mi inserisco perchè ho avuto anche io un problema simile ma non so come definire la specifica di importazione in caso di file excel.

    Mi spiego meglio.. in caso di collegamento o importazione di file di testo, nella maschera che si apre c'è il pulsante “Avanzate” dove posso definire la specifica ma in caso di file excel il pulsante non c'è.. 

    Io ho risolto modificando il file excel impostando il formato voluto per tutte le colonne ma magari esiste una soluzione PRO

  • Re: Come intercettare il valore #NUM!

    07/03/2023 - @Alex ha scritto:


    Il campo P.IVA deve essere testo, e se l'importazione è fatta correttamente non si perdono gli ZERI INIZIALI, essendo un Testo.

    Le Importazioni si fanno con la Definizione di SPECIFICA DI IMPORTAZIONE che consente l'attribuzione di personalizzazioni sulla Conversione, hai usato questo metodo…? Se NO…  usalo, se SI verificalo meglio.

    Purtroppo non sapendo come lavori devi verificare tu questo aspetto…

    Ciao Alex e grazie per la gentile risposta, per la quale ti elenco le difficoltà:

    1. L'attività che svolgo è all'interno di un'azienda ed i file di cui ho bisogno arrivano da più fonti in formato:
      1.  .CSV (per quelli non c'è un grosso problema ad usare le Specifiche di Importazione)
      2. .XLS o XLSX e le formattazioni native sono tra le più svariate.
    2. nello specifico il file di cui parliamo è proprio .XLSX ed il campo PIVA è formattato come Generale (e prende per default la forma numerica, infatti il contenuto è allineato a destra del campo ed elide gli zeri iniziali).
    3. per tale condizione ho dovuto utilizzare un workaround che mi sono inventato per la conversione
    4. il problema che mi si è presentato è stato con delle PIVA straniere, che non seguono lo standard italiano e sono inserite con delle lettere iniziali (forse per indicare il paese di provenienza) ed infatti sono allineate a sinistra come testo.
    5. In questa diversità di inserimento nasce la mia difficoltà:
      1. Io uso i collegamenti ai file che sono residenti in un'area server share, dato che questi possono raggiungere anche 250.000 record, in modo da creare delle tabelle locali a lavorarci più velocemente.
    6. Tornando al mio problema, questo è il motivo per cui ottengo l'indicazione #NUM! sulle PIVA “Anomale”
    7. Vorrei evidenziare i record incriminati con un filtro, per inoltrare l'elenco alla linea emittente, ma tutte le soluzioni che ho provato sono inefficaci

    Spero di essere stato maggiormente esaustivo nella spiegazione.

    saluti

    Max

  • Re: Come intercettare il valore #NUM!

    In un File di EXCEL se la Colonna è definita come NUMERO non visualizza nemmeno in EXCEL lo ZERO iniziale, e questo anche se la colonna è definita “GENERALE”.

    La conseguenza è che lo Zero iniziale viene soppresso, e perso come informazione, quindi Impossibile da recuperare anche per Access….

    Quindi se in Excel hai 123574, ma dovrebbe essere 000123574 beh il problema è che in Excel hai un dato ERRATO e non coerente.

    Detto questo per i campi come PIVA la soluzione è semplice.

    Come si può aggirare il problema… si costruisce in Access una Tabella di Import Formatta correttamente, quindi con i Campi Nominati come i nomi delle Colonne del File di Excel, ma con i FIELDTYPE coerenti… il campo PIVA sarà Testo di 11 Caratteri.

    Nel campo PIVA della Tabella, definito come Campo TESTO da 11 Caratteri, si modifica la proprietà FORMATO mettendo 11 ZERI.

    A quel punto si effettua l'IMPORTAZIONE con TransfertSpreadsheet, ed il campo che in EXCEL era “GENERALE” 123574 in Access diventa Testo 00000123574

    La Tabella non si cancella ma si SVUOTA e SI RIEMPIE.

    Questo è il metodo più fuzionale e veloce, se invece si vuole operare su più Campi con particolarità di Formattazione più flessibili allora conviene effettuare l'Import in modo differente, ovvero Aprire il file di EXCEL con l'Automazione, effettuare un Ciclo Riga/Colonna, aprire un RS su Tabella ed effettuare un ADDNEW per ogni Riga ed un EDIT su ogni Campo dove per Campo si intende la Cella puntata dal Ciclo RIGA/COLONNA e si applica la Formattazione desiderata prima di fare l'UPDATE…

    rs!PIVA=Format$(xls.Cells(Riga,Colonna).Value,"00000000000")

    Questo metodo è molto più lento, ma decisamente più personalizzabile.

    Spero sia utile.

  • Re: Come intercettare il valore #NUM!

    Molto Utile. 

    Grazie per la dritta e saluti

    max
  • Re: Come intercettare il valore #NUM!

    Purtroppo la cognizione di coerenza é un fattore estremamente lontano da molte persone che usano fogli excel a 200 colonne come database.

    Cercare di spiegare che un numero non ha senso se non ha una definizione propria è una fatica che oramai ho tralasciato per avvilimento. 

    Grazie tante per l'aiuto che mi permetterà di sopravvivere un altro giorno in questo mare in tempesta e senza terra ferma che è l'ambito lavorativo
Devi accedere o registrarti per scrivere nel forum
6 risposte