Un campo da dividere

di il
7 risposte

Un campo da dividere

So di proporre un quesito davvero rompicapo, se non impossibile, ma vorrei provare ugualmente.
In una tabella Artisti ho un solo campo Artista. Già, perchè un solo campo e non 2 (Nome e Cognome)? All'epoca in cui avevo costruito il database (2000) non conoscevo ancora la possibilità di sfruttare query che concatenassero campi e avevo pensato a un unico campo, cercando di sfruttare una digitazione/formato la più coerente possibile per futuri utilizzi, cioè l'elencazione alfabetica.

Sordi Alberto
Verdone Carlo
Giordano Bruno
Bruno Giordano (non è uno scherzo, sono 2 Artisti diversi)
Pink floyd
Beatles
Ron
Mozart Wolfgang Amadeus
Mozart Leopold

In questa elencazione è possibile notare come sia impossibile riconoscere Cognome da Nome. Il criterio originario era che:
- se si trattava di un gruppo lo scrivevo per esteso
- se si trattava di una persona lo scrivevo secondo un mio formato mentale Cognome (o Cognomi composti) & Nome (o Nomi composti).
Credo che Access non possa risolvere questa matassa. Forse alcuni motori di ricerca di Google sì, ma immagino che suddividere le parole in base agli spazi contenuti al proprio interno non siano sufficienti per risolvere.
Non pretendo una eventuale soluzione, anche VBA (che non so usare), ma piuttosto un possibile tracciato logico su come pazientemente procedere.

7 Risposte

  • Re: Un campo da dividere

    In tutta franchezza, l'unica strada percorribile è gestire i 2 campi Cognome e Nome separatamente.

    Non so a che livello di implementazione sei arrivato, ma se proprio devi conservare il campo Artista (per me sconsigliato) potresti sempre mantenerlo, ma dovrà essere aggiornato ogni volta che viene modificato il Cognome o il Nome da un update del tipo:

    UPDATE Artisti SET Artista = Cognome + ' ' + Nome
  • Re: Un campo da dividere

    Questa cosa oggi la saprei fare. Dovessi riprogettare il mio database organizzerei la tabella così:
    IDArtista
    Nome
    Cognome (o Gruppo)

    Sta di fatto che nel 2000 non conoscevo la concatenazione campi nelle query con il carattere &. Il database, opportunamente strutturato, gira a meraviglia. La tabella Artisti ha attualmente più di 12.000 record e devo capire bene come attuare la strategia migliore per risolvere questo enigma.
  • Re: Un campo da dividere

    Non esiste NULLA di predefinito, anche GOOGLE come dici tu, ha un'elenco di CASISTICHE per minimizzare errori...

    Nello stesso modo devi fare tu, non c'è un'algoritmo automatico che consente di discriminare NOME e COGNOME in base allo spazio...

    Devi procedere per il MALE MINORE, attuando una procedura che potrà gestire il 95% dei casi, quindi a MANINA fare il resto...!

    Ora nel tuo caso specifico, spero che quando hai inserito i dati tu abbia rispettato la PRIORITA' di inserimento, vale a dire sempre prima NOME e poi COGNOME(o viceversa)... questo già potrebbe semplificare... altrimenti...

    Quindi fai una query che dal Campo SINGOLO spezza in 2 CAMPI puntando al primo SPAZIO... se e solo se la 1° parte è un NOME ad esempio "Piero Lo Giudice", a meno di Nomi Multipli, ma questa è una delle ECCEZIONI da gestire a MANO....

    Se il 1° è il cognome credo che ti converrebbe contare il NUMERO DI SPAZZI presenti e se >1 allora dividi da N in questo modo terrai conto dei Cognomi complessi "Lo Giudice Piero" ad esempio... ha 2 Spazzi ma solo il 2° è il separatore da usare...

    Come vedi ci potrebbero essere altri casi, io mi costruirei una FUNZIONE che li analizza, nel tuo caso che hai difficoltà con il VBA credo sia più semplice approssimare e gestire i fuori standard...!

    Attenzione anche agli apostrofi nel caso in vui in digitazione tu abbia inserito SPAZZI...

    Vedi tu...
  • Re: Un campo da dividere

    Questo potrebbe esserti utile:

    http://www.rgpsoft.it/utility/nomi.ph

    Non ho provato, ma è meglio di niente.
  • Re: Un campo da dividere

    Per dividere il campo e sufficiente che tu esporti (o copia) tutti record del campo “Artista” in Excel. Da Excel nel menù “Dati” usa la funzione “testo in colonna” e vedrai che tutti dati saranno inseriti su due colonne se nel campo “Artisti” l’artista è scritto con due parole o in tre colonne se l’artista è scritto con tre parole e così via.
    Da Excel, copia tutti i dati delle nuove colonne in un altro file di Excel usando “Incolla Speciale”, nella finestra che si aprirà seleziona “solo valori”. L’intestazione delle nuove colonne deve essere “Nome” e “Cognome” (cioè gli stessi nomi dei campi che tu hai o che devi creare in Access), poi Salva con nome il foglio di Excel.
    Da Access, usa “Importa dati da Excel” dando il percorso del nuovo file di Excel ed il gioco è fatto.
    Quando andrai ad importare i dati da Excel in Access, ti sarà chiesto dove devono essere memorizzati i dati. Se tu scegli “Accoda in una tabella già esistente” tutti i dati si andranno ad accodare creando nuovi record e credo che questo non faccia al tuo caso perché avrai il doppio dei record (12000 già esistenti con il campo “Artista” compilato e i nuovi campi “Nome” e “Cognome” vuoti, più 12000 con i nuovi campi “Nome” e “Cognome” compilati e l campo “Artista” vuoto.
    Per evitare tutto questo devi evidenziare i campi “Nome” e “Cognome” di tutti e 12000 record, copia i dati da Excel e incollali nei record evidenziati.
  • Re: Un campo da dividere

    Fai la prova tu con quanto hai detto con questi che cito solo a titolo di esempio... perchè e di questi che stiamo parlando... inteso come quei Nomi/Cognomi o Cognomi/Nomi per i quali il semplice SPACCA in 2 non ha effetto, o se lo ha rischia di non essere quello voluto...:

    Vincenzo Lo Giudice
    Lo Giudice Vincenzo
    Pier Paolo Del Turco
    Mario Mauro (non volevo dire Ezio... essendo famoso si capiva quale era il nome)
    Marco Quondam Pauli (preso dall'anagrafe di Roma)
    Giuseppe Sforza Visconti d’Aragona Estense

    Senza parlare dei cognomi ottenuti per aggregazione di casta(come l'ultimo che ho inserito), quelli che una volta erano l'Aristocrazia.

    Facci sapere cosa EXCEL ti ha miracolosamente fatto, sono curioso ...!
  • Re: Un campo da dividere

    Ringrazio per l'attenzione, ma ho la sensazione che soltanto la prima risposta di @Alex sia la più delicata/sensibile/attuabile. In testa l'avevo quasi pensata, ma non riuscivo a esplicitarla a parole come hai detto tu. Manca ancora un dettaglio ignorato, cioè i nomi dei gruppi con lo/gli spazi.
    Pink Floyd
    Manhattan transfert
    Rolling stones
    Parto delle nuvole pesanti
    Modena city ramblers
    dovranno restare tali in un solo campo (ad es. Cognome)

    Ripeto che il formato mentale per le Persone partiva sempre dal Cognome (anche se composto).

    Grazie @Alex, se non ci sono altre osservazioni di rilievo, direi che hai colto il senso del problema.
Devi accedere o registrarti per scrivere nel forum
7 risposte