GCN

Especifica el comportamiento conforme a ISO de los operadores de comparación Es igual a (=) y No es igual a (<>) cuando se usan con valores NULL en SQL Server
Cuando SET ANSI_NULLS es ON, una instrucción SELECT que utilice WHERE column_name = NULL devuelve cero filas incluso si no hay valores null en column_name. Una instrucción SELECT que utilice WHERE column_name <> NULL devuelve cero filas incluso si no hay valores distintos de NULL en column_name.
Cuando SET ANSI_NULLS se establece en OFF, los operadores de comparación Es igual a (=) y No es igual a (<>) no siguen el estándar ISO. Una instrucción SELECT que utilice WHERE column_name = NULL devuelve las filas que tienen valores null en column_name. Una instrucción SELECT que utilice WHERE column_name <> NULL devuelve las filas que tienen valores distintos de NULL en la columna. Además, una instrucción SELECT que utilice WHERE column_name <> valor_XYZ devuelve todas las filas que no son valor_XYZ y que no son NULL.
Cuando SET ANSI_NULLS es ON, todas las comparaciones con un valor NULL se evalúan como UNKNOWN. Cuando SET ANSI_NULLS es OFF, la comparación de cualquier dato con un valor NULL se evalúa como TRUE si el valor del dato es NULL. Si no se especifica SET ANSI_NULLS, se aplica el valor de la opción de base de datos ANSI_NULLS. Para obtener más información acerca de la opción de base de datos ANSI_NULLS


En ocasiones, sobre todo cuando se trabaja con servidores vinculados, es necesario que los valores null sean tratados como unknow por sql.
Podemos establecer la opción en la conexión, para trabajar puntualmente con este tipo de consultas o procesos.

Optionset aOption As String, aValor As String

Importante: Actualmente (a fecha de diciembre de 2016) no se garantiza que el ERP trabaje de manera correcta con ansi nulls a on. Se recomienda que luego de hacer la consulta o lanzar el proceso que lo requiere, se vuelva a establecer la opción a OFF.

 

Ver código ejemplo


Sub CallProcess_LinkSrv ()
gcn.OptionSet "ANSI_NULLS", "ON"
gcn.OptionSet "ANSI_PADDING", "ON"
gcn.OptionSet "ANSI_WARNINGS", "ON"
gcn.ejecutastore "LinkServer_ProcessOne"
gcn.OptionSet "ANSI_NULLS", "OFF"
gcn.OptionSet "ANSI_PADDING", "OFF"
gcn.OptionSet "ANSI_WARNINGS", "OFF"
End Sub


Autor: Daniel Ernesto Lutz Llano
Fecha: 15/12/2016


GCN. dameValorSQL

GCN

Función que sirve para recoger más de un campo de una sentencia SQL.
La función gcn.dameValorCampo sólo permite recoger un solo valor de la sentencia, con éste método podemos traernos más de uno.
- Parámetros de entrada: Sentencia SQL (string), si se muestran mensajes de error (booleano), array o lista de columnas de la consulta con su respectivas variables separadas por coma.

 

Ver código ejemplo


- Ejemplo para ejecutar en script de panel de favoritos.
- Metemos en las variables lIdEmpleado, lNombre y lApellidos, el Id, nombre y apellido de un empleado

Sub Main()
     frmAux.Descargar

     gcn.damevalorsql "Select top 1 IdEmpleado, Nombre,Apellidos from Empleados_Datos",True,"IdEmpleado",lIdEmpleado,"Nombre",lNombre,"Apellidos",lApellidos
     MsgBox "IdEmpleado: " & lIdEmpleado & " " & "Nombre: " & lNombre & " " & lApellidos

End Sub 


Autor: Daniel Ernesto Lutz Llano
Fecha: 14/05/2018


GCN. DameValorCampo

GCN

Public Function DameValorCampo(ByVal SQL As String, Optional ByVal Propiedad As String) As Variant

Sirve para consultar el valor de un campo de un solo registro.
Retorna el valor del campo consultado.

Si la consulta retorna más de un resultado, se pintará el primer registro que encuentre el recordset.
Si no se especifica la propiedad, se retorna el valor correspondiente al primer campo de la consulta.

En caso de pasarle la sql como variable, si la variable es de tipo Variant, dará un error. Deberá hacer la conversión de la variable a String. (ver ejemplo)

 

Ver código ejemplo


MsgBox gcn.DameValorCampo ("Select Idempleado, Nombre from empleados_datos where idempleado=0", "Nombre") --Retorna el nombre del empleado 0

MsgBox gcn.DameValorCampo ("Select Idempleado from empleados_datos order by idempleado") --De n empleados, retorna el Id más bajo

--En este ejemplo, se pasa una variable con la cadena SQL. Para que funcione debemos hacer la conversión a string.
lSQL="Select Nombre from empleados_datos where idempleado=" & gcn.IdEmpleado
MsgBox gcn.DameValorCampo (CSTR(lsql))

Autor: Daniel Ernesto Lutz Llano