Condividi:        

scadenziario db

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

scadenziario db

Postdi nicholas » 02/07/09 10:11

finito lo scadenziario in excel, vorrei provara a farne uno in access.
ho una tabella dove ho campo cliente, campo scadenza e campo totaledocumento.
mi serve filtrare i dati per scadenze mensili, per cliente e sommare i dati per mese, poi per cliente e alla fine sommare i dati per un anno.
come faccio? :roll:
tutto è scritto, nulla è casuale. ma sarà la vita ad insegnarci a leggere!
nicholas
nicholas
Utente Senior
 
Post: 102
Iscritto il: 18/05/09 13:33

Sponsor
 

Re: scadenziario db

Postdi Flash30005 » 02/07/09 10:49

Parli di "filtrare" quindi si suppone una Query poi dici
e sommare i dati mese etc etc
e sembrerebbe che l'esigenza sia un report

Prova a realizzare un report con la procedura guidata che è anche molto intuitiva
Scegli tra gli oggetti > Report e poi clicca su Nuovo, segui la procedura guidata
avrai modo di personalizzare il raggruppamento per Cliente e Mese con opzione somma campo "totaledocumento"

Fai sapere
Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: scadenziario db

Postdi Flash30005 » 02/07/09 11:12

Se invece vuoi utilizzare una query che abbia quelle specifiche prova con questo codice da inserire nell'Sql di una query
Codice: Seleziona tutto
SELECT DISTINCTROW Tabella1.Cliente, Format$([Tabella1].[Data],'mmmm yyyy') AS [Data per mese], Sum(Tabella1.TotaleDocumento) AS [Somma Di TotaleDocumento]
FROM Tabella1
GROUP BY Tabella1.Cliente, Format$([Tabella1].[Data],'mmmm yyyy'), Year([Tabella1].[Data])*12+DatePart('m',[Tabella1].[Data])-1;


(la tabella con i dati si chiama Tabella1
Campo1 Cliente
Campo2 Data
Campo3 TotaleDocumento

In questo caso avrai solo il riepilogo Cliente / mese
un ulteriore riepilogo sulla stessa query non è tanto fattibile, in verità si potrebbe fare ma stonerebbe perché avresti ad ogni Cliente/mese la ripetizione della somma dir tutto l'anno su ogni record mese per quel cliente es.:
AAA Gennaio 100,00 870,00
AAA Febbraio 40,00 870,00
AAA Marzo 90,00 870,00
etc
Dove 870 sta per somma di tutti i mesi dell'anno

Quindi è consigliabile fare una seconda query della tabella1 ma che, questa volta, raggruppi per anno (invece che mese)
Codice: Seleziona tutto
SELECT DISTINCTROW Tabella1.Cliente, Format$([Tabella1].[Data],'yyyy') AS [Data per anno], Sum(Tabella1.TotaleDocumento) AS [Somma Di TotaleDocumento]
FROM Tabella1
GROUP BY Tabella1.Cliente, Format$([Tabella1].[Data],'yyyy'), Year([Tabella1].[Data]);


Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: scadenziario db

Postdi nicholas » 02/07/09 13:48

creato il report e mi dà in ordine per cliente e scadenza. quello che non riesco a fare è sommare i record del campo totaledocumento. come si fa ad inserire questo nel report?
tutto è scritto, nulla è casuale. ma sarà la vita ad insegnarci a leggere!
nicholas
nicholas
Utente Senior
 
Post: 102
Iscritto il: 18/05/09 13:33

Re: scadenziario db

Postdi nicholas » 02/07/09 14:28

ho fatto la query.
unico chiarimento: se io ho il cliente PINCO e questo ha 20 documenti con 20 Data diverse e 20 TotaleDocumento diversi, come faccio ad inserire i 20 documenti sempre saullo stesso cliente senza doverlo inserire come Cliente 20 volte?
tutto è scritto, nulla è casuale. ma sarà la vita ad insegnarci a leggere!
nicholas
nicholas
Utente Senior
 
Post: 102
Iscritto il: 18/05/09 13:33

Re: scadenziario db

Postdi Flash30005 » 02/07/09 15:33

La tabella raccoglie i dati suddivisi in campi (con i nomi in testata)
Tutti i campi determinano il record (riga)
tanti record sono la fonte dalla quale il database attinge per fare tutto il resto (query, report etc)

Ora nel tuo caso hai 3 campi
Cliente, Data, Totale
è chiaro che devi riempire manualmente (o automatizzando l'inserimento dati se sono già digitalizzati) tutti i campi con i rispettivi dati altrimenti l'output non è veritiero.
Se devi inserire i dati manualmente con la voce Cliente PINGO che ha 20 record puoi riempire il primo record e copiarlo per poi incollarlo 19 volte nella tabella (dopo aver incollato il secondo record puoi copiare questi due e incollarli, avrai 4 record che copierai e incollerari ottenendone 8, 8+8 = 16 e così via) variando i dati relativi alla data e al totale.
In questo caso eviti solo la digitazione nome Cliente ma gli altri campi vanno modificati manualmente.

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: scadenziario db

Postdi nicholas » 02/07/09 15:45

intendevo dire che il cliente è uno e allo stesso bisogna abbinare più scadenze e più totali documento.
come faccio?
tutto è scritto, nulla è casuale. ma sarà la vita ad insegnarci a leggere!
nicholas
nicholas
Utente Senior
 
Post: 102
Iscritto il: 18/05/09 13:33

Re: scadenziario db

Postdi nicholas » 03/07/09 06:00

mi spiego meglio: la mia tabella1 ha varie voci (indirizzo, cap, partita iva, ecc) oltre le 3 suddette.non posso ogni volta che inserisco un totale documento di PINCO ricompilare tutti i campi perchè ha poco senso e un database siffatto è poco utile. mi serve inserire una volta i dati generali e 100 o 20 o 200 volte solo i totali documento e le scadenze, così ho per cliente diciamo tot fatture di cui mi dà i totali mensili e annuali e un tot scadenze. se ciò è fattibile in excel, credo dovrebbe essrlo ancor più in access ma non so come si fa. forse con una relazione uno a molti, ma quale?
grazie ciao :mmmh:
tutto è scritto, nulla è casuale. ma sarà la vita ad insegnarci a leggere!
nicholas
nicholas
Utente Senior
 
Post: 102
Iscritto il: 18/05/09 13:33

Re: scadenziario db

Postdi nicholas » 03/07/09 07:01

mi servirebbe inoltre una terza query dove posso avere i totali per mese senza tener conto della suddivisione dei clienti.
grazie mille.
tutto è scritto, nulla è casuale. ma sarà la vita ad insegnarci a leggere!
nicholas
nicholas
Utente Senior
 
Post: 102
Iscritto il: 18/05/09 13:33

Re: scadenziario db

Postdi Flash30005 » 03/07/09 09:49

E' normale che l'anagrafica cliente, dove ci sono appunto i dati anagrafici faranno parte di una tabella a sé mentre dovrai avere una tabella per i dati di contabilità o vendite che riporterà solo i dati commerciali.
Queste due tabelle dovranno avere un campo comune e univoco che potrà essere Cliente o P.IVA.
L'inserimento dei dati andrà fatto solo su questa tabella con un menu (input) direttamente collegato alla tabella dati.
nelle relazioni dovrai mettere il join sul campo univoco tra la tabella anagrafica alla tabella dati, scegliendo il tipo di join da uno a molti (opzione 2 sul tipo di Join).
La query o report per data fattura o scadenze non dovranno riportare tutti i dati anagrafici (non occorrono), semmai solo per eventuale fatturazione dove è necessario riportare indirizzo e P.IVA (dell'anagrafica) e importo con la data presi dalla tabella dati.
Per quanto concerne la query riepilogo, crea una nuova query
scegli creazione guidata Query semplice, premi Ok
seleziona, nell'apposita finestra, la tabella dati
seleziona (tra i campi disponibili) solo Data e Importo usando > per portarli nella finestra Campi selezionati
premi avanti e inserisci l'opzione Riepilogo
premi Opzioni di riepilogo
spunta l'opzione Somma e premi Ok
al prossimo passaggio avrai la possibilità di raggruppare per date
sceglierai Mese
dai il nome alla query (es.: QScadenze_mensili)
alla fine avrai un codice Sql così
Codice: Seleziona tutto
SELECT DISTINCTROW Format$([Tabella3].[Data],'mmmm yyyy') AS [Data per mese], Sum(Tabella3.Importo) AS [Somma Di Importo]
FROM Tabella3
GROUP BY Format$([Tabella3].[Data],'mmmm yyyy'), Year([Tabella3].[Data])*12+DatePart('m',[Tabella3].[Data])-1;

Qualche consiglio:
Personalmente non lascio mai spazi nei nomi delle tabelle, query (mi agevola un eventuale sviluppo del Db nel caso dovessi creare delle macro) e inoltre ad una query inserisco come prima lettera la Q ad una tabella la T etc.
Cerco anche di non mettere nomi lunghi es. QScadMese è ugualmente intuitivo e ho 8 caratteri in meno del precedente (la lettera maiuscola di inizio parola mi evita di inserire l'underscore) ;)

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: scadenziario db

Postdi nicholas » 07/07/09 09:03

tutto ok.
ora ti spiego il resto.
ho 4 tabelle, 2 per clienti e 2 per fornitori ed ho creato le query che mi hai detto sia per gli uni che per gli altri.
devo però ora calcolare questo: ho iva mensile clienti (query) e iva mensile fornitori (query). separate funzionano benissimo.
non riesco però a relazionarle: cioè vporrei per mese prima e per anno poi lo scomputo tra iva vendite e iva acquisti.
come faccio?
idem vorrei per mese totaledocumentovenditaaaaa-totaledocumentoacquisto totale. come faccio?
grazie mille :)
tutto è scritto, nulla è casuale. ma sarà la vita ad insegnarci a leggere!
nicholas
nicholas
Utente Senior
 
Post: 102
Iscritto il: 18/05/09 13:33

Re: scadenziario db

Postdi Flash30005 » 07/07/09 09:40

Quando è possibile personalmente parto sempre dai dati originali (tabelle) e non da query (ripeto quando è possibile)
Vediamo se impostato così fa al caso tuo
immagino che hai la tabella Clienti con i dati di vendita e Fornitori con i dati di fornitori.
Metti in relazione il campo data
poi in una unica query scrivi il seguente codice
Codice: Seleziona tutto
SELECT DISTINCTROW Month(TClienti.Data) AS Mese, Sum(TClienti.Totale) AS Tot_Vend, Sum(TClienti.IVA) AS IVA_Vend, Sum(TFornitori.Totale) AS Tot_Acq, Sum(TFornitori.IVA) AS IVA_Acq, Sum(TClienti.IVA) - Sum(TFornitori.IVA) AS IVA_Debito
FROM TClienti INNER JOIN TFornitori ON Month(TClienti.Data) = Month(TFornitori.Data)
GROUP BY Month(TClienti.Data);

I campi e i nomi delle tabelle nella query li rinominerai come sono nel tuo database (fai attenzione a digitare bene i nomi)
Questa query raggruppa per mese
Tot Vendite
Iva Vendite
Tot Acquisti
Iva Acquisti
Iva Debito (differenza Iva tra Iva entrata e Iva uscita)
Per avere la stessa query per anno sostituisci la parola chiave Month con Year

Fai sapere
Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: scadenziario db

Postdi nicholas » 08/07/09 15:38

Tutto perfetto. ora dovrei fare questo:
ho in tabella clienti trotale documento e incassi. dovrei avere totale documento - incassi sia perw cliente che totali per mese e poi per anno.
idem per fornitore.
infine totale complessivo annuo fra clientin e fornitori già con pagamenti e incassi calcolati.
grazie mille.
:)
tutto è scritto, nulla è casuale. ma sarà la vita ad insegnarci a leggere!
nicholas
nicholas
Utente Senior
 
Post: 102
Iscritto il: 18/05/09 13:33

Re: scadenziario db

Postdi Flash30005 » 08/07/09 15:59

Nel codice Sql di una query inserisci questo
Codice: Seleziona tutto
SELECT DISTINCTROW TClienti.Cliente, month(TClienti.Data) as Mese, Sum(TClienti.Totale) AS [Totale Mese]
FROM TClienti
GROUP BY TClienti.Cliente, month(TClienti.Data);

Ottieni la somma totale per cliente e per mese (rinomina il nome campo secondo le tue esigenze)
Per avere Cliente e anno devi sostituire Month con Year es. month(TClienti.Data) in year(TClienti.Data)
Fai lo stesso per tabella fornitori sostituendo la tabella origine query es. dove trovi TClienti metterai TFornitori (ovunque)
Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: scadenziario db

Postdi nicholas » 09/07/09 07:46

ciao flash,
forse mi sono spiegato male.
quello che non so come fare è:
da un totale documento devo sottrarre un pagamento che a volte va a zero e a volte dà un residuo. come faccio?
fatto ciò devo avere i saldi (=totale documento-incasso) sia per cliente che poi per mese e alla fine per anno.
idem per i fornitori e qui credo sia ad hoc la formula ultima che mi hai dato.
grazie :)
tutto è scritto, nulla è casuale. ma sarà la vita ad insegnarci a leggere!
nicholas
nicholas
Utente Senior
 
Post: 102
Iscritto il: 18/05/09 13:33

Re: scadenziario db

Postdi Flash30005 » 09/07/09 09:19

Ciao Nicholas
Io non vedo qual'è il problema oppure dovrei vedere come è fatto il tuo database per capire dove e come intervenire ma penso che attraverso il forum e i vari consigli si possa acquisire sempre più conoscenza sull'uso di formule, codici vba, e codici sql quindi ritornando al tuo problema e alla mia query vorrei che tu imparassi a leggere il codice scritto all'interno e a modificarlo per adattarlo alle tue esigenze
Codice: Seleziona tutto
SELECT DISTINCTROW TClienti.Cliente, month(TClienti.Data) as Mese, Sum(TClienti.Totale) AS [Totale Mese]
FROM TClienti
GROUP BY TClienti.Cliente, month(TClienti.Data);
Come vedi la query prende in esame il campo Clienti della tabella TClienti (primo campo: TClienti.Cliente)
poi con
Codice: Seleziona tutto
month(TClienti.Data) as Mese
prende il mese di ogni data della tabella
infine con
Codice: Seleziona tutto
Sum(TClienti.Totale) AS [Totale Mese]
fa la somma del campo totale mettendo questo risultato in un campo rinominato (As = come) "Totale Mese"
(Il FROM significa da tabella TClienti e il GROUP By significa raggruppa per Cliente e Mese)

Ora a te occore che a questo totale deve essere detratto l'incasso, giusto? Suppongo che incasso sia sempre nella stessa tabella TClienti, quindi dovrai fare anche la somma di incasso detraendola dalla somma totale in questa maniera
Codice: Seleziona tutto
Sum(TClienti.Totale) - Sum(TClienti.Incasso)  AS [TotaleGen Mese]


Fai sapere
Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: scadenziario db

Postdi nicholas » 09/07/09 09:24

intendevo dire che non so come si fa la differenza in una query fra due voci di una stessa tabella. :oops:
tutto è scritto, nulla è casuale. ma sarà la vita ad insegnarci a leggere!
nicholas
nicholas
Utente Senior
 
Post: 102
Iscritto il: 18/05/09 13:33

Re: scadenziario db

Postdi nicholas » 09/07/09 09:35

in sintesi: cliente pinco, totale documento 10000, incasso 5000, saldo 5000. coome lo ottengo?
inoltre, se metto la data di incasso, la casella totale documento relativa a quel cliente mi può cambiare colore? esiste una formattazione condizionale come in excel?
grazie mille
tutto è scritto, nulla è casuale. ma sarà la vita ad insegnarci a leggere!
nicholas
nicholas
Utente Senior
 
Post: 102
Iscritto il: 18/05/09 13:33

Re: scadenziario db

Postdi Flash30005 » 09/07/09 09:51

Codice: Seleziona tutto
SELECT DISTINCTROW TClienti.Cliente, month(TClienti.Data) as Mese, Sum(TClienti.Totale) AS [Totale Mese], Sum(TClienti.Incasso) AS [Incasso Mese],  Sum(TClienti.Totale)- Sum(TClienti.Incasso) AS [Saldo Mese]
FROM TClienti
GROUP BY TClienti.Cliente, month(TClienti.Data);

Prova così, sempreché il campo Incasso esista nella tabella TClienti
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: scadenziario db

Postdi nicholas » 09/07/09 09:55

sì certo, il campo incasso è inserito nella tabella clienti.
grazie, provo e faccio sapere.
tutto è scritto, nulla è casuale. ma sarà la vita ad insegnarci a leggere!
nicholas
nicholas
Utente Senior
 
Post: 102
Iscritto il: 18/05/09 13:33


Torna a Applicazioni Office Windows


Topic correlati a "scadenziario db":


Chi c’è in linea

Visitano il forum: Nessuno e 39 ospiti

cron