NUMBER %DOCRELSELECT%
Scopo: consente di effettuare
una selezione dei documenti oggetto di una navigazione specifica
rispetto ad un file di selezione oppure ad un intervallo di documenti
spEcificato con idonea sintassi.
Sintassi: | |||
%NUMBER% | %DOCRELSELECT% | (%STRING%* | filesele|range, |
%NUMBER%* | total[, | ||
%STRING% | sezione| | ||
%NUMBER% | regola]) |
Descrizione: permette, a partire da un file
di selezione o da un intervallo di documenti, di eseguire una navigazione
in base a regole specifiche indicate da regola,
se indicato, oppure in base alla regola generale.
regola, opzionale, se numerico può assumere
i seguenti valori:
1
regola "NAVIGA * DISCESA * ."
3
regola "NAVIGA NOPARENT * DISCESA * ."
5
corrispondente alla regola "NAVIGA * SALITA * ."
7
corrispondente alla regola "NAVIGA NOPARENT * SALITA * ."
Se regola è una stringa, specifica il nome
di una regola di navigazione.
Le regole, eventualmente espresse con più regole elementari,
debbono essere elencate nel loro ordine naturale indicando, in assenza di
una stringa di identificazione, un numero progressivo, oppure la stringa
di identificazione seguita da un carattere '_' e dal numero progressivo
(per ulteriori informazioni sulle regole di navigazione si rimanda a
'Programmazione di base' nella
sezione [RELAZ] di <nomearchivio>.ini che deve
obbligatoriamente esistere ed essere conforme alla base dati.
*filesele|range viene valorizzato prima
della chiamata alla %DOCRELSELECT% per indicare
il documento\i dal\i quali eseguire la navigazione.
Può specificare un file di selezione o un intervallo di numeri
fisici di documenti con la sintassi '*<Inizio>*<Fine>'
(entrambi gli estremi vengono compresi).
Per indicare un solo documento la sintassi diviene
'*<Inizio>*<Inizio>'.
La %DOCRELSELECT% ne sovrasciverà il
contenuto inserendovi il nome del file di selezione che contiene la
lista delle ramificazioni generate dalla navigazione
(p.e. se in input filesele contiene i documenti
'A', 'B' e 'C', in output filesele conterrà una
selezione complessa composta dai documenti generati dalla navigazione
rispetto ad 'A', una ulteriore lista di documenti generati dalla navigazione
rispetto a 'B' ecc...).
Per referenziare questa selezione nel modo consueto, è necessario
copiare su %CURSELPATH% il parametro in uscita,
e quindi usare %CURSEL% come argomento di
"/s" nei collegamenti che lo richiedono.
In total, dichiarato e inizializzato dal
chiamante, troveremo indicato il numero delle ramificazioni generate
dalla navigazione.
filesele e total
potranno essere utilizzati dalla %DOCRELGETSEL%
per estrarre le liste dei documenti che generano la navigazione.
Valore restituito: valore numerico
Torna 1 in caso di elaborazione eseguita correttamente.
Torna 0 in caso di errore generico.
Vedere anche: %DOCRELDELETE%, %DOCRELGETSEL%, %DOCRELNAVIGATE%, %DOCRELSETROOT%, %DOCRELINSERT%, %DOCRELEMPTY%, Database: relazioni gerarchiche
Esempio:
<!-- esempio di nomearchivio.ini -->
[RELAZ]
1=NAVIGA "TABELLA1" DISCESA "TABELLA2" .
<nomeregola>_1 = NAVIGA "TABELLA1" DISCESA "TABELLA3" .
<nomeregola>_2 = NAVIGA "TABELLA3" DISCESA "TABELLA2" .
%STRING%(frase, "([TABELLA]=\"TABELLA1\") E ([CAMPO1]=\"VALORE1\")")
%IF%(%4CALL%(frase, 1, 16, "CAMPO1"))
%NUMBER%(total, 0)
%STRING%(range, %CURSELPATH%)
<!-- esempio 1 in alternativa a esempio 2 -->
%IF%(%DOCRELSELECT%(range, total))
<!-- esempio 2 in alternativa a esempio 1 -->
%IF%(%DOCRELSELECT%(range, total, "<nomeregola>"))
%NUMBER%(totdoc, 0)
%STRING%(fileselforindex, "")
%REPEAT%(1, total)
%IF%(%DOCRELGETSEL%(fileselforindex, totdoc, %INDEX%, range))
%REPEAT%(1, totdoc)
<!-- mostra i documenti della navigazione
dell'index-esimo doc estratto da frase -->
%ENDREPEAT%
%ENDIF%
%ENDREPEAT%
%ENDIF%
%ENDIF%