*
*********************************************************************************************
* Ejemplo básico, de como leer servidores disponibles de SQL Server por medio del ODBC API. *
*********************************************************************************************
*
* REFERENCIA GENERAL: MSDN ODBC Programmer's Reference
*= ServidoresSQLDisponibles( )
*
PROCEDURE ServidoresSQLDisponibles( )
*
* Constantes.
* #DEFINE V_SQL_HANDLE_ENV 1
#DEFINE V_SQL_HANDLE_DBC 2
#DEFINE V_SQL_ODBC_VERSION 200 #DEFINE V_SQL_ODBC3 3
#DEFINE V_SQL_DATO 99 #DEFINE V_TRAMA_TAMANO 2048 #DEFINE V_SQL_DRIVER "DRIVER=SQL SERVER"
*
**********************
* Declaraciones API. *
**********************
*
* REFERENCIA API: http://msdn.microsoft.com/library/en-us/odbc/htm/odbcSQLBrowseConnect.asp
* DECLARE SHORT SQLBrowseConnect IN ODBC32 ;
INTEGER ConnectionHandle, ;
STRING InConnectionString, ;
INTEGER StringLength1, ;
STRING @ OutConnectionString, ;
INTEGER BufferLength, ;
INTEGER @ StringLength2Ptr
*
* REFERENCIA API: http://msdn.microsoft.com/library/en-us/odbc/htm/odbcsqlallochandle.asp
* DECLARE SHORT SQLAllocHandle IN ODBC32 ;
INTEGER HandleType, ;
INTEGER InputHandle, ;
INTEGER @ OutputHandlePtr
*
* REFERENCIA API: http://msdn.microsoft.com/library/en-us/odbc/htm/odbcsqlfreehandle.asp
* DECLARE SHORT SQLFreeHandle IN ODBC32 ;
INTEGER HandleType, ;
INTEGER Handle
*
* REFERENCIA API: http://msdn.microsoft.com/library/en-us/odbc/htm/odbcsqlsetenvattr.asp
* DECLARE SHORT SQLSetEnvAttr IN ODBC32 ;
INTEGER EnvironmentHandle, ;
INTEGER Attribute, ;
INTEGER ValuePtr, ;
INTEGER StringLength
*
**********************
* CÓDIGO DE EJEMPLO. *
**********************
* LOCAL lnIndi, lnIOHandle, lnCX, lnLongitudSalida
LOCAL lcEntrada, lcSalida
LOCAL ARRAY laServidores[1]
*
STORE 0 TO lnIOHandle, lnCX, lnLongitudSalida
STORE V_SQL_DRIVER TO lcEntrada
STORE SPACE( V_TRAMA_TAMANO )TO lcSalida
*
TRY
*
IF SQLAllocHandle( V_SQL_HANDLE_ENV, lnIOHandle, @lnIOHandle ) == 0
*
IF ( SQLSetEnvAttr(lnIOHandle, V_SQL_ODBC_VERSION, V_SQL_ODBC3, 0 ) ) == 0
*
IF SQLAllocHandle( V_SQL_HANDLE_DBC, lnIOHandle, @lnCX ) == 0
*
IF ( SQLBrowseConnect( lnCX, @lcEntrada, LEN( lcEntrada ), @lcSalida, V_TRAMA_TAMANO, @lnLongitudSalida ) ) == V_SQL_DATO
*
FOR lnIndi = 1 TO ALINES( laServidores, STREXTRACT(lcSalida, '{', '}'), .T., ',' )
*
?laServidores[ lnIndi ]
*
ENDFOR
*
ENDIF
*
ENDIF
*
ENDIF
*
ENDIF
*
CATCH TO loException
FINALLY
*
IF lnCX <> 0
*
SQLFreeHandle( V_SQL_HANDLE_DBC, lnCX )
*
ENDIF
*
IF lnIOHandle <> 0
*
SQLFreeHandle( V_SQL_HANDLE_ENV, lnCX )
*
ENDIF
*
ENDTRY
*
ENDPROC
*
REFERENCIA GENERAL: MSDN ODBC Programmer's Reference
Antonio Muñoz de Burgos y Caravaca
www.emans.com (Web realizada en vFoxPro)
eMans AC (Administrador Corporativo para SQL Server 2000&2005)
Sevilla - España
Manifestando el apoyo a la comunidad de desarrolladores de MS Visual FoxPro.
No hay comentarios. :
Publicar un comentario
Los comentarios son moderados, por lo que pueden demorar varias horas para su publicación.