Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Calcolare scadenza 30gg DF FM oppure 60gg DF FM

1,318 views
Skip to first unread message

Fabrizio

unread,
Feb 24, 2014, 9:58:04 PM2/24/14
to
Salve a tutti,
ho adattato un db di esempio trovato in rete al mio db fatturazione per calcolare la scadenza delle fatture di vendita...gira tutto molto bene, solo che facendo delle simulazioni con fatturazione a dicembre, non mi prende come scadenza l'anno successivo, ovvero il 2015...questo nel caso in cui utilizzi il "fine mese"..in altri casi come il 30gg DF o 60gg DF funziona benissimo...nella query di calcolo è inserito la seguente riga:
Scad1: IIf([fineMeserata1]=-1;DateSerial(Year([data]);Month([data]+[Giornorata1])+1;0);[data]+[giornorata1])
Ho provato a variare le numerazioni senza però esito...
Dov'è l'errore?
Grazie per l'aiuto
Fabrizio

pfmarro

unread,
Feb 25, 2014, 5:59:11 AM2/25/14
to
Ciao normalmente uso dateadd() e aggiungo giorno 30 o 60 DF se poi é fine mese faccio poi un ulteriore calcolo

Paolo opg

unread,
Feb 25, 2014, 6:36:09 AM2/25/14
to
Fabrizio <fabriz...@gmail.com> wrote in
news:e86a21fc-d20f-4ed3...@googlegroups.com:
devi fare i calcoli sulle date e non sui pezzi delle date.

se consideri separatamente il mese dall'anno andrai sempre incontro a
questo tipo di problemi.

calcola il dffm usando la data e non i pezzi separati.


--
Paolo opg

BE AWARE that this post uses a fake reply-to address
to contact me write to:
janickg ( at ) hotmail ( dot ) com
--

Fabrizio

unread,
Feb 26, 2014, 12:00:08 PM2/26/14
to
Grazie per le risposte,
Non sono molto esperto, e nel caso dovrei modificare quella stringa in che modo?
Grazie ancora
Fabrizio

pfmarro

unread,
Feb 27, 2014, 6:51:50 AM2/27/14
to
ecco le 2 date

- se devo solo aggiungere GiornoRata1 alla Data
DateAdd("d",[GiornoRata1],[Data]) AS Scad_New,

per il fine mese della data dopo aver aggiunto GiornoRata1 (vado al primo del mese successivo e tolgo 1 cosi' sono sicuro dell'ultimo del mese)

DateAdd("d",-1,CDate("01" & "/" & Month(DateAdd("d",[GiornoRata1],[Data]))+1 & "/" & Year(DateAdd("d",[GiornoRata1],[Data]))) AS FineMese

Fabrizio

unread,
Mar 9, 2014, 11:36:57 AM3/9/14
to

Grazie a tutti per l'aiuto..
Allora ho inserito nel campo query questo come da consiglio...
Scad1: IIf([fineMeserata1]=Sì;DateAdd("d";-1;CDate("01" & "/" & Month(DateAdd("d";[GiornoRata1];[Data]))+1 & "/" & Year(DateAdd("d";[GiornoRata1];[Data])))))

e se lavora da solo va bene, ma quando poi a fine riga aggiungo la variante scadenza DF, ovvero così...

Scad1: IIf([fineMeserata1]=Sì;DateAdd("d";-1;CDate("01" & "/" & Month(DateAdd("d";[GiornoRata1];[Data]))+1 & "/" & Year(DateAdd("d";[GiornoRata1];[Data]);IIf([fineMeserata1]=No;DateAdd("d";[GiornoRata1];[Data])))

Da errore dicendo che ci sono troppe parentesi chiuse, togliendole una alla volta mi da errore di espressione

Sto ammattendo.....anche perche su un pc al posto del "d" vuole "g"....

Grazie per la pazienza e per l'aiuto
fabrizio

Fabrizio

unread,
Mar 9, 2014, 11:42:46 AM3/9/14
to
Vorrei mi inoltre restituisse una data come se i mesi fossero tutti di trenta gg, ovvero per esempio 60gg df data 20/02/2014 scadenza 30/04/2014
grazie ancora

pfmarro

unread,
Mar 9, 2014, 3:05:54 PM3/9/14
to
Domanda come ragioni per fine mese di febbraio o luglio?

Fabrizio

unread,
Mar 9, 2014, 3:19:24 PM3/9/14
to
Non ho capito la domanda?

Fabrizio

unread,
Mar 9, 2014, 3:27:30 PM3/9/14
to
Forse intendevi come si comporta in quelle date..Questa stringa:
Scad1: IIf([fineMeserata1]=Sì;DateAdd("d";-1;CDate("01" & "/" & Month(DateAdd("d";[GiornoRata1];[Data]))+1 & "/" & Year(DateAdd("d";[GiornoRata1];[Data])))))

Messa da sola nel campo della query va benissimo per tutto l'anno, è solo quando intendo aggiungere la variante:
IIf([fineMeserata1]=No;DateAdd("d";[GiornoRata1];[Data])))
dopo il ; finale per calcolare i giorni DF che nascono i problemi...
fabrizio

Fabrizio

unread,
Mar 9, 2014, 3:34:28 PM3/9/14
to
In pratica vista la mia scarsa familiarità, non riesco a far funzionare questo:
Scad1: IIf([fineMeserata1]=Sì;DateAdd("d";-1;CDate("01" & "/" & Month(DateAdd("d";[GiornoRata1];[Data]))+1 & "/" & Year(DateAdd("d";[GiornoRata1];[Data]);IIf([fineMeserata1]=No;DateAdd("d";[GiornoRata1];[Data])))

Mi da errore e non riesco a salvare la query prima ancora di sapere se mi da un risultato giusto.

Fabrizio

unread,
Mar 9, 2014, 3:38:54 PM3/9/14
to
Con le tue indicazioni la prima parte mi da il risultato desiderato, ma il secondo IIf non so...avrei bisogno dei 30 o i 60 gg df considerando i mesi tutti di 30gg

gilbert...@gmail.com

unread,
Mar 9, 2014, 5:16:19 PM3/9/14
to
Il giorno domenica 9 marzo 2014 20:38:54 UTC+1, Fabrizio ha scritto:
> Con le tue indicazioni la prima parte mi da il risultato desiderato, ma il secondo IIf non so...avrei bisogno dei 30 o i 60 gg df considerando i mesi tutti di 30gg

se fai degli esempi penso sia meglio

tieni conto che se GiornoRata1 = 60 aggiunge 60
se GiornoRata1 = 30 aggiunge 30

Fabrizio

unread,
Mar 10, 2014, 5:39:57 AM3/10/14
to
Grazie per la risposta...

Si certo riguardo ai giorni 30 o 60 della tua risposta, ma avrei bisogno che considerasse i mesi di 30 giorni...

La stinga messa così non mi da errori e riesco a salvare la query:

Scad1: IIf([fineMeserata1]=Sì;DateAdd("d";-1;CDate("01" & "/" & Month(DateAdd("d";[GiornoRata1];[Data]))+1 & "/" & Year(DateAdd("d";[GiornoRata1];[Data]))));IIf([fineMeserata1]=No;DateSerial(Year([Data]);Month([Data]+[Giornorata1])+1;0);[Data]+[giornorata1]))

Però non esce il risultato desiderato

Data ordine GiornoRata1 modPaga Scad1
03/01/2014 60 Bonifico 60 gg D.F. 31-mar-14
27/02/2014 60 Bonifico 60 gg D.F. 30-apr-14
28/02/2014 60 Bonifico 60 gg F.M. 30-apr-14
10/03/2014 60 Bonifico 60 gg F.M. 31-mag-14
10/03/2014 60 Bonifico 60 gg D.F. 31-mag-14
10/12/2014 60 Bonifico 60 gg D.F. 28-feb-14
10/03/2014 60 Bonifico 60 gg F.M. 31-mag-14

Abbiate pazienza

fabrizio

Fabrizio

unread,
Mar 10, 2014, 6:16:23 AM3/10/14
to
Mi sto avvicinando ma ancora non ci sono:

Mettendo questo nel campo della query:

Scad1: IIf([fineMeserata1]=Sì;DateAdd("d";-1;CDate("01" & "/" & Month(DateAdd("d";[GiornoRata1];[Data]))+1 & "/" & Year(DateAdd("d";[GiornoRata1];[Data]))));IIf([fineMeserata1]=No;DateAdd("d";[GiornoRata1];[Data])))-1

Ottengo questo:

Data ordine GiornoRata1 modPaga Scad1 PercRata1
03/01/2014 60 Bonifico 60 gg D.F. 03-mar-14
27/02/2014 60 Bonifico 60 gg D.F. 27-apr-14
*28/02/2014 60 Bonifico 60 gg F.M. 29-apr-14
10/03/2014 60 Bonifico 60 gg F.M. 30-mag-14
*10/03/2014 60 Bonifico 60 gg D.F. 08-mag-14
*10/12/2014 60 Bonifico 60 gg D.F. 07-feb-15
10/03/2014 60 Bonifico 60 gg F.M. 30-mag-14
*10/12/2014 60 Bonifico 60 gg F.M. 27-feb-15

Ma i dati con asterisco non sono corretti....sto diventando matto...
fabrizio

pfmarro

unread,
Mar 10, 2014, 7:07:14 AM3/10/14
to
ciao un cosiglio di come faccio quando ho un problema con iif

creo una query
select ...
,DateAdd("d";-1;CDate("01" & "/" & Month(DateAdd("d";[GiornoRata1];[Data]))+1 & "/" & Year(DateAdd("d";[GiornoRata1];[Data]))))
,
DateAdd("d";[GiornoRata1];[Data])))-1

vedi se le singole colonne funzionano
se funzionano allora e' la iif che ha dei problemi

Saluti

Fabrizio

unread,
Mar 10, 2014, 7:26:31 AM3/10/14
to
Ciao e grazie

Usate separatamente la prima quella del FM DF va benissimo, compreso il salto all'anno successivo:

Data ordine GiornoRata1 modPaga Scad1
03/01/2014 60 Bonifico 60 gg D.F.
27/02/2014 60 Bonifico 60 gg D.F.
28/02/2014 60 Bonifico 60 gg F.M. 30/04/2014
10/03/2014 60 Bonifico 60 gg F.M. 31/05/2014
10/07/2014 60 Bonifico 60 gg D.F.
10/12/2014 60 Bonifico 60 gg D.F.
15/12/2014 60 Bonifico 60 gg D.F.
10/12/2014 60 Bonifico 60 gg F.M. 28/02/2015

la seconda invece :

Data ordine GiornoRata1 modPaga Scad1
03/01/2014 60 Bonifico 60 gg D.F. 03/03/2014
27/02/2014 60 Bonifico 60 gg D.F. 27/04/2014
28/02/2014 60 Bonifico 60 gg F.M.
10/03/2014 60 Bonifico 60 gg F.M.
10/07/2014 60 Bonifico 60 gg D.F. 07/09/2014
10/12/2014 60 Bonifico 60 gg D.F. 07/02/2015
15/12/2014 60 Bonifico 60 gg D.F. 12/02/2015
10/12/2014 60 Bonifico 60 gg F.M.


Fabrizio

unread,
Mar 10, 2014, 7:27:09 AM3/10/14
to
Mi spiace fare ammattire anche voi....

Fabrizio

unread,
Mar 10, 2014, 7:34:39 AM3/10/14
to
Inoltre noto che Il FM DF usata da sola da un risultato corretto, messa insiema all'altra sballa...vicevera il DF se usata da sola sballa mentre se usata insiema da un risultato giusto...

pfmarro

unread,
Mar 10, 2014, 7:59:20 AM3/10/14
to
Il giorno lunedì 10 marzo 2014 12:34:39 UTC+1, Fabrizio ha scritto:
> Inoltre noto che Il FM DF usata da sola da un risultato corretto, messa insiema all'altra sballa...vicevera il DF se usata da sola sballa mentre se usata insiema da un risultato giusto...

per nostra semplicità
trascrivi alcune righe con calcoli corretti e non
ovviamente evidenziando i calcoli non corretti, meglio se ricordi la stringa SQL della query

Fabrizio

unread,
Mar 10, 2014, 8:13:56 AM3/10/14
to
Ok..giusto...i risultati con * per me sono errati...
Allora usate separatamente, la prima:
Scad1: IIf([fineMeserata1]=No;DateAdd("d";[GiornoRata1];[Data]))-1

Risultato:
Data ordine GiornoRata1 modPaga Scad1
03/01/2014 60 Bonifico 60 gg D.F. 03/03/2014
27/02/2014 60 Bonifico 60 gg D.F. 27/04/2014
28/02/2014 60 Bonifico 60 gg F.M.
10/03/2014 60 Bonifico 60 gg F.M.
10/07/2014 60 Bonifico 60 gg F.M.
*10/12/2014 60 Bonifico 60 gg D.F. 07/02/2015
*15/12/2014 60 Bonifico 60 gg D.F. 12/02/2015
10/12/2014 60 Bonifico 60 gg F.M.

La seconda:
Scad1: IIf([fineMeserata1]=Sì;DateAdd("d";-1;CDate("01" & "/" & Month(DateAdd("d";[GiornoRata1];[Data]))+1 & "/" & Year(DateAdd("d";[GiornoRata1];[Data])))))

Risultato è giusto:
Data ordine GiornoRata1 modPaga Scad1
03/01/2014 60 Bonifico 60 gg D.F.
27/02/2014 60 Bonifico 60 gg D.F.
28/02/2014 60 Bonifico 60 gg F.M. 30/04/2014
10/03/2014 60 Bonifico 60 gg F.M. 31/05/2014
10/07/2014 60 Bonifico 60 gg F.M. 30/09/2014
10/12/2014 60 Bonifico 60 gg D.F.
15/12/2014 60 Bonifico 60 gg D.F.
10/12/2014 60 Bonifico 60 gg F.M. 28/02/2015

Messe insieme:
Scad1: IIf([fineMeserata1]=Sì;DateAdd("d";-1;CDate("01" & "/" & Month(DateAdd("d";[GiornoRata1];[Data]))+1 & "/" & Year(DateAdd("d";[GiornoRata1];[Data]))));IIf([fineMeserata1]=No;DateAdd("d";[GiornoRata1];[Data])))-1

Risultato:
Data ordine GiornoRata1 modPaga Scad1
03/01/2014 60 Bonifico 60 gg D.F. 03/03/2014
27/02/2014 60 Bonifico 60 gg D.F. 27/04/2014
*28/02/2014 60 Bonifico 60 gg F.M. 29/04/2014
10/03/2014 60 Bonifico 60 gg F.M. 30/05/2014
*10/07/2014 60 Bonifico 60 gg F.M. 29/09/2014
*10/12/2014 60 Bonifico 60 gg D.F. 07/02/2015
*15/12/2014 60 Bonifico 60 gg D.F. 12/02/2015
*10/12/2014 60 Bonifico 60 gg F.M. 27/02/2015



pfmarro

unread,
Mar 10, 2014, 8:44:46 AM3/10/14
to
Grazie ma aggiungi la colonna finemeserata1

Fabrizio

unread,
Mar 10, 2014, 9:43:07 AM3/10/14
to
Eccola:
Data ordine GiornoRata1 modPaga Scad1 PercRata1 FineMeseRata1
03/01/2014 60 Bonifico 60 gg D.F. 03/03/2014 100 0
27/02/2014 60 Bonifico 60 gg D.F. 27/04/2014 100 0
28/02/2014 60 Bonifico 60 gg F.M. 29/04/2014 100 -1
10/03/2014 60 Bonifico 60 gg F.M. 30/05/2014 100 -1
10/07/2014 60 Bonifico 60 gg F.M. 29/09/2014 100 -1
10/12/2014 60 Bonifico 60 gg D.F. 07/02/2015 100 0
15/12/2014 60 Bonifico 60 gg D.F. 12/02/2015 100 0
10/12/2014 60 Bonifico 60 gg F.M. 27/02/2015 100 -1

Fabrizio

unread,
Mar 10, 2014, 9:45:22 AM3/10/14
to
Comunque anche se al posto del No metto -1 e del Sì 0 il risultato è uguale

pfmarro

unread,
Mar 10, 2014, 12:42:39 PM3/10/14
to
Il giorno lunedì 10 marzo 2014 14:45:22 UTC+1, Fabrizio ha scritto:
> Comunque anche se al posto del No metto -1 e del Sì 0 il risultato è uguale

la stringa SQL e'
IIf([fineMeserata1]=No,DateAdd("d",[GiornoRata1],[Data])-1,DateAdd("d",-1,CDate("01" & "/" & Month(DateAdd("d",[GiornoRata1],[Data]))+1 & "/" & Year(DateAdd("d",[GiornoRata1],[Data]))))) AS MeseOK


ti ricordo che IIF(condizione;se verificata;non verificata)

non capisco perche' fai IIF(condizione;se verificata;IIF(condizione=no;se verificata;non verificata)
)

Fabrizio

unread,
Mar 10, 2014, 2:09:55 PM3/10/14
to
Grazie...
Non è che uso quella condizione per partito preso...trovo quella soluzione in rete e la provo, non ho la capacità tecnica di stabilire cosa meglio o peggio...
Ho inserito quanto mi hai inviato e va quasi tutto bene, salvo:
Data ordine GiornoRata1 modPaga Scad1 PercRata1 FineMeseRata1
03/01/2014 60 Bonifico 60 gg D.F. 03/03/2014 100 0
27/02/2014 60 Bonifico 60 gg D.F. 27/04/2014 100 0
28/02/2014 60 Bonifico 60 gg F.M. 30/04/2014 100 -1
10/03/2014 60 Bonifico 60 gg F.M. 31/05/2014 100 -1
*10/07/2014 60 Bonifico 60 gg D.F. 07/09/2014 100 0
*10/12/2014 60 Bonifico 60 gg D.F. 07/02/2015 100 0
*15/12/2014 60 Bonifico 60 gg D.F. 12/02/2015 100 0
10/12/2014 60 Bonifico 60 gg F.M. 28/02/2015 100 -1

Oramai che ci sei aiutami fino alla fine...

pfmarro

unread,
Mar 10, 2014, 2:26:46 PM3/10/14
to
Non capisco cosa non funziona. Prova ad aggiungere 60 gg a quelle date

Fabrizio

unread,
Mar 10, 2014, 2:33:31 PM3/10/14
to
No no, ma avrei bisogno che considerasse i mesi sempre di 30 giorni come per esempio fa a febbraio o in altri mesi...

pfmarro

unread,
Mar 10, 2014, 3:06:44 PM3/10/14
to
A parte il rebus: non ho mai visto febbraio di 30 gg

Fai esempi e idenziando cosa funziona e cosa no

Fabrizio

unread,
Mar 10, 2014, 3:33:33 PM3/10/14
to
Si certamente avrei bisogno che considerasse il mese commerciale, ovvero come sotto, mesi tutti di 30 giorni anche quelli che ne hannp 31 o 28 come febbraio..
Cosa che fa nella prima parte della simulazione e non nella seconda..sto parlando del DF, il FM va bene

*10/07/2014 60 Bonifico 60 gg D.F. 07/09/2014 sbagliata
fattura 10/07 scadenza 10/09/2014 giusta
*10/12/2014 60 Bonifico 60 gg D.F. 07/02/2015 sbagliata
fattura 10/12/2014 scadenza 10/02/2015 giusta
*15/12/2014 60 Bonifico 60 gg D.F. 12/02/2015 sbagliata
fattura 15/12/2014 scadenza 15/02/2015 giusta

pfmarro

unread,
Mar 10, 2014, 4:43:14 PM3/10/14
to
una domanda hai una tabella e un query relativa per fare delle prove?

ho creato una tabella scadenzario con i tuoi dati e ho fatto delle prove

SELECT Data, GiornoRata1, modPaga, Tipo, Scad1, PercRata1, FineMeseRata1, IIf([fineMeserata1]=No,DateAdd("d",[GiornoRata1],[Data]))-1 AS Prima, IIf([fineMeserata1]=Yes,DateAdd("d",-1,CDate("01" & "/" & Month(DateAdd("d",[GiornoRata1],[Data]))+1 & "/" & Year(DateAdd("d",[GiornoRata1],[Data]))))) AS Seconda, IIf([fineMeserata1]=Yes,DateAdd("d",-1,CDate("01" & "/" & Month(DateAdd("d",[GiornoRata1],[Data]))+1 & "/" & Year(DateAdd("d",[GiornoRata1],[Data])))),IIf([fineMeserata1]=No,DateAdd("d",[GiornoRata1],[Data])))-1 AS KO_MeseInsieme, IIf([fineMeserata1]=No,DateAdd("d",[GiornoRata1],[Data])-1,DateAdd("d",-1,CDate("01" & "/" & Month(DateAdd("d",[GiornoRata1],[Data]))+1 & "/" & Year(DateAdd("d",[GiornoRata1],[Data]))))) AS MeseOK
FROM Scadenzario;

nell'ultimo messaggio dici che non funziona
Certo perche' FinemeseRata1 deve essere False (0) e non True (-1)


Fabrizio

unread,
Mar 11, 2014, 3:50:58 AM3/11/14
to
Bgiorno e ancora grazie per l'attenzione...
Si faccio le prove su una query a se..
Ma come ho detto con la tua ultima stringa va benissimo il FM DF..anche il DF perche in realta sono 60 gg successivi alla Df..però in questo caso avrei bisogno che la query considerasse tutti i mesi do 30 gg..ovvero data fattura per esempio 25/02/2014..60gg Df scadenza 25/04/2014..anche se i mesi in mezzo sono di 28 o 30 o 31..compreso il salto all'anno successivo..nn so se chiedo troppo o se sono riuscito a spiegarmi..
Message has been deleted
Message has been deleted

Fabrizio

unread,
Mar 11, 2014, 4:24:06 AM3/11/14
to
Si..nella tabella il DF è No e il DF FM è a Sì..

Fabrizio

unread,
Mar 11, 2014, 4:45:47 AM3/11/14
to
La stringa:
IIf([fineMeserata1]=No,DateAdd("d",[GiornoRata1],[Data])-1,DateAdd("d",-1,CDate("01" & "/" & Month(DateAdd("d",[GiornoRata1],[Data]))+1 & "/" & Year(DateAdd("d",[GiornoRata1],[Data])))))
Va bene, ma la parte:
IIf([fineMeserata1]=No,DateAdd("d",[GiornoRata1],[Data])-1
È giusta perche somma esattamente 60 gg alla data fattura ma avrei bisogno che considerasse nel calcolo i mesi tutti di 30 giorni (mesi commerciali) salto anno compreso..forse ora mi sono spiegato meglio..
Fabrizio

Fabrizio

unread,
Mar 11, 2014, 6:38:36 AM3/11/14
to
Le stringhe sono corrette e danno il risultato giusto..ma ne caso del Df considera 60gg df o 30 gg df di calendario solare e non di calendario commerciale...quasto intendevo dire..

pfmarro

unread,
Mar 11, 2014, 10:31:12 AM3/11/14
to
Creati una serie di esempi e dicci cosa vuoi ottenere. Non ho ancora capito il mese di febbraio di 30 giorni.

Fabrizio

unread,
Mar 11, 2014, 10:42:08 AM3/11/14
to
Ok..stasera al pc te li faccio avere..
Aggiungo adesso che la stringa lavora perfettamente, ma il risultato ( sto parlando della scadenza 30 o 60 data fattura) mi da 30 o 60 giorni successivi alla data fattura, quindi di calendario, quando invece oo vorrei fossero 30 o 60 giorni di calendario commerciale..
Se una fattura ha come data per esempio 15/02/2014 con scadenza 30 gg , la data di scadenza che deve uscire è 15/03/2014..andando a vedere non ci sono 30 gg differenza fra le due date..ma per la scadenza ho bisogno che il calcolo usato sia su calendario mensile commerciale e nn solare...

pfmarro

unread,
Mar 11, 2014, 11:11:50 AM3/11/14
to
attendo esempi
comunque 15/2/2014 30 gg commerciali come dici tu allora dovrebbe essere 15/febbraio+1(visto che e' 30)/2014

Fabrizio

unread,
Mar 11, 2014, 11:30:34 AM3/11/14
to
Si..mè venuto fi scrivere 15/02/2014 a caso...ma se la fattura avesse come data 15/07/2014 se aggiungo 30 gg df esce 16/08/2014 mentre vorrei 15/08/2014 cmq stasera posto gli esempi..
Ti ringrazio ancora e mi scuso con tutti per questo argomento eccessivamente lungo dovuto principalmente alla mia difficoltâ nello spiegare la necessitá.
Fabrizio

Fabrizio

unread,
Mar 11, 2014, 3:24:12 PM3/11/14
to
Allora...la stringa usata dietro tuo consiglio con qualche aggiustamento di parentesi è questa:
Scad1: IIf([fineMeserata1]=No;DateAdd("d";[GiornoRata1];[Data])-1;DateAdd("d";-1;CDate("01" & "/" & Month(DateAdd("d";[GiornoRata1];[Data]))+1 & "/" & Year(DateAdd("d";[GiornoRata1];[Data])))))

Il risultato relativo al DF FM è tutto esatto...
Quello relativo al DF è questo:

Dataordine GiornoRata1 modPaga Scad1 FineMeseRata1
03/01/2014 60 Bonifico 60 gg D.F. 03/03/2014 0 giusto
27/02/2014 60 Bonifico 60 gg D.F. 27/04/2014 0 giusto
28/02/2014 60 Bonifico 60 gg D.F. 28/04/2014 0 giusto
10/03/2014 60 Bonifico 60 gg D.F. 08/05/2014 0 10/03/2014
10/07/2014 60 Bonifico 60 gg D.F. 07/09/2014 0 10/07/2014
10/12/2014 60 Bonifico 60 gg D.F. 07/02/2015 0 10/02/2015
15/12/2014 60 Bonifico 60 gg D.F. 12/02/2015 0 15/02/2015
10/12/2014 60 Bonifico 60 gg D.F. 07/02/2015 0 10/12/2015

Sul lato destro ho messo quelle giuste e le date secondo il calendario commerciale che il risultato dovrebbe dare...in pratica quando i mesi sono di trenta giorni e anche a febbraio riporta la scadenza giusta, quando invece il mese è di 31 allora sballa...sballare non è esatto, fa il calcolo a 60 giorni matematico e non commerciale...
Spero di averti spiegato la situazione...
Fabrizio

Fabrizio

unread,
Mar 11, 2014, 3:31:39 PM3/11/14
to
Credo comunque di aver risolto, almeno sembra che giri tutto bene con questa stringa:

Scad1: IIf([fineMeserata1]=No;DateAdd("d";Day([Data])*-1;DateAdd("m";[GiornoRata1]/30+1;[Data]));DateAdd("d";-1;CDate("01" & "/" & Month(DateAdd("d";[GiornoRata1];[Data]))+1 & "/" & Year(DateAdd("d";[GiornoRata1];[Data])))))

Se me la controlli....

Fabrizio

unread,
Mar 11, 2014, 3:51:35 PM3/11/14
to
Ora però qualcuno mi deve spiegare perche su un pc va tutto regolare e su un'altro pc la scadenza me la mette tutta a fine mese...
Roba da matti..anzi matto ci divento io...

Fabrizio

unread,
Mar 12, 2014, 12:06:16 AM3/12/14
to
Correggo..la stringa va bene..il problema è sull db dell'altro pc..quindi penso di aver risolto

Fabrizio

unread,
Mar 12, 2014, 4:35:54 PM3/12/14
to
Mi dovete scusare, pensavo di aver risolto ma non mi funziona niente, ricapitolando, la stringa:

Scad1: IIf([fineMeserata1]=No;DateAdd("d";[GiornoRata1];[Data])-1;DateAdd("d";-1;CDate("01" & "/" & Month(DateAdd("d";[GiornoRata1];[Data]))+1 & "/" & Year(DateAdd("d";[GiornoRata1];[Data])))))

Risultati filtrarti, il DF FM
Data ordine Scad1 GiornoRata1 modPaga FineMeseRata1

13/02/2014 30/04/2014 60 Bonifico 60 gg F.M. -1
14/03/2014 31/05/2014 60 Bonifico 60 gg F.M. -1
14/07/2014 30/09/2014 60 Bonifico 60 gg F.M. -1
*31/12/2014 31/03/2015 60 Bonifico 60 gg F.M. -1
Va tutto bene meno che al salto dell'anno nuovo

Risultati filtrarti, il DF

Data ordine Scad1 GiornoRata1 modPaga FineMeseRata1

17/01/2014 17/03/2014 60 Bonifico 60 gg D.F. 0
24/01/2014 24/03/2014 60 Bonifico 60 gg D.F. 0
24/01/2014 24/03/2014 60 Bonifico 60 gg D.F. 0
24/01/2014 24/03/2014 60 Bonifico 60 gg D.F. 0
28/01/2014 28/03/2014 60 Bonifico 60 gg D.F. 0
31/01/2014 31/03/2014 60 Bonifico 60 gg D.F. 0
*11/07/2014 08/09/2014 60 Bonifico 60 gg D.F. 0
*11/12/2014 08/02/2015 60 Bonifico 60 gg D.F. 0

Non so più che pesci prendere...
fabrizio

gilbert...@gmail.com

unread,
Mar 12, 2014, 5:17:53 PM3/12/14
to
CHE PESCI PIGLIARE?

mi mandi la tabella degli esempi con la relativa query?

la mia funziona

Fabrizio

unread,
Mar 13, 2014, 1:59:52 PM3/13/14
to
Ti posso inviare direttamente il db di esempio?

Fabrizio

unread,
Mar 13, 2014, 2:30:47 PM3/13/14
to
Comunque ecco il tutto:
Tabella
Data ordine TipoPagamento DataScadGiusta
03/01/2014 Bonifico 60 gg D.F. 03/03/2014
03/02/2014 Bonifico 60 gg D.F. 03/04/2014
28/02/2014 Bonifico 60 gg D.F. 28/04/2014
03/04/2014 Bonifico 60 gg D.F. 03/06/2014
03/05/2014 Bonifico 60 gg D.F. 03/07/2014
03/07/2014 Bonifico 60 gg D.F. 03/09/2015
03/09/2014 Bonifico 60 gg D.F. 03/11/2014
03/12/2014 Bonifico 60 gg D.F. 03/02/2015
03/01/2014 Bonifico 60 gg F.M. 31/03/2014
10/01/2014 Bonifico 60 gg F.M. 31/03/2014
10/02/2014 Bonifico 60 gg F.M. 30/04/2014
28/02/2014 Bonifico 60 gg F.M. 30/04/2014
10/03/2014 Bonifico 60 gg F.M. 31/05/2014
10/04/2014 Bonifico 60 gg F.M.. 30/06/2014
13/05/2014 Bonifico 60 gg F.M. 31/07/2014
14/06/2014 Bonifico 60 gg F.M. 30/08/2014
14/07/2014 Bonifico 60 gg F.M. 30/09/2014
14/08/2014 Bonifico 60 gg F.M. 31/10/2014
14/09/2014 Bonifico 60 gg F.M. 30/11/2014
14/10/2014 Bonifico 60 gg F.M. 31/12/2014
15/11/2014 Bonifico 60 gg F.M. 31/01/2015
15/12/2014 Bonifico 60 gg F.M. 28/02/2015

Sql della query:
SELECT tblFatture.DataFattura, tblFatture.TipoPagamento, IIf([fineMeserata1]=No,DateAdd("d",[GiornoRata1],[DataFattura])-1,DateAdd("d",-1,CDate("01" & "/" & Month(DateAdd("d",[GiornoRata1],[DataFattura]))+1 & "/" & Year(DateAdd("d",[GiornoRata1],[DataFattura]))))) AS Scad1, tblFatture.DataScadGiusta
FROM tblFatture INNER JOIN TPagamenti ON tblFatture.TipoPagamento = TPagamenti.NomePagamento;

Risultato della Query:
Data ordine TipoPagamento Scad1 DataScadGiusta
03/01/2014 Bonifico 60 gg D.F. 03/03/2014 03/03/2014
03/02/2014 Bonifico 60 gg D.F. 03/04/2014 03/04/2014
28/02/2014 Bonifico 60 gg D.F. 28/04/2014 28/04/2014
03/04/2014 Bonifico 60 gg D.F. 01/06/2014 03/06/2014
03/05/2014 Bonifico 60 gg D.F. 01/07/2014 03/07/2014
03/07/2014 Bonifico 60 gg D.F. 31/08/2014 03/09/2015
03/09/2014 Bonifico 60 gg D.F. 01/11/2014 03/11/2014
03/12/2014 Bonifico 60 gg D.F. 31/01/2015 03/02/2015
03/01/2014 Bonifico 60 gg F.M. 31/03/2014 31/03/2014
10/01/2014 Bonifico 60 gg F.M. 31/03/2014 31/03/2014
10/02/2014 Bonifico 60 gg F.M. 30/04/2014 30/04/2014
28/02/2014 Bonifico 60 gg F.M. 30/04/2014 30/04/2014
10/03/2014 Bonifico 60 gg F.M. 31/05/2014 31/05/2014
13/05/2014 Bonifico 60 gg F.M. 31/07/2014 31/07/2014
14/06/2014 Bonifico 60 gg F.M. 31/08/2014 30/08/2014
14/07/2014 Bonifico 60 gg F.M. 30/09/2014 30/09/2014
14/08/2014 Bonifico 60 gg F.M. 31/10/2014 31/10/2014
14/09/2014 Bonifico 60 gg F.M. 30/11/2014 30/11/2014
14/10/2014 Bonifico 60 gg F.M. 12/01/2014 31/12/2014
15/11/2014 Bonifico 60 gg F.M. 31/01/2015 31/01/2015
15/12/2014 Bonifico 60 gg F.M. 28/02/2015 28/02/2015

Tabella dei pagamenti ( ho messo la parte iniziale, le rate successive non entrano):

NomePagamento GiornoRata1 FineMeseRata1
30-60-90 DF 30 0
4 Mesi 30 0
8 Mesi 30 -1
90 gg.Df Fm 90 -1
Assegno 0 -1
Assegno 30 gg D.F. 30 0
Bonifico 0 0
Bonifico 30 gg F.M. DF 30 -1
Bonifico 30-60 gg F.M. 30 -1
Bonifico 30-60-90-120 30 0
Bonifico 60 gg D.F. 60 0
Bonifico 60 gg F.M. 60 -1
Pagato 0 0
R.B 30 gg D.F. 30 0
R.B. 30 Giorni F.M. 30 -1
R.B. 30-60-90 Giorni F.M.30 -1
R.B. 60 gg D.F. 60 0
R.B. 60-120 F.M. 60 -1
R.B. 60-90 F.M 60 -1
Riba 90 gg D.F 90 0
Rid Bancario 15 gg data Fattura 15 0
Rimessa Diretta 0 0

fabrizio

Fabrizio

unread,
Mar 14, 2014, 7:12:07 AM3/14/14
to
Ho provato anche questa sql:

Scad1: IIf([fineMeserata1]=No;DateAdd("d";Day([DataFattura])*-1;DateAdd("m";[GiornoRata1]/30+1;[DataFattura]));DateAdd("d";-1;CDate("01" & "/" & Month(DateAdd("d";[GiornoRata1];[DataFattura]))+1 & "/" & Year(DateAdd("d";[GiornoRata1];[DataFattura])))))

Con questo risultato:

Data ordine TipoPagamento Scad1 DataScadGiusta
03/01/2014 Bonifico 60 gg D.F. 31/03/2014 03/03/2014
03/02/2014 Bonifico 60 gg D.F. 30/04/2014 03/04/2014
28/02/2014 Bonifico 60 gg D.F. 30/04/2014 28/04/2014
03/04/2014 Bonifico 60 gg D.F. 30/06/2014 03/06/2014
03/05/2014 Bonifico 60 gg D.F. 31/07/2014 03/07/2014
03/07/2014 Bonifico 60 gg D.F. 30/09/2014 03/09/2015
03/09/2014 Bonifico 60 gg D.F. 30/11/2014 03/11/2014
03/12/2014 Bonifico 60 gg D.F. 28/02/2015 03/02/2015
0 new messages