Database x fatture

di il
19 risposte

Database x fatture

Salve, sono un utente access autodidatta, ho fatto nel corso degli anni dei programmini artigianali che mi hanno dato molta soddisfazione ma fatti sempre in modo, suppongo, molto pittoresco.
Ora vorrei sviluppare un programmino per le fatture ma non capisco come si fa una cosa ed è da una settimana che ci studio ma volevo sapere se voi potete darmi un suggerimento.
Ho una tabella PRODOTTI (con IDprodotto chiave primaria) e una tabella FATTURE (con IDfattura chiave primaria).
Non so come fare a fare in modo che nella tabella FATTURE io possa inserire più prodotti in una singola fattura.
Cioè se ho per esempio IDfattura 5 (cioè la fattura numero 5) come faccio a metterci dentro più prodotti (per esempio l'aspirina che è l'IDprodotto numero 1 e il lasonil che è l'IDprodotto numero 2 e il malox che è l'IDprodotto numero 3) tutti insieme nella stessa fattura?
Siate il più semplici possibile perchè non sono un fenomeno?
grazie a chi risponde
Ciao Alberto

19 Risposte

  • Re: Database x fatture

    Ti consiglio di prendere spunto dal noto database NorthWind. In quel caso si parla di Ordini anzichè di Fatture, ma in concetto base è lo stesso.
    Per rispondere direttamente alla tua domanda occorre ragionare così:
    Una Fattura elenca/contiene molti Prodotti. Ma anche uno stesso Prodotto può apparire in molte Fatture.
    Ne consegue che Fatture e Prodotti sono in relazione molti-a-molti. Per realizzare questa relazione devi servirti di una tabella di congiunzione avente 2 campi chiave esterna IDFattura e IDProdotto. Tale tabella la nominerai DettagliFatture.
  • Re: Database x fatture

    Grazie Osvaldo.
    l'ho fatto ma non capisco se va bene perché adesso ho fatto una maschera dalla tabella DettagliFatture ma non so come fare x inserire più prodotti nella stessa fattura. ho provato a duplicare il campo idprodotto nella struttura della maschera ma poi se ci metto dei valori diversi impazzisce.
  • Re: Database x fatture

    Sei sicuro di voler preferire una sola maschera DettagliFatture? Io ci vedrei meglio una maschera/sottomaschera Fatture/DettagliFatture.
    Per il campo DettagliFatture.IDProdotto mi auguro tu abbia predisposto una casella combinata in modo da facilitarti l'input. Dopo di che è del tutto normale che questo campo "impazzisce" se non trova un dato esistente in Prodotti. A questo punto tu devi gestire l'evento "Non in elenco" (NotInList) della casella combinata. Leggi qui

    Se preferisci gestire tutto in maschera DettagliFatture, segui lo Scenario1.
    Se preferisci gestire maschera/sottomaschera Fatture/DettagliFatture, segui lo Scenario2.
  • Re: Database x fatture

    alberto871 ha scritto:


    Ho una tabella PRODOTTI (con IDprodotto chiave primaria) e una tabella FATTURE (con IDfattura chiave primaria).
    Non so come fare a fare in modo che nella tabella FATTURE io possa inserire più prodotti in una singola fattura.
    Banalmente, non devi: la tabella Fatture dovrebbe rappresentare la testata di una singola fattura, mentre per le righe devi predisporre una tabella FattureDettagli che contenga quindi le informazioni delle righe di dettaglio delle fatture.

    All'interno della tabella FattureDettagli avrai un campo IDProdotto per riferirti al prodotto inserito in quella specifica riga, e un campo IDFattura per identificare la fattura nella quale quella riga è stata inserita.

    Questo volendo produrre lo scenario più semplice in assoluto.

    In genere però, si tende a fare una copia dei dati salienti del prodotto (es. la descrizione), senza usare un ID se non a livello informativo, poiché se emetti una fattura per un determinato prodotto e in seguito ne cambi la descrizione, andrai così a cambiare anche i dati della fattura che, in quanto emessa, devono rimanere invariati nel tempo (e quindi è necessario farne una copia).

    Ciao!
  • Re: Database x fatture

    Grazie Osvaldo, gentilissimo. Cercherò di applicare le istruzioni che mi hai dato. Ci metterò un po' perché alcune cose di cui parli non le ho mai fatte e le devo approfondire. Ti farò sapere. grazie ancora ciao Alberto
  • Re: Database x fatture

    Grazie anche ad Alka per risposta, cercherò di seguire le istruzioni di Osvaldo e vedrò se riesco a risolvere
  • Re: Database x fatture

    Grazie anche ad Alka per risposta, cercherò di seguire le istruzioni di Osvaldo e vedrò se riesco a risolvere
  • Re: Database x fatture

    Per Osvaldo: sto facendo quello che mi hai detto sul link ma mi sono arenato perché non so come fare a creare il pulsante "imposta B", cioè non so come fare a fargli rinviare il valore del campo IDB. Il pulsante per aprire una maschera lo so creare ma il pulsante per riportare il valore di IDB non so come farlo funzionare
    ciao grazie
  • Re: Database x fatture

    1. Chiarisci se hai preferito lo Scenario1 (maschera DettagliFatture) o Scenario2 (maschera/sottomaschera Fatture/DettagliFatture).
    2. Esponi i nomi propri dei tuoi campi "significativi", specie quelli chiave
    3. Soprattutto mostra i codici che hai scritto tu.
  • Re: Database x fatture

    Dunque, ho preferito lo scenario 2 con maschera e sottomaschera. per il momento mi sto limitando a eseguire le istruzioni che mi hai dato quindi non ho nominato nessun campo in modo personale. non ho scritto nessun codice perché non so scrivere i codici ne il vba, uso le macro e le creazioni guidate. vorrei capire come si fa a fare il pulsante Imposta B perché non so come fare a ordinargli di fare il valore di ritorno del campo IDB. sono riuscito a creare il pulsante per aprire la maschera b ma il pulsante che restituisca il valore IDB non so come farlo
  • Re: Database x fatture

    Queste le istruzioni da seguire:
    Creare macro ImpostaB
    1. Apri una macro in visualizzazione struttura e scrivi il seguente set di azioni:
    ImpostaValore 
        Elemento: [Maschere]![A]![C]![IDB] 
        Espressione: [Maschere]![B]![IDB] 
    Chiudi 
        Tipo oggetto: Maschera 
        Nome oggetto: B 
    VaiAControllo 
        Nome controllo: C 
    RieseguiQuery 
        Nome controllo: IDB 
    2. Salva con nome la macro ImpostaB

    Associare pulsante ImpostaB alla macro ImpostaB
    1. Visualizzazione struttura maschera B
    2. Clic mouse destro sul pulsante ImpostaB e scegli Proprietà, scheda Eventi
    3. Su clic: ImpostaB
    4. Salva tutto e chiudi maschera B
  • Re: Database x fatture

    alberto871 ha scritto:


    Dunque, ho preferito lo scenario 2 con maschera e sottomaschera. per il momento mi sto limitando a eseguire le istruzioni che mi hai dato quindi non ho nominato nessun campo in modo personale. non ho scritto nessun codice perché non so scrivere i codici ne il vba, uso le macro e le creazioni guidate. vorrei capire come si fa a fare il pulsante Imposta B perché non so come fare a ordinargli di fare il valore di ritorno del campo IDB. sono riuscito a creare il pulsante per aprire la maschera b ma il pulsante che restituisca il valore IDB non so come farlo
    Permettimi un consiglio.
    Come te, anche io mi sono cimentato in un programma del genere, e all'inizio avevo i tuoi stessi dubbi.

    Francamente, lavorare con "maschera e sottomaschera", magari all'inizio può sembrarti molto semplice e magari anche "pittoresco", alla lunga già diventa poco pratico, e ti spiego subito il perché.
    Fintanto hai 3-4 dettagli in fattura, non ci sono problemi; ma se devi iniziare a inserire 10-15 dettagli di articoli, allora "Maschera e sottomaschera" comuncia "a starti stretto".

    Per una questione di praticità, oltre che per facile lettura e, conseguente rappresentazione documentale, ti consiglio di prendere in considerazione solamente la questione "Dettaglio".

    Mi spiego meglio: se metti la sottomaschera, questa ha una certa altezza, una certa larghezza, ma poi, quando vai "oltre", che fai?
    La barra di scorrimento magari la puoi usare per la parte di imputazione dei dati di vendita, ma quando vai a metterla in un report cominciano i problemi.

    Io personalmente (ti parlo da ragioniere) ho costruito una maschera basata su una query creata solamente sul dettaglio della fattura; c'è ovviamente una parte iniziale, dove tu imputi i dati generali della fattura (Ragione sociale, indirizzo, P.IVA, Num. fatt., data ft e via discorrendo); una volta che io ho inserito il "cappello" della fattura, il sistema mi genera una query di accodamento, nella quale inserisco la chiave di archiviazione (costruita da me, senza usare numerazioni automatiche) e i dati del "cappello", tranne (ovviamente) l'imponibile, l'IVA e il totale che verrà calcolata successivamente.

    Da quel momento inserisco i dettagli degli articoli (che ovviamente, eventualmente avranno anche aliquote diverse a seconda del genere di articolo venduto), e ogni volta che inserisco un dettaglio, ci saranno le fatidiche caselle (Imponibile, Imposta, Totale) che si aggiornano volta per volta che inserisco i dettagli; finito l'inserimento, il sistema va a creare una Query di aggiornamento del "cappello" della fattura", nella quale si provvede solamente a inserire, nel record con la chiave creata, i dati mancanti di Imponibile, IVA e Totale.

    Considera che, per tranquillità, ho ritenuto opportuno di relazionare (con relazione uno-a-molti) i dettagli della fattura al "cappello", così da poter sempre avere una visuale sul complesso della fattura.

    Lo stesso discorso, vale anche per la trasformazione in cartaceo (per la ft. elettronica è un caso a parte, ma ben si sposa a quest'architettura), dove il report è costruito su una query creata sui dettagli della fattura e non sul "cappello", dove si provvede a collegare la nuda e cruda registrazione contabile al dettaglio fattura.

    Spero di essermi spiegato bene; se c'è qualcosa che non capisci dimmelo e cercherò di essere più chiaro.
  • Re: Database x fatture

    Grazie Carlo,
    sto cercando con fatica perché mi mancano proprio le basi di eseguire le istruzioni di Osvaldo.
    Quando ho finito, analizzo bene quello che mi hai scritto e se c'è qualcosa che non capisco (ahimè mi sembra parecchio) ti chiedo bene. grazie per il momento ciao
  • Re: Database x fatture

    Osvaldo grazie mille, funziona!!! non capisco benissimo quello che ho fatto ma, seguendo le tue istruzioni, adesso fa quello di cui avevo bisogno. grazie ancora, gentilissimo. è bello vedere come gira bene access! cari saluti
    x Carlo: se mi dai qualche istruzione su come fare il programma proverei anche la tua soluzione, per me è sempre tutta esperienza
Devi accedere o registrarti per scrivere nel forum
19 risposte