Presentazione e prima domanda

di
Anonimizzato12463
il
8 risposte

Presentazione e prima domanda

Ciao a tutti gli utenti del Forum,
sono un neofita nella programmazione access (uso la versione 2010), finalizzata al mio lavoro di consulente.
Ho creato una tabella contenente una checklist così organizzata:
IDCheck (autoincrement) | Oggetto (memo)| Verificata (Si/No)|Data|IDCliente (intero)

nella checklist ho inserito circa 190 punti, quindi 190 ID.

il mio obiettivo è di associare la checklist ad ogni Cliente della tabella Clienti, in modo da spuntare o meno i vari punti e in seguito creare un report.
La tebella Clienti è organizzata come segue:
IDCliente (autoincrement)|RagioneSociale (testo)|PIVA (testo)|CodFisc (testo)|IDContatti (intero).

Cosa ho fatto: ho creato una relazione uno-a-molti tra IDCliente della tabella Cliente e IDCliente della tabella Checklist.
Poi dalla tabella cliente ho creato una maschera in cui ho inserito i campi RagioneSociale, PIVA e CodFisc. A questa tabella ho aggiunto una sottomaschera/sottoreport in cui ho inserito i campi della tabella Checklist.

Problema: quando la metto in visualizzazione maschera non vedo i 190 punti della checklist ma solo i campi vuoti della tabella Checklist da riempire.

Dove sbaglio? Vorrei arrivare a visualizzare una maschera con in alto i dati del cliente e sotto la checklist da spuntare.

graze e scusate se sono stato poco sintetico.

8 Risposte

  • Re: Presentazione e prima domanda

    Secondo quello che ho capito, a mio avviso non è completamente adeguato...

    Credo che ogni CLIENTE abbia o possa evere una situazione della CHECKLIST diversa da un'altro...
    Ovviamente questo non puoi gestirlo con una RELAZIONE 1-M in quanto lo stato Verificata (Si/No) deve poter essere gestito sul CLIENTE e così non lo è, perchè se il campo IDCheck (autoincrement)=1 ha come IDCliente (intero)=3 non potrà essere dispionibile per il cliente 4... ecc...!

    Ne consegue che manca un pezzo, che ti consente di realizzare una relazione MOLTI-MOLTI.
    Manca la Tabella di DETTAGLIO che contiene lo stato del CHECK e la Data, che lega il campo
    IDCliente (Intero) ed IDCheck (Intero).
    Credo quindi che se crei una Tabella Dettaglio con:
    
    idDettaglio(Pk AutoIncr)
    IDCliente (FK Intero)
    IDCheck (FK Intero)
    Data (Campo Data)
    Verificata (Si/No)
    puoi ottenere quanto a mio avviso è necessario.
  • Re: Presentazione e prima domanda

    Prova a impostare le seguenti proprietà della sottomaschera:
    Oggetto origine: Checklist
    Collega campi secondari: IDCliente
    Collega campi master: IDCliente

    Io ricordo che questi sono i punti chiave di collegamento maschera/sottomaschera. Se dovessi avere ancora problemi, ti consiglio di creare maschera/sottomaschera con la procedura guidata. Essa ti porterà a una visualizzazione ottimale proprio come vorresti tu, impostando tutte le proprietà corrette di collegamento fra i due oggetti Clienti/Chekclist.
    Un'ultima osservazione di minor conto. Quando hai creato la relazione uno-a-molti, controlla di aver messo la spunta sull'impostazione "Applica integrità referenziale".
  • Re: Presentazione e prima domanda

    @Alex ha scritto:


    Secondo quello che ho capito, a mio avviso non è completamente adeguato...

    Credo che ogni CLIENTE abbia o possa evere una situazione della CHECKLIST diversa da un'altro...
    Ovviamente questo non puoi gestirlo con una RELAZIONE 1-M in quanto lo stato Verificata (Si/No) deve poter essere gestito sul CLIENTE e così non lo è, perchè se il campo IDCheck (autoincrement)=1 ha come IDCliente (intero)=3 non potrà essere dispionibile per il cliente 4... ecc...!

    Ne consegue che manca un pezzo, che ti consente di realizzare una relazione MOLTI-MOLTI.
    Manca la Tabella di DETTAGLIO che contiene lo stato del CHECK e la Data, che lega il campo
    IDCliente (Intero) ed IDCheck (Intero).
    Credo quindi che se crei una Tabella Dettaglio con:
    
    idDettaglio(Pk AutoIncr)
    IDCliente (FK Intero)
    IDCheck (FK Intero)
    Data (Campo Data)
    Verificata (Si/No)
    puoi ottenere quanto a mio avviso è necessario.
    Grazie per la Risposta.
    Sto provando da un pò ma non capisco comunque come visualizzare per ogni Cliente la lunga
    Checklist.
    Ho creato la relazione molti a molti inserendo nelle relazioni la tabella dettaglio tra le tabelle Cliente e Checklist, linkando IDCliente.Cliente a IDCliente.Dettaglio e IDCheck.Checklist a IDChecl.Dettaglio.
    a questo punto penso di perdermi nel risultato.
    Dovrei creare una maschera la cui origine dei dati è la tabella Cliente, a questa associare una sottomaschera con orgine dati la tabella dettaglio e annidata in questa un'ulteriore sottomaschera con origine in Checklist?
    Se faccio una sottomaschera con origne dei dati in Check ho lo stesso risultato di quando non avevo fatto la relazione molti a molti ma uno a molti
  • Re: Presentazione e prima domanda

    Nel ricordarti che nel Forum è attiva una RICERCA, che magari potrebbe darti indicazioni utili, in quanto gli argomenti trattati sono sempre gli stessi... ti evidenzio questo:
    http://www.iprogrammatori.it/forum-programmazione/access/popolare-dati-una-junction-table-molti-molti-t16745.html
  • Re: Presentazione e prima domanda

    Intanto vorrei Ringraziare anche Osvaldo per aver risposto alla mia domanda.
    Per rispondere ad Alex,
    ho fatto come nel post linkato.
    nella tabella dettaglio ho associato al campo IDCliente una query che mi permetta di visualizzare col menù a tendina la lista dei clienti e al campo IDCheck una query che mi permetta di visualizzare l'oggetto della checklist e la sua obbligatorietà o meno.
    Ho inserito la tabella di Dettaglio come sottomaschera della tabella Clienti.

    Il problema che ne è sorto è che ora posso associare man mano tutti i punti della checklist a ogni cliente, associarne una data e un segno di spunta, ma il mio obiettivo era quello di vederli inseriti tutti insieme e non doverli inserire il man mano.

    Tra l'altro a questo punto se facessi un report, non saprei come sbrogliarmi dal fatto che al posto del nome del cliente e dell'oggetto della chek list solo i relativi ID.
  • Re: Presentazione e prima domanda

    Io confesso di aver perso tutto il filo del discorso. Se tu potessi fare qualche esempio con dati pratici, forse riesco a ritornare al bandolo della matassa. Tra l'altro non ho affatto capito cosa sia questa tabella Checklist e il suo utilizzo.
  • Re: Presentazione e prima domanda

    Osvaldo scusa se rispondo solo ora....
    cerco di spiegare nuovamente il problema.
    ho una tabella clienti |idCliente|RagioneSociale|Piva|CodFiscale
    e una tabella Checklist |idCheck|Oggetto|Verificato|Data| (precompilata)
    vorrei trovare un modo per associare l'intero contenuto della tabella Checklist (circa 180 id) a un determinato cliente.
    Cosa ho fatto:
    1- Creo Maschera basandomi sulla tabella cliente e poi una una sottomaschera/sottoreport basandomi sulla tabella Checklist, ma non va bene. Non riesco a vedere nessuno dei 180 id associati
    2- Ho creato una relazione molti a molti creando anche una tabella di scambio. nella tabella di scambio ho |IDScambio|idCliente|IdCheck|. All'idCliente e IdCheck tramite look up, creo il menù a tendina dove posso scegliere di volta in volta uno dei 180 idCheck e associarlo a uno dei clienti.
    Però ancora non ci siamo, io vorrei una maschera che mi associ tutti i 180 record della tabella Check a un determinato cliente.
    Spero di essere stato più chiaro.
  • Re: Presentazione e prima domanda

    lalepup ha scritto:


    ho una tabella clienti |idCliente|RagioneSociale|Piva|CodFiscale
    e una tabella Checklist |idCheck|Oggetto|Verificato|Data|

    lalepup ha scritto:


    io vorrei una maschera che mi associ tutti i 180 record della tabella Check a un determinato cliente
    Se questo è il quadro, hai semplicemente dimenticato di aggiungere alla tabella Checklist un campo numerico idCliente. Poi occorre creare la relazione uno-a-molti (con la spunta su "Applica integrità referenziale" fra il campo Clienti.idCliente e Checklist.idCliente. Una volta inquadrati i tuoi 180 record che fanno riferimento a "Parmalat SpA", devi scrivere dentro il campo Checklist.idCliente 180 volte l'idCliente associato a Parmalat SpA.
    Dopo tutta questa premessa è possibile costruire maschera/sottomaschera come abbiamo detto prima...ecc...ecc...
Devi accedere o registrarti per scrivere nel forum
8 risposte