Chiave primaria

di il
9 risposte

Chiave primaria

Ciao

Ho una tabella clienti.
Ho una tabella prestazioni.

La tabella prestazioni è relazionata uno a molti con la tabella clienti tramite IDAnagrafica (1000 righe) che ho copiato dalla tabella clienti e incollato nella tabella prestazioni. La relazione si instaura.

Nella tabella prestazioni devo costruire un ID primario autonumerico di 15 righe.
Se vado a dire ad access che l'id prestazioni deve essere primario questo non me lo accetta mi dice che il campo non puo' essere null.

Cosa devo fare?
Sono un principiante, cortesementte spiegatemi passo passo. Grazie

9 Risposte

  • Re: Chiave primaria

    Gli id univoci di una tabella che devono essere impostati come contatori incrementali automatici vengono generati automaticamente ogni volta che aggiungi un nuovo record.

    Lo sbaglio che fai è copiare nella tabella i record da un'altra fonte.

    Così facendo è vero che copi tutti i dati ma naturalmente il campo id rimane senza nessun tipo di dati ed in realtà non hai nemmeno nessun collegamento tra le varie tabelle ed in questo modo non ti funzionerà mai.

    una possibile soluzione sarebbe di aprire la tabella e immettere manualmente il numero id manualmente record per record, ma poi nella seconda tabella dovresti ripetere l'operazione mettendo il corrispettivo id ad ogni record che deve essere collegato.

    Tutte le altre soluzioni possibili implicano la creazione di una procedura automatica che a mio avviso metterebbe in difficoltà anche uno sviluppatore esperto.

    Sinceramente anche la soluzione manuale che sicuramente non è scevra da errori, non è proprio semplice, perchè dovresti abbinare nel modo giusto con un semplice numerino migliaia di record tra di loro.

    Oppure ti armi di santa pazienza e invece di fare il copia incolla, immetti a mano tutti i dati.

    Altre soluzioni non mi vengono in mente, vediamo se altri hanno soluzioni alternative.
  • Re: Chiave primaria

    Allora riprendo da un altro punto.
    Ho le due tabelle ognuna con il suo ID.
    Correggimi se sbagli.
    Una è tabella pazienti, l'altra tabella prestazioni.
    Se vado a fare una query sulle tue tabelle contemporaneamente chiedendo per la tabella pazienti nome e per la tabella prestazioni descrizione, dovrebbero uscirmi tutti e pazienti e tutte le prestazioni, ossia vedere i campi con tutti i 1000 pazienti ordinati per nome e tutte le 15 prestazioni dalla prima all'ultima.
    Invece io non vedo niente quando interrogo.
    Forse perchè non ci sono dati?
    Perchè se interrogo una tabella alla volta es prestazioni vedo le 15 prestazioni in visione foglio dati e cosi' pure se interrogo la sola tabella pazienti.
    Allora perchè mai la query non mi funziona?
    Ti faccio solo capire perchè avevo fatto copia incolla dell'ID anagrafica. Perchè in tal modo quando facevo query vedevo in foglio dati i dati sia della tabella Anagrafica che della tabella prestazioni.

    Dov'e' che sbaglio?

    Succedee quando metto in relazione nome da anagrafica e nome descrizione prestazione. Non è che ci sia un conflitto nella formattazione testo? Non so piu' cosa pensare
  • Re: Chiave primaria

    Ciao.

    se il Db ti permette di fare una query sulle due tabelle sicuramente hai gli id collegati però non vedi niente perché il campo di collegamento tra pazienti e prestazioni è vuoto.
    fai una prova. apri le due tabelle ed in quella dove hai l id vuoto metti alcuni numeri corrispondenti alla id principale della altra. e poi lancia la query.
  • Re: Chiave primaria

    raphael99 ha scritto:


    Nella tabella prestazioni devo costruire un ID primario autonumerico di 15 righe.
    Siccome questa tua affermazione è una contraddizione in termini,
    spiega cosa intendi per campo autonumerico di 15 righe?
  • Re: Chiave primaria

    gibra ha scritto:


    raphael99 ha scritto:


    Nella tabella prestazioni devo costruire un ID primario autonumerico di 15 righe.
    Siccome questa tua affermazione è una contraddizione in termini,
    spiega cosa intendi per campo autonumerico di 15 righe?
    Io l'ho interpretato che ha 15 tipi di prestazioni specialistiche e deve inserirne una o più per ogni paziente
  • Re: Chiave primaria

    Si in effetti ho 15 prestazioni che vanno assegnate ai pazienti ed hanno un ID autonumber.
    La query funziona adesso , bastava immetterci i dati. Tutto regolare . Pero' ne approfitto per chiedere:
    Vorrei fare un form principale dove viene evidenziato il nome del paziente, ed un subform con le prestazioni.
    Quando creo il form principale access mi fa vedere nella barra di scorrimento record che sono numerati da 1 a 1000. Cosi' pure quando creo un form prestazioni la barra di navigazione di access mi fa vedere che ci sono 15 prestazioni numerate da uno a 15.
    Se inserisco questo form in qualità di subform nel form principale pazienti, il form principale si puo' scorrere con i tastini della barra di navigazionne di access da 1 a 1000, invece nel subform dove ci dovrebbero essere i 15 record, me ne fa vedeere uno vuoto e non si puo' navigare tra i record.
    Ecco questo è il problema principale.
    Campo master IDPazienti - child IDanagrafica.
    Devo solo risolvere questo
  • Re: Chiave primaria

    Arghhh!!!!

    No..no..no tira il freno a mano e spegni la lavatrice che stai sbagliando candeggio

    A parte le battute cretine.

    Sicuramente provieni da Excel.

    Devi sapere che le regole e l'approccio di ragionamento logico valide per access, vanno bene anche per excel, ma ASSOLUTAMENTE non viceversa.

    Sicuramente ti mancano le basi su come creare un database, quindi il consiglio che ti do è di cercare su internet su come fare in access le tabelle e mettere relazioni tra di loro.

    Quando hai capito come funziona la cosa hai risolto il problema al 90 percento, poi c'è tutta la questione di come ricavare i dati ed utilizzarli al meglio, ma quello è il secondo step.

    Purtroppo non posso spiegarti perchè altrimenti ci metterei una vita e su internet c'è già tutto e fatto meglio di come potrei spiegartelo io.

    Anche se si può fare con due tabelle ti consiglio di farlo con 3 tabelle e non due.

    La prima dove archivi i nomi dei pazienti, la seconda dove archivi le prestazioni specialistiche e la terza, quella veramente importante dove colleghi il paziente X alla prestazione Y.

    Forse per iniziare però ti conviene usare due tabelle, una con i nomi e l'altra con le prestazioni specialistiche, anche se hai dei dati che si ripetono e quindi si dice che hai creato un database non normalizzato, per iniziare a capire il concetto di Join ciò collegamento, va più che bene.

    Un consiglio spassionato.
    I database vanno costruiti vuoti e poi vanno aggiunti i dati.

    Se costruisci una database e poi incolli i dati provenienti da altre parti, stai sicuro che non funzionerà.

    Incollare i dati si può fare, ma prima di farlo devi capire come funziona la struttura di un database e sopratutto essere sicuro che quello che hai creato funzioni veramente.
  • Re: Chiave primaria

    Io non ci ho capito niente. Raphael se vuoi una mano anche da me, vorrei la seguente descrizione chiara e passo passo:
    - tutti i nomi propri delle tabelle
    - tutti i nomi propri dei campi di ogni tabella con l'indicazione della chiave primaria (magari dici pure di che tipo è (es. Contatore...))
    - le relazioni: hai creato le relazioni nella finestra relazioni? Hai messo il segno di spunta almeno su "Applica integrità referenziale"?
    - eventuali descrizioni di query
    - poi ci dici chiaramente (dichiarando esattamente i nomi di campo) cosa vuoi fare

    P.S.: è stato rilevato un crossposting in MasterDrive. Lì ti hanno chiuso il thread. Qui si è andati avanti lo stesso. Fai più attenzione la prossima volta.
  • Re: Chiave primaria

    Scusatemi tutti. sono alle prime armi e praticamentte incollavo la chiave primaria della tabella angrafica nella foreign key della tabella prestazioni.
    Una buona lettura di base delle rrelazioni chiave primaria e foreign key mi ha fatto fare il passo nella giusta direzione.
    Ora va tutto bene.
    Ho instaurato una relazione molti a molti e finora pare vada bene.
    Ringrazio tutti per gli interventi
Devi accedere o registrarti per scrivere nel forum
9 risposte