SQL custom fields
CUSTOM-SQL checks per BDOCs
CAMPI CUSTOM-SQL
Per ogni tipo di documento è possibile inserire diversi controlli
personalizzati che consentono di eseguire verifiche e generare segnalazioni
all'utente in specifici contesti.
I controlli possono essere eseguiti in diversi momenti:
- COLONNA ELENCO (grid): genera un campo sulla grid dell'elenco dei documenti; questo campo contiene una query che viene eseguita e popola la colonna nella query; NON SI TRATTA DI UN CONTROLLO alla stregua dei tre casi seguenti
- ASSEGNAZIONE CONTO: al momento della selezione del conto
- PRIMA DEL SALVATAGGIO del documento -- praticamente durante il controllo di validazione del documento
- DOPO IL SALVATAGGIO del documento
Il controllo avviene attraverso l'esecuzione di una espressione SQL che deve generare un'espressione di tipo LONG VARCHAR() che viene valutata come qui di seguito specificato.
Il risultato della funzione deve iniziare con una prima riga costituita unicamente da uno dei seguenti valori numerici:
- 0 = TUTTO OK -- nessun messaggio da trasmettere all'utente
- 1 = MESSAGGIO
- 2 = WARNING -- segnalazione di errore non bloccante
- 3 = ERROR -- segnalazione di errore bloccante
La prima riga deve essere terminata con una sequenza ACAPO() (#13#10). Tutto quanto segue la prima riga forma l'oggetto del messaggio da trasmettere all'utente.
Se il risultato della funzione non inizia con nessuno dei codici sopra indicati:
- se è blank, il programma non fa nulla (valore 0 = TUTTO OK)
- se è NOT blank, il risultato viene trasmesso come messaggio (valore 1 = MESSAGGIO)
Invece di inserire direttamente il codice SQL, si consiglia caldamente l'utilizzo di FUNZIONI SQL che eseguono al loro interno tutti i controlli del caso.
SINTASSI DELL'ESPRESSIONE SQL
Viene considerata solamente la PRIMA COLONNA del PRIMO RECORD
restituito dalla sintassi SQL.
L'espressione SQL può utilizzare i seguenti simboli:
- $BOL_LO_KEY$ rappresenta la primary key del documento (table bolle). Occhio che il documento può anche non esistere (ancora)
- $BOL_STR_CONTO$ codice inapiciato del conto
SELECT FIRST '3' || ACAPO() || 'articolo errato = ' || BA_str_articolo FROM bolle_articoli WHERE (BA_lo_key_bolla = $PK$)
SELECT '1' || ACAPO() || PCO_cr_fido FROM pconti WHERE (PCO_str_codice = '
SELECT check_conto_documento(