Newsgroup: it.comp.appl.access
Titolo: Calcolare scadenza 30gg DF FM oppure 60gg DF FM

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

Ciao normalmente uso dateadd() e aggiungo giorno 30 o 60 DF se poi é fine mese faccio poi un ulteriore calcolo

 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
--

Grazie per le risposte,
Non sono molto esperto, e nel caso dovrei modificare quella stringa in che modo?
Grazie ancora
Fabrizio


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

 
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

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

Domanda come ragioni per fine mese di febbraio o luglio?

Non ho capito la domanda?

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

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.

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

 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

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

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	


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

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.
 
 

Mi spiace fare ammattire anche voi....

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...

 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

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
 
 
 

Grazie ma aggiungi la colonna finemeserata1

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

Comunque anche se al posto del No metto -1 e del Sì 0 il risultato è uguale

 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)
)

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...

Non capisco cosa non funziona. Prova ad aggiungere 60 gg a quelle date

No no, ma avrei bisogno che considerasse i mesi sempre di 30 giorni come per esempio fa a febbraio o in altri mesi...

A parte il rebus: non ho mai visto febbraio di 30 gg
 
Fai esempi e idenziando cosa funziona e cosa no

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    

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)
 
 

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..

Si..nella tabella il DF è No e il DF FM è a Sì..

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

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..

Creati una serie di esempi e dicci cosa vuoi ottenere. Non ho ancora capito il mese di febbraio di 30 giorni.

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...


attendo esempi
comunque 15/2/2014 30 gg commerciali come dici tu allora dovrebbe essere 15/febbraio+1(visto che e' 30)/2014
 

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

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

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....

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...

Correggo..la stringa va bene..il problema è sull db dell'altro pc..quindi penso di aver risolto

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

CHE PESCI PIGLIARE?
 
mi mandi la tabella degli esempi con la relativa query?
 
la mia funziona

Ti posso inviare direttamente il db di esempio?

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

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
