Data ultimo aggiornamento: 13/06/2012

Clicca per accedere al sito di NTS Informatica
Clicca per accedere all'argomento Clicca per accedere all'argomento Clicca per accedere all'argomento Clicca per accedere all'argomento
Clicca per accedere al sito di NTS Informatica

Definizione Procedure

Nome programma: BSIEPROC.DLL
Moduli richiesti: Qualsiasi

Le procedure sono delle porzioni di codice Visual Basic Script che l'utente può impostare, allo scopo di eseguire delle operazioni sui dati non previste o particolari. Possono avere 2 funzionalità:

Esistono 4 differenti tipi di procedure, le quali hanno diverse modalità di definizione e impiego:

  1. Function: sono procedure, racchiuese fra le parole chiave Function - End Function, devono restituire in uscita un valore.
  2. Sub: sono procedure, racchiuse fra le parole chiave Sub - End Sub, che non restituiscono valori ma eseguono solo delle operazioni.
  3. Expression: è una espressione che, in seguito alla valutazione, restituisce un risultato il cui tipo è lo stesso di quello dei componenti la espressione.
  4. SQL Query: è una istruzione SQL di comando (UPDATE, INSERT o DELETE) che viene fatta eseguire sul database di destinazione; non utilizza lo Script Engine.

Funzioni e espressioni possono essere utilizzate nella corrispondenza campi per attribuire un valore ad un campo in fase di impostazione di un profilo di import/export.

Le variabili utilizzabili all'interno delle procedure

Esistono delle variabili, oggetto e non, che possono essere utilizzate all'interno delle procedure. Queste variabili sono valide in qualsiasi momento:

Un'altra categoria di variabili, utilizzabili all'interno delle procedure, sono quelle che contengono i valori dei campi del record di origine e quelle che contengono i valori dei campi di destinazione, mano a mano che vengono calcolati. Particolare attenzione è da prestare alla validità dei dati contenuti in questi variabili, soprattutto quelle che contengono i valori di destinazione. Queste variabili sono utili per eseguire operazioni particolare mediante le procedure, effettuare dei calcoli fra campi, ecc.

Le variabili che contengono i valori dei campi di origine, sono definite con il nome IeIn(Livello relazione)(Nome campo) dove (Livello relazione) è un numero che identifica il livello di relazione fra le corrispondenze tabelle (da 1 a 6 possibili livelli di relazione) e (Nome campo) è il nome del campo del record di origine. Le variabili che contengono i valori dei campi di destinazione, sono definite con il nome IeOu(Livello relazione)(Nome campo) dove (Livello relazione) è un numero che identifica il livello di relazione fra le corrispondenze tabelle e (Nome campo) è il nome del campo di destinazione; ad esempio la variabile contenente il codice del cliente di Business, durante l'esportazione di un documento di magazzino, sarà IeIn1tm_conto, la variabile che contiene il codice dell'articolo di Business sarà IeIn2mm_codart mentre la variabile che contiene lo stesso codice articolo, ma sulla destinazione, sarà IeOu2articolo.

Le variabili oggetto contenenti il nome del database esterno (Solo per tabelle esterne di tipo MSAccess) sono definite come Ie(Livello relazione)DbExt dove (Livello relazione) è un numero che identifica il livello di relazione fra le corrispondenze tabelle (da 1 a 6 possibili livelli di relazione); ad esempio il primo database esterno aperto per un export sarà Ei1DbExt.

La variabile Ie(n)SqlWhere (dove -n- è il numero del livello di releazione) contiene la clausola where quando il tipo filtro impostato per il processo è di tipo "esteso", fornito cioè dell'utente. La variabile di tipo stringa è modificabile unicamente all'interno dello script associato all'evento "Initialize" per sovrascrivere l'ventuale filtro fonito dal cliente. la variabile vale "" (stringa vuota) quando la tipologia di filtro della corrispondenza tabella è diversa da "filtro esteso".

Validità delle variabili IeIn... e IeOu...

Le variabili di nome IeInnNomeCampo vengono impostate prima di trattare ogni record di origine e sono valide fino a quando non si passa al record successivo. Le variabili IeOunNomecampo vengono impostate dopo le precedenti, nell'ordine indicato nella 'Corrispondenza campi'. Esempio di esportazione documenti di magazzino:

NomeCampo (ValoreCampo) VariabileIe...NomeCampo (ValoreCampo) VariabileIe...

ORIGINEDESTINAZIONE

(1° record – livello di relazione 1)

1. Tipo docum. ("B") IeIn1tm_tiporkTipo docum. ("B") IeOu1tipo

2. Anno docum. (1998) IeIn1tm_annoAnno docum. (1998) IeOu1anno

3. Numero docum. (156) IeIn1tm_numdocNumero docum. (156) IeOu1numero

......

(1° record livello di relazione 2)

1. Riga (1) IeIn2mm_rigaRiga (1) IeOu2riga

2. Codice articolo ("A152") IeIn2mm_codartCodice articolo ("PRN34") IeOu2codice

3. Descr. articolo ("Stamp. HP") IeIn2mm_descrDescr. articolo ("Stamp. HP") IeOu2descr

4. Quantià (10) IeIn2mm_quantQuantità (10) IeOu2quant (*)

5. Sconto 1 (8,50) IeIn2mm_scont1Sconto (8,50) IeOu2sconto

......

(2° record livello di relazione 2)

1. Riga (2) IeIn2mm_rigaRiga (2) IeOu2riga

2. Codice articolo ("B153") IeIn2mm_codartCodice articolo ("MOU20") IeOu2codice

3. Descr. articolo ("Mouse GH") IeIn2mm_descrDescr. articolo ("Mouse GH") IeOu2descr

4. Quantià (19) IeIn2mm_quantQuantità (19) IeOu2quant (**)

5. Sconto 1 (5) IeIn2mm_scont1Sconto (5) IeOu2sconto

......

...

Il flusso del programma, va dall'alto al basso, da destra verso sinistra; nel momento in cui il programma determina il valore di destinazione del campo quantità del primo record (*), tutte le variabili IeOu1.. (i campi testata) sono impostate come del resto le variabili IeOu2riga, IeOu2codice e IeOu2descr, la variabile IeOu2sconto NON è ancora impostata perché successiva; in questo momento la variabile ha valore Empty. Nel momento (**), invece, le variabile IeOu2sconto contiene un dato inattendibile perché si riferisce allo sconto attribuito nella riga precedente.

A seguire sono indicate alcune restrizioni note imposte al linguaggio VBA per l'uso nello Script Engine:

Elenco procedure

Codice

è un campo numerico univoco che identifica una procedura. I codici compresi tra 1 e 1000 sono riservati NTS per l'introduzione di profili standard di importazione/esportazione futuri; codici superiori a 1000 sono disponibili all'utente.

Descrizione

Rappresenta la descrizione della procedura (di max 50 caratteri) Come il codice, anche la descrizione della procedura deve essere univoca.

Tipo procedura

è il tipo della procedura. Può assumere 4 valori:

Solo procedure di tipo Sub o Function sono precaricabili all'avvio.

Precarica

è un flag che indica se precaricare la procedura all'avvio del processo di Import/Export oppure caricare la procedura nello Script Engine immediatamente prima dell'uso. Procedure che hanno un uso frequente è consigliabile precericarle.

Proc. in Vb.Net

Indicare con tale spunta se la procedura è definita in linguaggio VBScript o VB.NET. Tale spunta è molto importante in quanto i profili che utilizzano il motore NET possono usare solo procedure VB.NET, mentre i profili in Classic Start solo procedure in VBScript. Inoltre con questa spunta ora le procedure da eseguire per gli alert scritti in .NET possono essere anche all'interno dell'archivio procedura (anzichè su script), come erano le procedure in VBScript di Classic Start, l'importante è che abbiano la spunta su Proc. in Vb.Net. La sintassi da utilizzare è la stessa di quella delle procedure per import/export in VB.NET mentre la funzione che deve essere eseguita deve avere i parametri come le funzioni che erano presenti nel file esterno, per esempio: Function ProvaAlert(byref oApp as CLE__APP, byval strCodditt as string, byref dttMsgOutParam as DataTable) as boolean

Il flag Proc. in Vb.Net è corretto impostarlo solo per procedure di tipo Sub o Function in quanto il profilo se fa uso del motore NET tratta solo queste.

Negli script, per aggiungere degli 'Imports' e/o dei 'Reference' occore utilizzare la seguente sintassi (devono essere scritti fuori dalle function/sub):

	<reference assembly="BN__STD.dll" />

	Imports NTSInformatica.CLN__STD

Gli imports passati per default dal framework di busnet sono:

	Imports Microsoft.visualbasic
	Imports System
	Imports System.Collections
	Imports System.Data
	Imports NTSInformatica
	Imports NTSInformatica.CLN__STD

L'oggetto script di net (oScrIe) ha come variabile globale:

Gli oggetti/variabili pubblici sempre disponibili in tutti gli script in .NET sono:

	oApp
	oMenu
	oCleComm
	DATAIN
	DATAOU
	VARS
	oCleImex
Tabella di mappatura fra le variabili BSIEIMEX (Classic Start) e BEIEIMEX (NET)
MsScript Script.NET: VARS! (esempio VARS!glProfilo)
glProfilo glProfilo
"Ie" & nLivRel & "NomeTabIN" "Ie" & nLivRel & "NomeTabIN"
"Ie" & nLivRel & "NomeTabOU" "Ie" & nLivRel & "NomeTabOU"
"Ie" & nLivRel & "SqlWhere" "Ie" & nLivRel & "SqlWhere"
&nbsp; "Ie" & nLivRel & "SqlAccessWhere"
"gnLivRel" "gnLivRel"
"IECancelRel" "IECancelRel"
"IECancelAll" "IECancelAll"
"IECancelRow" "IECancelRow"
"IEExitFalse" "IEExitFalse"
"Ie" & nLivRel & "NomeFileExt" "Ie" & nLivRel & "NomeFileExt"
In export: "Ie" & nLivRel & "NomeDbExt" "Ie" & nLivRel & "NomeDbExt"
"Ie" & nLivRel & "NumeroFile" (numero restituito dal comando 'freefile' del file ASCII in export) "Ie" & nLivRel & "DataTable" (tabella in memoria su cui scrivere i dati)
In import: "Ie" & nLivRel & "DbExt" Sostituito con "IeDataIn" ovvero datatable corrente contenente i dati da importare
"IeIn" & nLivRel & "nome_campo_da_importare" (elenco dei campi della tabella IN) esempio 'IeIn1ar_descr' "IeIn" & nLivRel & "Row" (riga della tabella IN) per accedere ai campi esempio: 'VARS!IeIn1Row!ar_descr'
"IeOun" & nLivRel & "nome_campo_da_esportare" (elenco dei campi della tabella OU) esempio 'IeOu1ar_descr' "IeOu" & nLivRel & "Row" (riga della tabella OU) per accedere ai campi esempio: 'VARS!IeOu1Row!ar_descr'
objImex.WriteFileExport In export i dati rimangono in un datatable in memoria fino a quando l'operazione di export non è terminata, poi vengono riversati tutti nel file di out. Nel frattempo da ogni funzione/script è possibile aggiungere/togliere/modificare record nel datatable di out
objImex.WriteLog ocleImex.WriteLog("Messaggio per il log")

Gli oggetti/variabili pubblici disponibili SOLO nella routine TERMINATE in tutti gli script in .NET sono:

Visto che in NET non si può utilizzare il componente AGDO, BEIEIMEX carica tra le procedure la RicalcolaOrd e la RicalcolaDoc. Che non fanno altro che istanziare beveboll/beorgsor e chiamare la funzione nuovodaimportexport. Esempio di come realizzare una chiamata tramite le nuove funzioni:

Corpo procedura

Normalmente l'editor delle procedure è disabilitato; per abilitarlo premere sul pulsante 'Modifica'. Terminata la modifica o l'inserimento della nuova procedura è possibile salvare o ripristinare il tutto; il pulsante controlla, se abilitato, consente di controllare la sintassi solo per procedure di tipo Sub, Function o Expression.

Clicca per accedere al sito di NTS Informatica