CustomFunction ricorsive

E' l'area in cui è possibile condividere funzioni personalizzate nate dalla creatività e l'esperienza degli sviluppatori FileMaker

Moderatore: Moderatori

Rispondi
Bobbyboy
Messaggi: 29
Iscritto il: venerdì 21 aprile 2006, 2:00
Località: Venezia

CustomFunction ricorsive

Messaggio da Bobbyboy » venerdì 18 maggio 2007, 11:08

Ciao a tutti... c'ho provato, ma forse questa mattina proprio non connetto.
Dovrei fare una funzione ricorsiva semplice semplice... una cosa banalissima. Vediamo se qualcuno può darmi una dritta.
Dovrei fare questo semplice calcolo: Se la data è inferiore alla data odierna, aggiungi x anni. Se il risultato è ancora inferiore alla data odierna, aggiungi altri x anni... e via così finché il risultato diventa superiore alla data odierna.

Ho creato una CF che mi restituisce la data iniziale più x anni:
DataFinale ( DataIn ; nAnni ) -> [il risultato sarà: DataFinale ( 01/05/2002 ; 2 ) = 01/05/2004]

Ora: come creare la ricorsività?

Grazie mille a chi mi dà la dritta...
Bobby

book
Messaggi: 703
Iscritto il: lunedì 5 gennaio 2004, 1:00

Messaggio da book » venerdì 18 maggio 2007, 11:15

vedi che lo puoi fare senza funzioni personalizzate....

prendi il giorno ed il mese della 1 data e l'anno della data odierna.

poi verifica se questa data "composta" è inferiore alla data odierna...ed in caso affermativo aggiungi 1 anno.

Riccardo
FM 10Adv, winzooz...

Bobbyboy
Messaggi: 29
Iscritto il: venerdì 21 aprile 2006, 2:00
Località: Venezia

Messaggio da Bobbyboy » venerdì 18 maggio 2007, 11:21

Benissimo: If ( Data ( Mese ( Data_iniziale ) ; Giorno ( Data_iniziale ) ; Anno ( Data_iniziale ) ) < Get ( DataCorrente ) ; Data ( Mese ( Data_iniziale ) ; Giorno ( Data_iniziale ) ; Anno ( Data_iniziale ) + 1 ) )

Ma se questo risultato è ancora inferiore alla data odierna? Dovrei metterci un altro If... e così all'ennesima potenza finché non diventa superiore alla data odierna... Ricorsivamente, come faccio?

Grazie Rick!!!
Bobby

book
Messaggi: 703
Iscritto il: lunedì 5 gennaio 2004, 1:00

Messaggio da book » venerdì 18 maggio 2007, 11:31

no...

campo calcolato che prende il giorno ed il mese della data iniziale e l'anno della data odierna.

poi un'altro campo calcolato con: if (datacalcolata<dataodierna; datacalcolata aumentata di un anno; datacalcolata)

Riccardo
FM 10Adv, winzooz...

Bobbyboy
Messaggi: 29
Iscritto il: venerdì 21 aprile 2006, 2:00
Località: Venezia

Messaggio da Bobbyboy » venerdì 18 maggio 2007, 13:35

Ehm... ce l'ho fatta. In fondo non era poi così difficile, potevo pensarci un po' di più...

Codice: Seleziona tutto

Funzione Personalizzata: DataFinale ( start ; anni )

Consenti (

	end = Data ( Mese ( start ) ; Giorno ( start ) ; Anno ( start ) + anni ) ;
	If ( end < Get ( DataCorrente ) ; DataFinale ( end ; anni ) ; end )
)
A presto...
Bobby

Bobbyboy
Messaggi: 29
Iscritto il: venerdì 21 aprile 2006, 2:00
Località: Venezia

Messaggio da Bobbyboy » venerdì 18 maggio 2007, 13:36

Ehm... ce l'ho fatta. In fondo non era poi così difficile, potevo pensarci un po' di più...

Codice: Seleziona tutto

Funzione Personalizzata: DataFinale ( start ; anni )

Consenti (

	end = Data ( Mese ( start ) ; Giorno ( start ) ; Anno ( start ) + anni ) ;
	If ( end < Get ( DataCorrente ) ; DataFinale ( end ; anni ) ; end )
)
A presto...
Bobby

book
Messaggi: 703
Iscritto il: lunedì 5 gennaio 2004, 1:00

Messaggio da book » venerdì 18 maggio 2007, 17:23

...contento tu, contenti tutti... :roll:

Ciao Riccardo
FM 10Adv, winzooz...

Rispondi