SQL.REQUEST (función SQL.REQUEST)

SQL.REQUEST (función SQL.REQUEST)

 

Es posible que parte del contenido de este tema no pueda aplicarse a algunos idiomas.

 Importante   La función SQL.REQUEST no es compatible con Microsoft Excel 2010. El complemento de Excel 2002 Open Database Connectivity (XLODBC.XLA) solo es compatible con Excel 2002.

Este artículo describe la sintaxis de la fórmula y el uso de la función (función: fórmula ya escrita que toma un valor o valores, realiza una operación y devuelve un valor o valores. Utilice funciones para simplificar y acortar fórmulas en una hoja de cálculo, especialmente aquellas que llevan a cabo cálculos prolongados o complejos.) SQL.REQUEST en Microsoft Excel.

Descripción

Conecta con un origen de datos externo y ejecuta una consulta desde una hoja de cálculo. SQL.REQUEST devuelve el resultado como una matriz, sin necesidad de programar una macro. Si esta función no está disponible, debe instalar el programa de complemento (complemento: programa suplementario que agrega funciones o comandos personalizados a Microsoft Office.) ODBC de Microsoft Excel (XLODBC.XLA). Puede instalar el complemento desde el sitio web de Microsoft Office.

Sintaxis

SQL.REQUEST(conexión,[salida],[controlador],[consulta],[nombres_columna])

La sintaxis de la función SQL.REQUEST tiene los siguientes argumentos (argumento: valor que proporciona información a una acción, un evento, un método, una propiedad, una función o un procedimiento.):

  • Conexión     Obligatorio. Proporciona información, tal como el nombre del origen de datos, identificación del usuario y contraseñas, requerida por el controlador que está usando para conectarse a un origen de datos; debe seguir el formato del controlador. La tabla siguiente muestra tres ejemplos de cadenas de conexión para tres controladores.
Controlador Conexión
dBASE DSN=Neptuno;PWD=prueba
SQL Server DSN=MiServidor;UID=dbayer;PWE=123;Database=Pubs
ORACLE DNS=Mi origen de datos Oracle;DBQ=MISERVIDOR;UID=JulioS;PWD=Sésamo
  • Debe definir el nombre del origen de datos (DSN, Data Source Name) que usa el argumento conexión antes de tratar de conectarse.
  • Puede insertar el argumento conexión como una matriz o como una cadena. Si conexión sobrepasa los 250 caracteres, debe insertarlo como una matriz.
  • Si SQL.REQUEST no logra tener acceso al origen de datos usando el argumento conexión, devuelve el valor de error #N/A.
  • Salida     Opcional. Es una referencia de celda donde desea colocar la cadena de conexión completa. Si escribe SQL.REQUEST en una hoja de cálculo, omite el argumento salida.
    • Use el argumento salida cuando desee que SQL.REQUEST devuelva la cadena de conexión completa.
    • Si omite el argumento salida, SQL.REQUEST no devuelve una cadena de conexión completa.
  • Controlador     Opcional. Especifica cuándo se presenta el cuadro de diálogo del controlador y qué opciones se encuentran disponibles. Use uno de los números descritos en la tabla siguiente. Si omite el argumento controlador, SQL.REQUEST usa el 2 como opción predeterminada.
Controlador Descripción
1 El cuadro de diálogo del controlador se presenta siempre.
2 El cuadro de diálogo del controlador se presenta solo si la información proporcionada por la cadena de conexión y la especificación de los datos de origen no es suficiente para completar la conexión. Todas las opciones del cuadro de diálogo están disponibles.
3 El cuadro de diálogo del controlador se presenta solo si la información proporcionada por la cadena de conexión y la especificación de los datos de origen no es suficiente para completar la conexión. Las opciones del cuadro de diálogo se encuentran atenuadas y no están disponibles si no se requieren.
4 No se presenta el cuadro de diálogo. Si la conexión no es satisfactoria, se devuelve un error.
  • Consulta     Opcional. Es la instrucción SQL que desea ejecutar en el origen de datos.
    • Si SQL.REQUEST no logra ejecutar el argumento consulta con los datos de origen especificados, devuelve el valor de error #N/A.
    • Puede actualizar una consulta con la unión de referencias en el argumento consulta. En el siguiente ejemplo, cada vez que $A$3 cambia, SQL.REQUEST usa el nuevo valor para actualizar la consulta.

"SELECT Name FROM Customers WHERE Balance > "&$A$3&"".

Microsoft Excel limita la longitud de las cadenas a 255 caracteres. Si consulta sobrepasa esa longitud, especifique la consulta en un rango de celdas vertical y use el rango completo como argumento consulta. Los valores de las celdas se concatenan para formar la instrucción SQL completa.

  • Nombres_columna     Opcional. Indica si los nombres de columna se devuelven como la primera fila de resultados. Establezca este argumento como VERDADERO si desea que los nombres de columna se devuelvan como la primera fila de resultados. Use FALSO si no desea que se devuelvan los nombres de columna. Si omite el argumento nombres_columna, SQL.REQUEST no devuelve nombres de columna.

Valor devuelto

  • Si esta función completa todas sus acciones, devuelve una matriz con los resultados de la consulta o con el número de filas afectadas por la consulta.
  • Si SQL.REQUEST no logra tener acceso al origen de datos con el argumento conexión, devuelve el valor de error #N/A.

Observaciones

  • Puede insertar SQL.REQUEST como una matriz. Si especifica SQL.REQUEST como una matriz, devuelve una matriz que se ajusta a ese rango.
  • Si el rango de celdas es mayor que el resultado obtenido, SQL.REQUEST agrega celdas vacías a la matriz devuelta para aumentarla hasta el tamaño necesario.
  • Si el resultado obtenido es mayor que el rango especificado como matriz, SQL.REQUEST devuelve la matriz entera.
  • Los argumentos para SQL.REQUEST están en un orden distinto al de los argumentos para la función SQLRequest de Visual Basic para Aplicaciones.

Ejemplo

Supongamos que desea hacer una consulta a una base de datos dBASE denominada DBASE4. Cuando especifica la siguiente fórmula en una celda, se devuelve una matriz con los resultados de la consulta, que contiene los nombres de columna en la primera fila.

SQL.REQUEST("DSN=NWind;DBQ=c:\msquery;FIL=dBASE4", c15, 2, "Select Custmr_ID, Due_Date from Orders WHERE order_Amt>100", TRUE)