Compartir por


Función SQLDataSourceToDriver

SQLDataSourceToDriver admitetranslaciones para controladores ODBC. Las aplicaciones habilitadas para ODBC no llaman a esta función; las aplicaciones solicitan traducción a través de SQLSetConnectAttr. El controlador asociado con connectionHandle especificado en SQLSetConnectAttr llama al archivo DLL especificado para realizar traducciones de todos los datos que fluyen desde el origen de datos al controlador. Se puede especificar un archivo DLL de traducción predeterminado en el archivo de inicialización ODBC.

Sintaxis

  
BOOL SQLDataSourceToDriver(  
     UDWORD     fOption,  
     SWORD      fSqlType,  
     PTR        rgbValueIn,  
     SDWORD     cbValueIn,  
     PTR        rgbValueOut,  
     SDWORD     cbValueOutMax,  
     SDWORD *   pcbValueOut,  
     UCHAR *    szErrorMsg,  
     SWORD      cbErrorMsgMax,  
     SWORD *    pcbErrorMsg);  

Argumentos

fOption
[Entrada] Valor de opción.

fSqlType
[Entrada] Tipo de datos SQL. Este argumento indica al controlador cómo convertir rgbValueIn en un formulario aceptable por la aplicación. Para obtener una lista de tipos de datos SQL válidos, consulte la sección Tipos de datos SQL del Apéndice D: Tipos de datos.

rgbValueIn
[Entrada] Valor que se va a traducir.

cbValueIn
[Entrada] Longitud de rgbValueIn.

rgbValueOut
[Salida] Resultado de la traducción.

Nota

El archivo DLL de traducción no termina en null este valor.

cbValueOutMax
[Entrada] Longitud de rgbValueOut.

pcbValueOut
[Salida] Número total de bytes (excepto el byte de terminación NULL) disponible para devolver en rgbValueOut.

Para los datos binarios o de caracteres, si es mayor o igual que cbValueOutMax, los datos de rgbValueOut se truncan a bytes cbValueOutMax .

Para todos los demás tipos de datos, se omite el valor de cbValueOutMax y el archivo DLL de traducción asume que el tamaño de rgbValueOut es el tamaño del tipo de datos C predeterminado del tipo de datos SQL especificado con fSqlType.

El argumento pcbValueOut puede ser un puntero nulo.

szErrorMsg
[Salida] Puntero al almacenamiento para un mensaje de error. Se trata de una cadena vacía a menos que se produzca un error en la traducción.

cbErrorMsgMax
[Entrada] Longitud de szErrorMsg.

pcbErrorMsg
[Salida] Puntero al número total de bytes (excepto el byte de terminación NULL) disponible para devolver en szErrorMsg. Si es mayor o igual que cbErrorMsg, los datos de szErrorMsg se truncan a cbErrorMsgMax menos el carácter de terminación null. El argumento pcbErrorMsg puede ser un puntero nulo.

Devoluciones

TRUE si la traducción se realizó correctamente, FALSE si se produjo un error en la traducción.

Comentarios

El controlador llama a SQLDataSourceToDriver para traducir todos los datos (datos del conjunto de resultados, nombres de tabla, recuentos de filas, mensajes de error, etc.) pasando del origen de datos al controlador. Es posible que el archivo DLL de traducción no traduzca algunos datos, según el tipo de datos y el propósito del archivo DLL de traducción; por ejemplo, un archivo DLL que traduce datos de caracteres de una página de códigos a otra omite todos los datos numéricos y binarios.

El valor de fOption se establece en el valor de vParam especificado mediante una llamada a SQLSetConnectAttr con el atributo SQL_ATTR_TRANSLATE_OPTION. Es un valor de 32 bits que tiene un significado específico para un archivo DLL de traducción determinado. Por ejemplo, podría especificar una traducción de conjunto de caracteres determinada.

Si se especifica el mismo búfer para rgbValueIn y rgbValueOut, la traducción de datos en el búfer se realizará en su lugar.

Aunque cbValueIn, cbValueOutMax y pcbValueOut son del tipo SDWORD, SQLDataSourceToDriver no admite necesariamente punteros enormes.

Si SQLDataSourceToDriver devuelve FALSE, es posible que se haya producido un truncamiento de datos durante la traducción. Si pcbValueOut (el número de bytes disponibles para devolver en el búfer de salida) es mayor que cbValueOutMax (la longitud del búfer de salida), se produjo el truncamiento. El controlador debe determinar si el truncamiento era aceptable. Si no se produjo el truncamiento, SQLDataSourceToDriver devolvió FALSE debido a otro error. En cualquier caso, se devuelve un mensaje de error específico en szErrorMsg.

Para obtener más información sobre cómo traducir datos, vea Archivos DLL de traducción.

Para información acerca de Vea
Traducción de datos que se envían al origen de datos SQLDriverToDataSource
Devolver la configuración de un atributo de conexión SQLGetConnectAttr
Establecimiento de un atributo de conexión SQLSetConnectAttr