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%