It is currently 22 April 2025, 20:35 Advanced search

Filtro su collection di pannello con master

Questo forum è nato con lo scopo di raccogliere le proposte di modifica di Instant Developer e discuterne insieme.

Filtro su collection di pannello con master

Postby t.simoncini » 13 February 2014, 10:37

Per strutture documentali complesse, con INDE è possibile inserire dei sotto-pannelli con indicazione del pannello master.
In questo modo, se il pannello di dettaglio è collegato ad una classe per la quale è stata definita una collection sul documento principale, allora il pannello lavora automaticamente sulla collection del documento principale.
E tutto questo è perfetto.

Manca, secondo me, solo un "piccolo" particolare. Eventuali condizioni di where inserite sulla master query del pannello di dettaglio, vengono ignorate. In una situazione normale, può anche essere corretto; si presume che i dati del pannello debbano essere quelli della collection del documento.
Il problema nasce quando si vogliono filtrare i documenti presenti nel pannello di dettaglio.
Mi capita spesso, di dover fare videate dove una singola collection viene editata in più sotto-pannelli diversi, ognuno contenente un "set" dei record della collection del documento padre.

Un esempio sono le fatture del cliente.
Sulla classe CLIENTE ho la collection delle fatture (tutte), ma nella videata del cliente, voglio mostrare due pannelli: uno per le fatture di acquisto e uno per le fatture di vendita.

Attualmente gli unici due modi che ho trovato sono:
- creare più collection sul documento principale: il problema è che in questo caso, tutti gli automatismi sulla classe che riguardano la collection, devono essere duplicati.
- gestire la proprietà hidden sugli elementi della collection: il problema è che i pannelli non possono essere visibili contemporaneamente. Devono essere o in una tabbed view o in due pagine di pannello diverse; inoltre è necessario gestire il cambio di pagina per aggiornare lo stato hidden dei documenti.

Sarebbe comodo poter definire un filtro aggiuntivo (meglio ancora usare quello della master query di pannello) per indicare quali elementi della collection devono essere caricati nel pannello di dettaglio.
t.simoncini
 
Posts: 1585
Joined: 5 March 2012, 14:00

Re: Filtro su collection di pannello con master

Postby g.cassanelli » 13 February 2014, 10:39

Approvo alla grande
Informatica ! Meglio lavorare con il granito, è duro, ma è stabile ! - Computer Science ! Better to work with granite, it's hard, but it's stable !

Giuseppe Cassanelli http://www.lab-ud.com
User avatar
g.cassanelli
 
Posts: 2653
Joined: 9 November 2010, 19:00
Location: BOLOGNA

Re: Filtro su collection di pannello con master

Postby lucabaldini » 13 February 2014, 17:03

A dire il vero quel che chiedi si può già fare ed è anche molto semplice.

Basta implementare l'evento BeforeFind sul pannello detail e usare le proprietà QBEFilter dei campi di pannello per filtrare i dati.
Ti allego un esempio di funzionamento.
Se apri la videata CategorieDO e CategorieDOFiltrate puoi verificare che il pannello dettaglio mostra sempre i documenti non sospesi.. Per farlo il sistema, quando cambi il documento attivo nel pannello master, prende la sua collection detail e la attacca al pannello detail. Poi, siccome ci sono criteri QBE, li ri-applica al pannello detail filtrando i documenti che non corrispondono.

Code: Select all
IDCategoria               # prodotti in CategorieDO            # prodotti in CategorieDOFiltrate
     1                                 12                                   11
     2                                 12                                   11
     3                                 13                                   13
     4                                 10                                   10
     5                                  7                                    6
     6                                  6                                    2
     7                                  5                                    4
     8                                 12                                   12
Attachments
DO Detail Filter.zip
(402.81 KiB) Downloaded 225 times
User avatar
lucabaldini
Pro Gamma
Pro Gamma
 
Posts: 4990
Joined: 1 October 2010, 17:03
Location: Bologna

Re: Filtro su collection di pannello con master

Postby t.simoncini » 14 February 2014, 9:06

Per i pannelli di consultazione, non ci sono dubbi che questa sia la strada corretta. Per l'edit dei dati, però la situazione si complica.
Ti allego un piccolo progetto di esempio.

esempio.rar
(280.88 KiB) Downloaded 203 times

Se provi ad inserire un prezzo di acquisto, vedrai che la riga viene inserita anche nel pannello dei prezzi di vendita.

1.png
1.png (41.54 KiB) Viewed 3690 times


Le uniche due strade che sono riuscito a trovare, sono le due che ho indicato nel primo post. Se non ci sono troppi automatismi sulla collection conviene fare due collection sull'articolo, altrimenti bisogna ricorrere (ad esempio) ad una tabbed view e giocare con gli hidden. Non ho fatto l'esempio per mancanza di tempo, ma credo sia chiaro.
Se esiste un altro modo più semplice a cui non ho pensato, ben venga!
t.simoncini
 
Posts: 1585
Joined: 5 March 2012, 14:00

Re: Filtro su collection di pannello con master

Postby lucabaldini » 14 February 2014, 10:58

Beh, ma in inserimento non funzionerebbe nemmeno la where clause sul pannello. Quella non verrebbe applicata durante l'inserimento.
Credo che l'unica strada sia operare via codice...

Se ho capito bene, il tuo problema è che hai 2 pannelli che mostrano la stessa colection: nel primo pannello vuoi mostrare solo i prezzi di acquisto e nel secondo i prezzi di vendita... e hai una sola collection con tutti i prezzi.

Il problema è che quando inserisci un prezzo il sistema non sa se è di acquisto o di vendita e non applica le where-clause (o i criteri di ricerca, come ti ho suggerito io).... quindi ci devi pensare tu.

Io proverei nell'evento OnChangeRow del pannello e controllerei di che documento si tratta. Se è di acquisto e il documento è di vendita lo nasconderei... lo stesso farei nell'altro OnChangeRow del'altro pannello...

Ma ora mi sorge un dubbio... Così come è fatta la tua videata potresti avere problemi... Cosa deve succedere se l'utente inserisce un prezzo di vendita nel pannello Acquisto? Deve vedersì solo lì o si deve "spostare" nel pannello sotto?
User avatar
lucabaldini
Pro Gamma
Pro Gamma
 
Posts: 4990
Joined: 1 October 2010, 17:03
Location: Bologna

Re: Filtro su collection di pannello con master

Postby t.simoncini » 14 February 2014, 11:40

Il problema è che quando inserisci un prezzo il sistema non sa se è di acquisto o di vendita e non applica le where-clause (o i criteri di ricerca, come ti ho suggerito io).... quindi ci devi pensare tu.

Cosa deve succedere se l'utente inserisce un prezzo di vendita nel pannello Acquisto? Deve vedersì solo lì o si deve "spostare" nel pannello sotto?

Questo esempio è molto semplice, mi serviva per spiegare la situazione. In realtà nel gestionale, il tipo è preimpostato in base al pannello sul quale si opera. Non mi spaventa inserire qualche riga di codice per inserire automatismi di questo tipo.


Io proverei nell'evento OnChangeRow del pannello e controllerei di che documento si tratta. Se è di acquisto e il documento è di vendita lo nasconderei... lo stesso farei nell'altro OnChangeRow del'altro pannello...

Purtroppo non posso nascondere righe di tipo diverso in pannelli diversi. La proprietà hidden è del documento, non della riga di pannello. In questo caso devo mostrare i pannelli in due pagine diverse e gestire il "nascosto/visibile" sul cambio pagina.

La mia proposta iniziale era appunto di rendere disponibile un sistema che carica nel pannello solo alcune righe della collection. In alternativa, rendere disponibile tramite codice la possibilità di "nascondere" direttamente la riga di pannello, e non il documento della collection.
t.simoncini
 
Posts: 1585
Joined: 5 March 2012, 14:00

Re: Filtro su collection di pannello con master

Postby lucabaldini » 14 February 2014, 13:06

La mia proposta iniziale era appunto di rendere disponibile un sistema che carica nel pannello solo alcune righe della collection. In alternativa, rendere disponibile tramite codice la possibilità di "nascondere" direttamente la riga di pannello, e non il documento della collection.


Il sistema che carica solo alcune righe della collection c'è ed è il QBE... il problema è che non funziona in inserimento come hai visto tu e non funziona se vuoi mostrare entrambi i pannelli contemporaneamente dato che ciò che viene filtrato è il documento e non la riga...

L'unica soluzione che mi viene in mente è mostrare i due pannelli in due tab differenti... oppure, ancora più facile, fare due collection transient e nell'OnChangeRow del pannello master, prendi i documenti e li copy (addRef) nella corrispondente collection associata al pannello in cui vuoi mostrare quel documento. Ovviamente se permetti l'inserimento dai pannelli detail devi poi "spostare" il documento nella collection della testata, ri-aggiungendo per riferimento lo stesso documento nella collection del pannello in cui sta inserendo.
User avatar
lucabaldini
Pro Gamma
Pro Gamma
 
Posts: 4990
Joined: 1 October 2010, 17:03
Location: Bologna

Re: Filtro su collection di pannello con master

Postby t.simoncini » 14 February 2014, 16:05

Non avevo pensato alle collection transient con l'AddRef..... potrebbe essere una soluzione....
Grazie della dritta.
t.simoncini
 
Posts: 1585
Joined: 5 March 2012, 14:00

Re: Filtro su collection di pannello con master

Postby lucabaldini » 14 February 2014, 16:54

Figurati! E' pensato per quello... i documenti rimangono nella collection originale... ma vengono aggiunti per riferimento anche alla collection del pannello.
User avatar
lucabaldini
Pro Gamma
Pro Gamma
 
Posts: 4990
Joined: 1 October 2010, 17:03
Location: Bologna


Return to Proposte di modifica

Who is online

Users browsing this forum: No registered users and 12 guests