Nuova tabella da campo esistente

di il
24 risposte

Nuova tabella da campo esistente

Ciao a tutti,
sempre premettendo che non ne so molto di access, ho letto un link (guida) postato da "ALEX" dove sta scritto che in un campo non dovrebbe essere ripetuto lo stesso dato/valore, altrimenti sarebbe opportuno creare una nuova tabella (correggetemi pure se ho capito male).
Ora io mi ritrovo in questa situazione nel mio database (composto da un' unica tabella), ovvero con un campo "DISEGNATORE" in cui vi è spesso inserito lo stesso nome e cognome inseriti come testo (a volte anche due o tre nomi consecutivi, che hanno disegnato insieme lo stesso fumetto).
Potrei crearmi una nuova tabella "DISEGNATORI" o ormai è troppo tardi?
E se si, come potrei fare a ricollegare il tutto alle maschere e query già create? E' una cosa complicata? Mi aiutereste?
Ringrazio anticipatamente.

24 Risposte

  • Re: Nuova tabella da campo esistente

    La cosa va sempre contestualizzata...!
    Diciamo che lo sviluppo di un Database, contrariamente ai Fogli di Excel, richiede regole diverse.
    Le regole che ci si è dati per la strutturazione di un DB sono le Forme di Normalizzazione, che sono 3(+2), nella 1° forma normale è esposto il concetto di cui parlavi, ma serve avere l'idea del progetto per capire se il tuo caso ricade in questo.

    Fossi in te io mi fermerei a capire meglio la tua esigenza, che potresti provare a spiegarci per metterci nella condizione di comprendere il progetto.
    Magari esponi l'esigenza che assolve la tua MonoTabella, poi passiamo a capire il perchè e se è fondato il dubbio che ti è venuto.
  • Re: Nuova tabella da campo esistente

    @Alex ha scritto:


    La cosa va sempre contestualizzata...!
    CUT
    Magari esponi l'esigenza che assolve la tua MonoTabella, poi passiamo a capire il perchè e se è fondato il dubbio che ti è venuto.
    Semplicemente ho una tabella con i vari campi: anno, numero, titolo, data, copertina, prezzo, e appunto il campo "DISEGNATORE/I"; poi con varie query e maschere, vado a "pescare" i singoli numeri.
    Più che una necessità, la mia era una richesta volta a "perfezionare" il mio programmino .... e nello stesso tempo ampliare le mie modeste conoscenze di access.
  • Re: Nuova tabella da campo esistente

    Se ti riferisci ai Fumetti... per i quali un fumetto può avere più disegnatori direi che la risposta non solo è SI AVEVI CAPITO BENE, ma anche che rientreresti nella 4FN quindi Tabelle Molti Molti.

    Mi spiego.
    Secondo me potresti strutturare una Tabella Disegnatori, nella quale inserisci la tua PK ed il Nome(altri campi a tua necessità).
    Poi ovviamente servirà una Tabella Fumetti.
    Ora siccome immagino che un Disegnatore può disegnare più Fumetti, ne esce che il Singor XX
    deve poter essere relazionato a più Fumetti.
    Per questo servirà una tabella DettaglioFumettiDisegnatori, nella quale andrai a LEGARE ad ogni Fumetto N disegnatori...!

    Si complica un pò la gestione dati, ma solo alla prima inseperienza... poi si schiarisce tutto.
  • Re: Nuova tabella da campo esistente

    Ciao Alex,
    Per fare quello che hai detto, devo collegare tutti i disegnatori della mia tabella attuale (sono circa 700 record) a manona?
    Adesso io ho il campo disegnatore con dentro, es. tre disegnatori: nome cognome, tizio tizietti, topo topini ecc.(ma ci sono anche fumetti con un solo disegnatore).
    Ora vorrei cercare di fare una nuova tabella disegnatori con due campi: NOME e COGNOME (separati).
    Mi potresti delucidare un pò più approfonditamente sulla strada da percorrere?
  • Re: Nuova tabella da campo esistente

    Filippo70 ha scritto:


    Ciao Alex,
    Per fare quello che hai detto, devo collegare tutti i disegnatori della mia tabella attuale (sono circa 700 record) a manona?
    Ni... il problema è che queste cose dovrebbero nascere CORRETTE all'inizio per ovviare alle modifiche successive.
    Ora potresti non dover fare tutto a mano... ma scrivere codice per farlo e considerarlo meno impegnativo serve una dimestichezza discreta... cosa che non sò per te come sia.

    Filippo70 ha scritto:


    Adesso io ho il campo disegnatore con dentro, es. tre disegnatori: nome cognome, tizio tizietti, topo topini ecc.(ma ci sono anche fumetti con un solo disegnatore).
    Ora vorrei cercare di fare una nuova tabella disegnatori con due campi: NOME e COGNOME (separati).
    Mi potresti delucidare un pò più approfonditamente sulla strada da percorrere?
    Si dovresti fare una Nuova Tabella con Campo Chiave Primaria ID_Disegnatore(Counter) più i campo Nome/Cognome/...ecc.

    Per ristrutturare un Database non correttamente strutturato serve TEMPO e PAZIENZA, nonchè lucidità.
    Fai un passo per volta fatti sempre BackUp differenziali...
  • Re: Nuova tabella da campo esistente

    @Alex ha scritto:


    Il problema è che queste cose dovrebbero nascere CORRETTE all'inizio per ovviare alle modifiche successive.
    E', lo so, ho letto anche questo da qiualche parte, ma ormai il db era fatto e non mi era ancora venuto lo spriccio di metterci mano!
    Sto cercando di imarare, e mettere le mani su qualcosa di pratico mi riesce meglio che non andare sull' astratto.

    @Alex ha scritto:



    Secondo me potresti strutturare una Tabella Disegnatori, nella quale inserisci la tua PK ed il Nome(altri campi a tua necessità). Ora siccome immagino che un Disegnatore può disegnare più Fumetti, ne esce che il Singor XX
    deve poter essere relazionato a più Fumetti.
    Fino a qui ci sono.... forse....

    @Alex ha scritto:



    Poi ovviamente servirà una Tabella Fumetti.
    Posso usare quella esistente, giusto?

    @Alex ha scritto:



    servirà una tabella DettaglioFumettiDisegnatori, nella quale andrai a LEGARE ad ogni Fumetto N disegnatori...!
    Qui invece già si cominciano a complicare le cose...... nel senso che non saprei quali campi andare a collegare tra loro in questa nuova tabella....

    @Alex ha scritto:


    Ora potresti non dover fare tutto a mano... ma scrivere codice per farlo e considerarlo meno impegnativo serve una dimestichezza discreta... cosa che non sò per te come sia.
    Qui diciamo che in un modo o nell' altro potrei arrivarci anche da solo (a manona), nel senso che non voglio sprecare i tuoi preziosi consigli per fare questo, ma utilizzarli per altro!

    @Alex ha scritto:


    Si dovresti fare una Nuova Tabella con Campo Chiave Primaria ID_Disegnatore(Counter) più i campi Nome/Cognome/...ecc.
    Beh dai, non esagerare, fin qui ci arrivo (giusto per farti capire le mie conoscenze di access)

    @Alex ha scritto:


    Fai un passo per volta fatti sempre BackUp differenziali...
    Sicurissimevolmente!!! Il mio DB aperto in mano mia, non è in buone mani!
    p.s. Intanto grazie per l' interessamento
  • Re: Nuova tabella da campo esistente

    Filippo70 ha scritto:


    .....
    Posso usare quella esistente, giusto?
    Come Tabella Fumetti si.

    Filippo70 ha scritto:


    @Alex ha scritto:


    servirà una tabella DettaglioFumettiDisegnatori, nella quale andrai a LEGARE ad ogni Fumetto N disegnatori...!
    Qui invece già si cominciano a complicare le cose...... nel senso che non saprei quali campi andare a collegare tra loro in questa nuova tabella....
    Facciamo un'esempio:
    
                                TblDettaglioFumettiDisegnatore       
    TblFumetti                  [PK]IdDettaglioFD
    IdFumetto[PK](1)<------>(00)IdFumetto[FK]                         TblDisegnatori
    Titolo                      [FK]IdDisegnatore(00)<------------>(1)IdDisegnatore[PK]
    ....                                                              Nome
                                                                      Cognome
    Ora fai una Maschera Basata su TblFumetti con Sottomaschera basata su [TblDettaglioFumettiDisegnatore].
    Nella Sottomaschera il Controllo associato a [IdDisegnatore] che sarà Numerico(e tu lo vorrai vedere come Nome e Cognome...) lo trasformi in una ComboBox(a 2 Colonne con la 1° Larghezza=0 e la 2° larghezza=10) con OrigineRiga una Query con 2 Campi:
    
    SELECT IdDisegnatore, ([Cognome]+[Nome]) As Disegnatore FROM TblDisegnatori ORDER BY ([Cognome]+[Nome])
    In questo modo sarai in grado di Legare le RELAZIONI MOLTI-MOLTI con gli Indici ma Visualizzando un Testo significativo...!
    Spero di averti chiarito la cosa.

    Filippo70 ha scritto:


    Sicurissimevolmente!!! Il mio DB aperto in mano mia, non è in buone mani!
    p.s. Intanto grazie per l' interessamento
    Prego
  • Re: Nuova tabella da campo esistente

    Ciao! X ALEX:
    Molto bene! Vedo che hai capito perfettamente fino a dove riesco ad arrivare ....... o forse mi hai un pò sopravvalutato........, vedremo
    Ora ho di che sbizzarrirmi, allora facciamo così: ti ringrazio adesso, perchè nei prossimi giorni sarò mooolto impegnato (le prove riesco a farle solo alla sera), per cercare di cavarne qualcosa (dalle tue indicazioni) e non vorrei sembrare scortese nei tuoi confronti.
    Appena ottengo qualche risultato soddisfacente o mi dovessi incagliare spudoratamente (ma cerchiamo di essere ottimisti ), ti farò sapere comunque.
    Speriamo che non mi fonda il cervello! .
    Grazie ancora e buon week end
    Filippo
  • Re: Nuova tabella da campo esistente

    Non ce l' ho fatta a resistere....
    Tutto ok , l' impostazione è fatta, ora non mi resta (parola grossa) che ricollegare i campi.
    Ma dopo che ho collegato tutti i nomi con il nuovo metodo che mi hai insegnato, come li collego alla maschera che già ho e che puntava al campo della vecchia "monotabella"? Devo fare una nuova maschera o posso utilizzare quella esistente e cambiare solo il controllo dedicato al DISEGNATORE?
    Un altra cosa vorrei chiederti:
    Con i suggerimenti che mi hai dato, ho notato che posso inserire lo stesso nome più volte, allora invece che duplicarmi la stessa procedura più volte (come già era mia intenzione fare DISEGNATORE; DISEGNATORE COPERTINA; ELABORAZIONE GRAFICA) potrei aggiungere di fianco al disegnatore un ulteriore campo con inserito la parte del fumetto che ha disegnato?
    Non mandarmi a quel paese però, è?
    Se hai tempo ....... e voglia ....... io sono tutt' orecchi
  • Re: Nuova tabella da campo esistente

    Rileggi bene quello che ti ho scritto... è esplicito come debba essere interpretata la Struttura.
    Se trovi più veloce modificare l'attuale puoi fare così, io farei le Maschere da Capo con l'autocomposizione, sono 3 passaggi.
    A mano devi modificare solo il controlllo della Sottomaschera basata sulla TabDettaglio che ha come riferimento IDDisegnatore..., in una COMBO.
    Credo servano all'incirca 8 secondi in tutto...
  • Re: Nuova tabella da campo esistente

    @Alex ha scritto:


    Rileggi bene quello che ti ho scritto... è esplicito come debba essere interpretata la Struttura.
    Ho già fatto la nuova struttura completa di relazioni che mi hai detto tu! Ti sorprende la mia velocità di applicazione, vero? Non mi resta che inserire tutti i nomi dei disegnatori ai relativi ai fumetti, ma la strada è spianata.
    Mi sono spiegato male, ci riprovo:
    Dopo che ho collegato tutti i nomi (mi ci vorrà un pò di tempo) con il nuovo metodo che mi hai insegnato, come li collego alla maschera esistente nel mio "vecchio" DB" e che puntava al campo della vecchia "monotabella"? Devo fare una nuova maschera o posso utilizzare quella esistente e cambiare solo il controllo dedicato al DISEGNATORE?
    Ho notato che posso inserire nella sottomaschera appena creata,lo stesso nome più volte, allora (come già era mia intenzione fare) invece che duplicarmi la stessa procedura più volte (DISEGNATORE VIGNETTE; DISEGNATORE COPERTINA; DISEGNATORE GRAFICA) potrei aggiungere di fianco al disegnatore un ulteriore campo con inserito la parte del fumetto che ha disegnato?
  • Re: Nuova tabella da campo esistente

    Mi sono letto or ora il regolamento (un pò in ritardo) e soprattutto le regole 5 - 6 e 9f.
    Scusate.
    Ciao
    Filippo
  • Re: Nuova tabella da campo esistente

    @Alex ha scritto:


    Facciamo un'esempio:
    
                                TblDettaglioFumettiDisegnatore       
    TblFumetti                  [PK]IdDettaglioFD
    IdFumetto[PK](1)<------>(00)IdFumetto[FK]                         TblDisegnatori
    Titolo                      [FK]IdDisegnatore(00)<------------>(1)IdDisegnatore[PK]
    ....                                                              Nome
                                                                      Cognome
    Ora fai una Maschera Basata su TblFumetti con Sottomaschera basata su [TblDettaglioFumettiDisegnatore].
    Nella Sottomaschera il Controllo associato a [IdDisegnatore] che sarà Numerico(e tu lo vorrai vedere come Nome e Cognome...) lo trasformi in una ComboBox(a 2 Colonne con la 1° Larghezza=0 e la 2° larghezza=10) con OrigineRiga una Query con 2 Campi:
    
    SELECT IdDisegnatore, ([Cognome]+[Nome]) As Disegnatore FROM TblDisegnatori ORDER BY ([Cognome]+[Nome])
    In questo modo sarai in grado di Legare le RELAZIONI MOLTI-MOLTI con gli Indici ma Visualizzando un Testo significativo...!
    Spero di averti chiarito la cosa.
    Ciao a tutti,
    mi ritrovo nella situazione sopra esposta (grazie Alex).
    Ora, siccome l'appetito vien mangiando, vorrei specificare quale parte di fumetto hanno disegnato i vari disegnatori. Cosa mi consigliate di fare? Posso fare un altra relazione come quella sopra esposta relazionando i disegnatori ANCHE ad un altra tabella "PartiFumetto", magari passando da "Dettaglio-PartiFumetto-Disegnatore"(ulteriore relazione molti a molti)? Oppure più semplicemente aggiungendo i vari campi nella tabella principale (Fumetti)? Ringrazio in anticipo

    Se può aiutare mi dà questo messaggio:
    "Impossibile assegnare il valore Null ad una variabile non di tipo Variant. (Errore 3162)
    Si è tentato di assegnare un valore Null a una variabile il cui tipo di dati non è Variant. Utilizzare l'istruzione Dim per dichiarare la variabile come Variant e quindi ritentare l'operazione."
  • Re: Nuova tabella da campo esistente

    Se le parti di un fumetto possono essere razionalizzate, io creerei una tabella Tabella PartiFumetto e lo relazionerei nella tabella [TblDettaglioFumettiDisegnatore] come FK... con una Combo che pesca dalla Tabella PartiFumetto.
Devi accedere o registrarti per scrivere nel forum
24 risposte