viernes, 28 de enero de 2011

Guiones: Paso de parámetros

Cuando necesitamos pasar parámetros a un guión o script podemos hacerlo de varias formas.

Imaginemos que necesitamos añadir lineas de factura y lo queremos hacer mediante un guión. Para ello deberemos pasar el idProducto, la cantidad y el precio. Si lo hacemos partiendo de una tabla llamada albaran los campos podrían ser estos: albaran::idProducto, albaran::cantidad y albaran::precio.

Una de las formas de hacerlo sería:

albaran::idProducto & "¶" &
albaran::cantidad & "¶" &
albaran::precio

Esto lo que haría sería pasar todos los parámetros concatenados en una única cadena de texto y separados por un retorno de carro (el "¶"). Le estamos pasando una lista de valores que podremos tratar gracias la función de texto GetValue ( listaDeValores ; NúmeroValor ). Con esta función podemos obtener un valor determinado por NúmeroValor dentro de una lista de valores que en este caso será Get ( ScriptParameter ).

Establecer variable [ $idProducto; Valor:GetValue ( Get ( ScriptParameter ) ; 1 ) ] 
Establecer variable [ $cantidad; Valor:GetValue ( Get ( ScriptParameter ) ; 2 ) ] 
Establecer variable [ $precio; Valor:GetValue ( Get ( ScriptParameter ) ; 3 ) ]

Como estamos pasando una lista de valores podemos usar la función List de esta manera:
List ( 
 albaran::idProducto;
 albaran::cantidad;
 albaran::precio
)
Sin duda el código queda mas elegante. Pero hay que tener cuidado en hacer uso de List para pasar parámetros de esta manera. La razón es que puede generarnos errores si cualquiera de los campos está vacío. Imaginemos que el campo cantidad estuviera vacío la lista de valores que pasaríamos tendría sólo dos elementos y la variable $cantidad no tomaría un valor vacío sino que cogería el valor del precio y la variable $precio no tendría valor al no existir un tercer elemento en la lista.

Otra forma de hacerlo sería "declarando" las variables que han de recibir los parámetros en la misma definición de parámetros.

"$idProducto = " & Quote ( albaran::idProducto ) &
";$cantidad = " & Quote ( albaran::cantidad ) & 
";$precio = " & Quote ( albaran::precio )

De esta manera se pasa una cadena de texto que al usar la función Evaluate() hace que se declaren las variables a usar en el guión.

Establecer variable [ $ok; Valor:Evaluate ("Let ( " & Get ( ScriptParameter ) & "; 1 )" ) ]