sc_lookup_field(dataset, "SQL Command", "connection_name")

Esta macro permite al desarrollador ejecutar un comando SELECCIONAR a la vez y tener acceso a los datos devueltos a través del parámetro del dataset, en formato de array: {dataset[número_de_línea][nombre_de_columna]}.

Para ejecutar comandos que devuelven una gran cantidad de datos, recomendamos usar sc_select para un mejor rendimiento.

A diferencia de la macro sc_lookup, donde informamos el índice {dataset[0][0]}, en la macro sc_lookup_field debemos informar el nombre de la columna de la que queremos recuperar los datos {dataset[0][field_name]}

La forma de ensamblar el array de retorno, donde debemos informar el nombre de la columna, hace que esta macro sea incompatible con las siguientes bases de datos: MSSQL Server, Access y DB2. En estos casos, recomendamos utilizar la macro sc_lookup.

Consulte a continuación los detalles sobre los parámetros de la macro.

Parámetro Descripción Ejemplos
dataset

Este parámetro es obligatorio y debe informarse sin espacios ni caracteres especiales y no acepta el uso de variables.

Define el nombre de la variable que recibirá el retorno del comando SELECT ejecutado por la macro.

En caso de error en la ejecución del comando SQL, este parámetro devolverá false y el mensaje de error estará disponible en la variable "dataset_erro".

A continuación se muestra un ejemplo simple de visualización de mensaje de error y validación.

sc_lookup_field("mis_datos", "select field_01, field_02, field_03 from tb_name");
if ( {mis_datos} === false ) {

echo "Ocurrio un error: " . {mis_datos_erro};

}
sc_lookup_field("mis_datos", "select field_01, field_02, field_03 from tb_name");

La matriz con los datos se ensamblará de la siguiente manera::

Array (
    [0] => Array (
            [field_01] => 1
[field_02] => OFFICE EQUIPMENT ) [1] => Array ( [field_01] => 2
[field_02] => FIXED TELEPHONY
)
)

En el ejemplo anterior, el comando devolvió dos líneas de registro y en cada línea dos columnas (field_01 y field_02).

La recuperación del valor debe ocurrir de la siguiente manera:

{mis_datos[número_de_línea][nombre_columna]}
comando_SQL

Este parámetro es obligatorio y se puede definir informando el comando directamente en la macro protegida con comillas (dobles o simples) o usando una variable (local o global).

// comando directo en macro
sc_lookup_field("mis_datos", "select field_01, field_02, field_03 from tb_name");
// comando usando una macro
$select_command= "select field_01, field_02, field_03 from tb_name"
sc_lookup_field("mis_datos", $select_command);
nombre_de_la_conexión

El parámetro "conexión" es opcional y debe informarse si el comando se ejecuta en una base de datos diferente a la especificada para la aplicación.

Además, este parámetro no acepta el uso de variables, siendo necesario teclear el nombre de la conexión para que la macro se ejecute correctamente.

// Ejemplo informando el nombre de la conexión
sc_lookup_field("mis_datos", "select field_01, field_02, field_03 from tb_name","conn_name");

 

Exemplos


Ejemplo 1: Acceder a varias líneas

sc_lookup_field(mis_datos, "select field_01, field_02, field_03 from tb_name");

//Para acceder a la primera línea (conjunto de datos), debemos informar:
{field_01} = {mis_datos[0]['field_01']};
{field_02} = {mis_datos[0]['field_02']};
{field_03} = {mis_datos[0]['field_03']};

//Para acceder a la segunda línea (dataset), debemos informar:
{field_01} = {mis_datos[1]['field_01']};
{field_02} = {mis_datos[1]['field_02']};
{field_03} = {mis_datos[1]['field_03']};

 

Ejemplo 2: Con validación de datos:

$comando_SQL = "select field_01, field_02, field_03 from tb_name";

sc_lookup_field(mis_datos, $comando_SQL);

if ( {mis_datos} === false ) {

echo "Error de acceso. Mensaje = " . {mis_datos_erro};

} elseif ( empty({mis_datos}) ) {

echo "el comando select no devolvió datos";

} else {

{field_01} = {mis_datos[0]['field_01']};
{field_02} = {mis_datos[0]['field_02']};
{field_03} = {mis_datos[0]['field_03']};

}

 

Ejemplo 3: Usando el parámetro de conexión

$comando_SQL = "select field_01, field_02 from tb_name where field_03 = '{field_03} ' and field_02 = [var_global]"

sc_lookup_field(mis_datos, $comando_SQL, "nombre_de_la_conexión");

 

Ejemplo 4: Uso de variables locales y globales en el comando macro

$comando_SQL = "select field_01, field_02 from tb_name where field_03 = '{field_03} ' and field_02 = [var_global]"

sc_lookup_field(mis_datos, $comando_sql);