IMPORTARE DATI in un campo CASELA COMBINATA

di il
10 risposte

IMPORTARE DATI in un campo CASELA COMBINATA

Salve a tutti,
faccio l’esempio della libreria per comodità di spiegazione.

Due tabelle SENZA RELAZIONI tra loro.
Una query giusto per filtrare in ordine alfabetico la prima tabella

Tabella: tblAutori

IDAutore (numerazione automatica)
CognomeAutore (testo breve)
NomeAutore (testo breve)

Tabella: TblLibri

IDLibro (numerazione automatica)
IDAutore (numerico, e impostato come casella combinta della query tblAutori Query)
Titolo (testo breve)

Query: tblAutori Query

IDAutore
CognomeAutore
NomeAutore

Fin qui tutto nella norma e funzionante.

Però, per popolare la tabella TblLibri, ho la necessità d’importare i dati da un file Excel , file Excel così preparato:
IDLibro..........IDAutore........Titolo
1.................Antonio.........Antonio il bello
2.................Saverio.........Saverio il forte
Ecc…

Il file di Excel al campo IDAutore ha come dati i nomi degli autori e non il loro IDAutore, ma il campo IDAutore è impostato come già detto come casela combinata!
Quindi, l’importazione avviene solo per i dati IDLibro e Titolo, mentre il campo IDAutore rimane vuoto, ecco il risultato:

IDLibro...........IDAutore........Titolo
1....................................Antonio il bello
2....................................Saverio il forte

Ciò accade perchè i dati da importare non sono riportanti nell'elenco della Casella Combinata, in qunato sto importando del testo (nomi) e non dei numeri (IDAutore), ma ho necessità d'importare da un file Excel che appunto riporta i nomi e non il loro ID.

Come posso evitare ciò e quindi importare dal file Excel anche i dati del campo IDAutore e cioè i nomi degli Autori

Grazie

10 Risposte

  • Re: IMPORTARE DATI in un campo CASELA COMBINATA

    Considera che IDAutore (di Access) è NUMERICO, mentre "Antonio", "Saverio" (di Excel) sono TESTO...e questo Access non lo può digerire.
  • Re: IMPORTARE DATI in un campo CASELA COMBINATA

    Grazie della risposta.
    Nemmeno con il VBA?
  • Re: IMPORTARE DATI in un campo CASELA COMBINATA

    Penso si possa fare in VBA. Il problema è che devi capire la logica di sostituzione di "quel" valore. Io ragionerei per più piccoli passi. Per esempio dovremmo essere sicuri al 100% che non ci siano "omonimi/duplicati" che potrebbero darti rogne.
  • Re: IMPORTARE DATI in un campo CASELA COMBINATA

    Eh... si che ci possono stare omonimi/duplicati.
  • Re: IMPORTARE DATI in un campo CASELA COMBINATA

    Perché non relazioni...?
    Sai che quello che stai facendo non ha nulla a che fare con una gestione relazionale con Database...?
    Ora se importi da Excel quello.che serve fare dal momento che Excel non ha PK è quello di ricondurre alla forma relazionale i dati...
    Quindi devi importare una una tabella Temporanea e verificare che
    Autore e Titolo non siano presenti, se presenti devi sostituire il resto con l'indice PK della tabella relazuionata... altrimenti prima lo aggiungi e poi recuperi l'indice PK...

    Come stai facendo non porta a molto anzi... detto questo però io mi fermo perché quello che manca non è difficile né banale... e per farlo serve aver chiaro quanto ho provato a spiegare sui database.
  • Re: IMPORTARE DATI in un campo CASELA COMBINATA

    Grazie anche a te @Alex.
    Senza relazione perchè è un DB già creato e funzionante anche abbastanza complesso ma funzionante, creato da altri ed è costituito da sette tabelle SENZA RELAZIONI, una miriade di query, maschere, report, moduli e anche VBA.
    FUNZIONA BENE MA ERA POPOLATO A MANO. INVECE IO DEVO POPOLARLO DA DATI PROVENIENTI DA FILE EXCEL!

    Premesso ciò, Io dovrei solo popolarlo (importare i dati), dati che provengono da "Utenti" che compilano un appunto un file Excel (preparato in un certo modo e con molti dati!), dovrei assemblare i vari file Excel in un unico file Excel e poi appunto importarlo nel DB.
    Il problema è che MOLTI campi del DB della tabella principale (ANAGRAFICA) e quindi i relativi dati del file Excel sono caselle combinate (di altre tabelle) senza relazioni.
    Quindi importo "TESTO" e non "NUMERI" e questo come abbiamo detto non va!
    Mi sono rivolto al forum per trovare una soluzione (esempio con il VBA che io non conosco) perchè non ho il tempo di rifare il DB da capo.

    Come soluzione adesso sto lavorando sui file Excel, vorrei preparali diversamente e cioè quando l "Utente" lo compila, in alcuni campi, come il campo CITTA sceglie da una casella combinata per esempio Roma, ho aggiunto Roma 01220 (che il suo ID della tabella di ACCESS).

    Assemblati tutti i file Excel in un unico file, avrei una colonna di nomi di Città (testo) con il NUMERO ID: Roma 01220; Milano 022321; ecc...

    Adesso il problema è che devo trovare (in excel) un modo automatizzato per la cancellazione dei nomi di Città (testo) e far rimanre solo il NUMERO ID in una colonna dedicata, e quindi potrei finalmente importare i NUMERI ID che sono quelli che miserveno per le mie caselle combinate del DB.

    Non so se sono stato chiaro.
    Non so se mi sto muovendo verso la direzione giusta.
    GRAZIE PER IL VS TEMPO.
  • Re: IMPORTARE DATI in un campo CASELA COMBINATA

    Dirti che sei sulla strada giusta sarebbe dare indicazioni fortemente errate, quindi NO stai solo proseguendo nella gestione errata... tuttavia questa è chiaramente una scelta che hai gia deciso... motivo per cui non voglio insistere inutilmente.

    Lascio ad altri la possibilità di darti suggerimenti anche perché per alcuni aspetti hai già trovato un limite strutturale... per altri servirebbe conoscessi il VBA, cosa che hai già negato... quindi oltre che cercare accrocchi continui di fantasia sinceramente fatico a pensare ad altre strade.

    Buon lavoro.
  • Re: IMPORTARE DATI in un campo CASELA COMBINATA

    Totalmente d'accordo con @Alex. Access ha delle regole ben precise da rispettare. Un database va strutturato su più tabelle RELAZIONATE...e "ben relazionate", questa cosa si chiama NORMALIZZAZIONE.
    Dopo di che qualsiasi trasmigrazione tu voglia fare da Excel in Access...va fatta conoscendo i limiti/regole di entrambe le applicazioni.
  • Re: IMPORTARE DATI in un campo CASELA COMBINATA

    tuttavia questa è chiaramente una scelta che hai gia deciso
    .
    Non ho deciso nulla e solo un tentativo di risovere la situazione con una botta al cerchio e una alla botte!
    Autore e Titolo non siano presenti, se presenti devi sostituire il resto con l'indice PK della tabella relazuionata... altrimenti prima lo aggiungi e poi recuperi l'indice PK..
    non ho capito cosa intendi per devi sostituire il resto e altrimenti prima lo aggiungi e poi recuperi


    Ma comunque mi state dicendo che in u DB con relazioni non avrei avuto questo problema d'importazione dati da file EXCEL in tabella di ACCESS con campi settati su casella combinata? giusto?
  • Re: IMPORTARE DATI in un campo CASELA COMBINATA

    darki ha scritto:


    Ma comunque mi state dicendo che in u DB con relazioni non avrei avuto questo problema d'importazione dati da file EXCEL in tabella di ACCESS con campi settati su casella combinata? giusto?
    Non del tutto. La normalizzazione del database sarebbe un aspetto che devi comunque correggere.
    Ad esempio...poi...come risolvi per i Libri multiAutore?

    darki ha scritto:


    non ho capito cosa intendi per devi sostituire il resto e altrimenti prima lo aggiungi e poi recuperi
    non è una cosa tanto immediata...devi capirlo tu stesso...per come sono progettati entrambi i file…

    A me non è chiaro se da Excel vuoi trasportare tutto in Access una volta per sempre oppure devi fare questi passaggi spesso e volentieri.
    Nel primo caso:
    1. Progetta per bene il database in Access
    2. Sfrutta qualche tabella di appoggio (Access) per importare i dati grezzi da Excel
    3. Aggiusta a piccoli passi ciò che deve entrare nelle tabelle normalizzate di Access

    Nel secondo caso:
    1. Me la vedo molto dura. Se consideri che i due files sono strutturati/pensati in maniera molto differente. Fare aggiustamenti con opportuni codici VBA...almeno per me appare cosa non semplice (anche con eventuali tabelle di appoggio).

    Non so perché mi sento di consigliarti questa lettura
    https://support.office.com/it-it/article/utilizzare-access-o-excel-per-gestire-i-dati-09576147-47d1-4c6f-9312-e825227fcaea
Devi accedere o registrarti per scrivere nel forum
10 risposte