Prendere solo il più recente  Risolto!

Utilizzo dei portali in un database FileMaker

Moderatore: Moderatori

Bloccato
superbuc
Messaggi: 146
Iscritto il: lunedì 8 ottobre 2012, 19:04
Versione FileMaker: 16
Sistema operativo: MAC OSX
Località: Roma - Rieti - Milano
Contatta:

Prendere solo il più recente

Messaggio da superbuc » martedì 6 settembre 2016, 15:11

Sto rifacendo completamente un vecchio DB in Fox Pro, con Filemaker 15 PAdvanced, Hosting su FMS 15.

Ho una tabella che contiene, in relazione ai prodotti del magazzino, 10 righe che rappresentano 10 magazzini.
Ogni riga, ovvero ogni magazzino, ha una serie di campi con la giacenza, pezzi in entrata e in uscita, riordino, ecc.

Queste righe del magazzino 1/2/3/...10 danno il totale dei movimenti, e dunque solo la più recente mi interessa.
Tutte le altre sono statistiche e archivio, e al momento non le voglio tenere.

L'unico campo che ho, che può essere forse considerato un ID, è una KEY del tipo: _49C0EZ32X, _49C0EZ32Y , ecc.

Ora, come faccio a dire a FM di prendermi solo la più recente di queste righe? Le voglio mettere in un portale, che ovviamente non viene bene, e voglio anche usare lo stesso script/istruzione per eliminare tutte le righe dei movimenti vecchi.

Spero sia chiaro, metto due immagini. Una di come dovrebbe essere, l'altra di come mi viene, ovviamente, quando per un articolo ci sono molti movimenti.


Come dovrebbe essere, preso da Fox Pro:
Screenshot 2016-09-06 15.09.06.jpg

Come viene il portale in FM15:
Non hai i permessi necessari per visualizzare i file allegati in questo messaggio.
Utilizzo FM16 Pro Adv, su Mac Pro. FM Server 16 e 14 in hosting esterno (fmphost).
Soluzioni sviluppate su FM Go 16 - Gestionali personalizzati a sviluppo costante - lolligroup.com

Avatar utente
PIG-NAH
Messaggi: 2564
Iscritto il: martedì 7 agosto 2007, 2:00
Località: BIG BANG

Re: Prendere solo il più recente

Messaggio da PIG-NAH » mercoledì 7 settembre 2016, 8:17

Somma(nometabella::entrate) - Somma(nometabella::uscite) :?:
FM8 ADV XP SP3

superbuc
Messaggi: 146
Iscritto il: lunedì 8 ottobre 2012, 19:04
Versione FileMaker: 16
Sistema operativo: MAC OSX
Località: Roma - Rieti - Milano
Contatta:

Re: Prendere solo il più recente

Messaggio da superbuc » mercoledì 7 settembre 2016, 9:52

Eh magari fosse così semplice...
La riga più recente - per il medesimo magazzino (es 001) e il dato articolo - è GIÀ la somma di tutti quelli precedenti.

Ho pensato di mettere come condizione l'ordine nel grafico relazioni, ma se ordino per la key, che poi mi da l'età della riga, non cambia ovviamente nulla.
Io devo prendere i numeri che sono nella riga più recente, ed escludere gli altri, e questo per ogni articolo (50.000) e per ogni magazzino (10).
Le righe di questa tabella movimenti sono 250.000 ca.
A mano non si può fare ovviamente.
Utilizzo FM16 Pro Adv, su Mac Pro. FM Server 16 e 14 in hosting esterno (fmphost).
Soluzioni sviluppate su FM Go 16 - Gestionali personalizzati a sviluppo costante - lolligroup.com

Avatar utente
PIG-NAH
Messaggi: 2564
Iscritto il: martedì 7 agosto 2007, 2:00
Località: BIG BANG

Re: Prendere solo il più recente

Messaggio da PIG-NAH » giovedì 8 settembre 2016, 8:55

10 tabelle, una per magazzino e 10 portali di una riga ?
FM8 ADV XP SP3

superbuc
Messaggi: 146
Iscritto il: lunedì 8 ottobre 2012, 19:04
Versione FileMaker: 16
Sistema operativo: MAC OSX
Località: Roma - Rieti - Milano
Contatta:

Re: Prendere solo il più recente

Messaggio da superbuc » giovedì 8 settembre 2016, 9:58

No, la tabella è unica e ha i campi (per semplificare ne metto solo 4, sono parecchi di più)

0) KEY / ID
1) Codice magazzino
2) Codice articolo
3) totale uscite
4) totale entrate

Esempio di record:

0) _AE45677
1) 001
2) C123
3) 20
4) 0

Poi vengono usati 5 pezzi dal n. 3 ad esempio e il record successivo è:

0) _AE45678
1) 001
2) C123
3) 15
4) 0
Utilizzo FM16 Pro Adv, su Mac Pro. FM Server 16 e 14 in hosting esterno (fmphost).
Soluzioni sviluppate su FM Go 16 - Gestionali personalizzati a sviluppo costante - lolligroup.com

Avatar utente
PIG-NAH
Messaggi: 2564
Iscritto il: martedì 7 agosto 2007, 2:00
Località: BIG BANG

Re: Prendere solo il più recente

Messaggio da PIG-NAH » venerdì 9 settembre 2016, 8:54

La cosa migliore è di flaggare il record più recente via script.
Ogni volta che inserisci un nuovo movimento cancelli il flag precedente e flagghi quello nuovo.
Il campo Flag lo metti nella relazione per il portale.
Potesti provare anche con un calcolato ma siccome il calcolo non è memorizzabile ci sono problemi per l'indicizzazione
mentre via script vai tranquillo.
FM8 ADV XP SP3

superbuc
Messaggi: 146
Iscritto il: lunedì 8 ottobre 2012, 19:04
Versione FileMaker: 16
Sistema operativo: MAC OSX
Località: Roma - Rieti - Milano
Contatta:

Re: Prendere solo il più recente

Messaggio da superbuc » venerdì 9 settembre 2016, 9:21

Ottimo, questo va bene da qui in poi, e lo inserirò sicuramente.

Secondo te come posso fare per quelli passati, che ovviamente non hanno un flag ?
L'unica discriminante è la Key, dovrei dargli come relazione per il portale di prendere per un determinato articolo, per un determinato magazzino, la Key in formato alfanumerico più recente. E' possibile in qualche modo ?

Mi chiedo come facessero a farlo funzionare prima, con un gestionale basato su Visual Fox Pro.
Utilizzo FM16 Pro Adv, su Mac Pro. FM Server 16 e 14 in hosting esterno (fmphost).
Soluzioni sviluppate su FM Go 16 - Gestionali personalizzati a sviluppo costante - lolligroup.com

Avatar utente
PIG-NAH
Messaggi: 2564
Iscritto il: martedì 7 agosto 2007, 2:00
Località: BIG BANG

Re: Prendere solo il più recente

Messaggio da PIG-NAH » venerdì 9 settembre 2016, 11:30

Quando hai inserito il campo flag puoi ordinare per articolo e per ID e poi con un loop flagghi solo il campo
del record che corrisponce all'ID più recenete.
Lo script è un po' complicato, lavora su una copia.
FM8 ADV XP SP3

superbuc
Messaggi: 146
Iscritto il: lunedì 8 ottobre 2012, 19:04
Versione FileMaker: 16
Sistema operativo: MAC OSX
Località: Roma - Rieti - Milano
Contatta:

Re: Prendere solo il più recente  Risolto!

Messaggio da superbuc » giovedì 22 settembre 2016, 16:06

Fatto, molto complicato ma fatto.
Ho preso la lista dei movimenti, messi in ordine in base al campo KEY, e preso solo il più recente.
Tutto con un loop in uno script.
Alla fine ho risolto, grazie
Utilizzo FM16 Pro Adv, su Mac Pro. FM Server 16 e 14 in hosting esterno (fmphost).
Soluzioni sviluppate su FM Go 16 - Gestionali personalizzati a sviluppo costante - lolligroup.com

Bloccato