Questa azione è richiamata all'inizio del modello, prima della visualizzazione della finestra di selezione.
Selezione su tabella
Serve principalmente a costruire la finestra di selezione. Si hanno due possibilità per preparare questa finestra:
sia fare appello alla finestra di selezione principale definita nell'oggetto (questo è fattibile se la tabella da esplorare è gestita da un oggetto)
sia costruire totalmente questa finestra di selezione.
Può servire ad interrompere il programma posizionando OK = 0.
Può servire a modificare il numero di elementi da visualizzare nella finestra di selezione, modificando la variabile adxmxl. Non è necessario salvarla, se ne occupa il supervisore.
caso di chiamata della finestra di selezione dell'oggetto
E' il caso più semplice. Si utilizzano i parametri dell'oggetto per visualizzare la finestra principale di questo oggetto. Le variabili da indicare sono le seguenti:
OBJET : Char, lunghezza 5.
Permette di identificare l'oggetto, per recuperare le informazioni necessarie alla visualizzazione della finestra.
Questa variabile deve essere indicata obbligatoriamente.
SUPP : Char, lunghezza 30.
Quando l'oggetto ha 2 elementi di chiave, permette di filtrare i record della tabella su un valore del primo campo di chiave.
Quindi se si vuole questo filtro, si alimenta questa variabile con il valore del primo campo di chiave.
OPTIONS : Char, lunghezza 10.
Permette di filtrare i record su dei filtri predefiniti nell'oggetto. Quindi si indicano i codici di "filtri di selezione" definiti nell'oggetto che si desidera applicare.
Aggiungendo il carattere "#", si filtrano i record attivi (cioè quelli il cui campo [F]ENAFLG=2) e si esegue l'azione FILTRE dell'oggetto.
Aggiungendo il carattere "|", si ordinano i record sul primo campo di chiave e poi sul secondo.
Aggiungendo il carattere "$", si apre la tabella dell'oggetto con l'abbreviazione del dizionario, anche se questa è già aperta. Ciò permette di evitare dei filtri residui o un riposizionamento parassita della classe [F].
La paginazione viene automaticamente presa in conto dal Supervisore.
caso di creazione di una finestra di selezione
In questo caso, bisogna costruire completamente la finestra. Si dovrà aprire (se non è già aperta) la tabella su cui è basata la selezione. Inoltre si dovrà precisare che questa classe [F] è la classe di default. Ci si limitaa 16 colonne nella costruzione della finestra. Per definire la finestra si hanno a disposizione le seguenti variabili:
NBCOL : Integer
E' il numero di colonne da visualizzare nella finestra. Il numero di colonne è limitato a 16.
TIT(NBCOL) : Char, lunghezza 30, dimensionato.
E' il titolo della colonna. Bisogna indicarlo per ogni colonna prevista nella finestra.
COL(NBCOL) : Char, lunghezza 50, dimensionato.
E' il nome del campo da visualizzare nella colonna. Bisogna indicarlo per ogni colonna prevista nella finestra.
TIT(0) : Char, lunghezza 30.
E' il titolo della finestra.
DEFPAG=1 : il Supervisore prende in carico la paginazione.
In entrambi i casi:
E' possibile modificare i valori di default delle seguenti variabili:
ORDRE : Char, lunghezza 250.
Permette di indicare l'ordinamento dei record.
Quando si è su una finestra generata da un oggetto, il supervisore ordina sulla chiave precisata sul folder "selezione", altrimenti ordina sulla chiave primaria.
Quando la chiave non è precisata nel folder "selezione" dell'oggetto, il supervisore assume la chiave primaria. Quando questa chiave primaria è composta da due elementi, il supervisore ordina di default sull'ultimo elemento oppure sull'insieme della chiave se si precisa OPTIONS="|" in questa azione.
Quando ci si trova su una finestra costruita, il supervisore ordina di default i record sulla prima colonna dichiarata nella finestra.
Questa variabile offre la possibilità di ordinare i record in un altro modo. In questa variabile viene indicato il nome di uno o più campi che appartengono alla tabella ma non necessariamente alla finestra. I nomi di campi sono separati tra loro dal carattere ";".
Esempio: ORDRE = "[F:ADI]NUMTAB;[F:ADI]CODE"
SENS : Integer
Permette di indicare il senso di ordinamento dei record.
Di default, l'ordinamento è ascendente. Verrà precisato il valore 2 in questa variabile per avere un ordinamento discendente.
START : Char, lunghezza 250.
Permette di identificare la colonna che alimenterà il campo da cui è stata attivata la finestra, quando l'utente avrà fatto la sua scelta.
Quando ci si trova su una finestra generata da un oggetto, il supervisore assume di default il campo della chiave primaria. Per una chiave a 2 componenti, il supervisore prende di default il secondo elemento di chiave altrimenti prende il primo quando si precisa OPTIONS="|" in questa azione.
Quando ci si trova su una finestra costruita, il supervisore prende di default la prima colonna dichiarata nella finestra.
Questa variabile offre la possibilità di prendere un'altra colonna. In questa variabile viene indicato il nome di un campo che appartiene alla finestra.
EXPSTART : Char, lunghezza 250.
Permette di indicare il record su cui verrà posizionato il cursore.
Di default il cursore sarà posizionato sul primo record il cui campo identificato dalla variabile START è maggiore o uguale al valore inserito. Tuttavia, è possibile indicare il posizionamento del cursore tramite la sua propria espressione. Sintassi identica alla variabile CRITERE.
CRITERE (1..7) : Char, lunghezza 250.
questi campi permettono di indicare un filtro di selezione dei record della tabella.
CRITCAR : Char, lunghezza 250.
questo campo permette di posizionare il cursore sull'elemento indicato. Sintassi identica alla variabile CRITERE.
SIZLIG & SIZCOL : integer
Permettono di modificare la dimensione della finestra che è di 10 righe e 60 colonne di default.
Queste 2 variabili sono inizializzate nel seguente modo: SIZLIG = 80 & SIZCOL = 240.
SIZLIG indica un numero di righe espresso in 1/8 di riga.
SIZCOL indica un numero di colonne espresso in 1/4 di colonna.
Esempio:
# finestra di selezione che si basa sulla descrizione dell'oggetto ITS, sulla quale si indica:
# il filtro di selezione CRITERE, l'ordinamento ORDRE, il campo che si potrà reperire al ritorno dalla selezione START
$S_ITV
Ifclalev([F:ITS])=0:LocalFileITMSALES:Endif
Ifclalev([F:ITM])=0:LocalFileITMMASTER:Endif
Ifclalev([F:ATZ])=0:LocalFileATABZON:Endif
LocalCharCODFIC:CODFIC="ITMSALES"
Link [ITS]With[ITM]ITM0=[ITS]ITMREFAs [KITS]
DefaultFile[KITS]
ORDRE ='ITMREF'
START ='ITMREF'
CRITERE='[F:ITM]ITMSTA=1 & [F:ITM]ITMREF>="'+VALEUR+'"'
OBJET="ITS"
Return