Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Saber si existe un ODBC

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Saber si existe un ODBC Responder citando

Hola,
estoy intentando saber si existe algún ODBC, a través de la función SQLDataSources (que me da un listado de todos los que hay),
tengo este código pero me falla, alguien podría decirme el que?

typedef RETCODE (__stdcall SQLDataSources)(HENV hEnv, UWORD fDirection, UCHAR * szDSN,
SWORD cbDSNMax, SWORD *pcbDSN, UCHAR * szDescription,
SWORD cbDescriptionMax, SWORD *pcbDescription );

HINSTANCE hLib;
bool bRet;
hLib = LoadLibrary("odbccp32.dll");


UCHAR szDSN[ SQL_MAX_DSN_LENGTH+1 ];
UCHAR szDescription[ 256 ];
short wDSNLen;
short wDesLen;
int retCode;
SQLHENV hEnv=NULL;
AnsiString DSNName;

SQLAllocEnv( &hEnv );
retCode = SQLDataSources( hEnv, SQL_FETCH_FIRST,
szDSN, SQL_MAX_DSN_LENGTH+1, &wDSNLen,
szDescription, 256, &wDesLen );
while( retCode == SQL_SUCCESS || retCode == SQL_SUCCESS_WITH_INFO )
{
DSNName = (AnsiString)((char *)szDSN);
retCode = SQLDataSources( hEnv, SQL_FETCH_NEXT,
szDSN, SQL_MAX_DSN_LENGTH+1, &wDSNLen,
szDescription, 256, &wDesLen );
}
SQLFreeEnv( hEnv );

Me da un error de cannot converted short* to short.
Supongo que a lo mejor es de la declaración, pero ni idea.
Gracias,
Laura
Volver arriba
Mensaje    Asunto: Responder citando

Todo solucionado,
gracias.
Volver arriba
Mensaje    Asunto: Responder citando

Question
como lo solucionaste??? si se puede saber...
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Ok, aquí te dejo mi código, si tienes alguna duda ya sabes,
Laura.
typedef BOOL (__stdcall *pSQLConfigDataSource)(HWND, WORD, LPCSTR, LPCSTR);
pSQLConfigDataSource SQLConfigDataSource;

typedef RETCODE (__stdcall *pSQLDataSources) (HENV hEnv, UWORD fDirection, UCHAR * szDSN,

UCHAR szDSN[ SQL_MAX_DSN_LENGTH+1 ];
UCHAR szDescription[ 256 ];
short wDSNLen;
short wDesLen;
RETCODE retCode;
HENV hEnv=NULL;
AnsiString DSNName;

SWORD cbDSNMax, SWORD *pcbDSN, UCHAR *szDescription,
SWORD cbDescriptionMax, SWORD *pcbDescription );
pSQLDataSources SQLDataSources;

typedef int (__stdcall *pSQLAllocEnv)(HENV henv);
pSQLAllocEnv SQLAllocEnv;

typedef int (__stdcall *pSQLFreeEnv)(HENV henv);
pSQLFreeEnv SQLFreeEnv;

HINSTANCE hLib,hLib2;
bool bRet;
// hLib = LoadLibrary("odbccp32.dll");
hLib2 = LoadLibrary("ODBC32.dll");

if (hLib2)
{
SQLDataSources = (pSQLDataSources) GetProcAddress(hLib2, "SQLDataSources");
SQLAllocEnv = (pSQLAllocEnv) GetProcAddress(hLib2,"SQLAllocEnv");
SQLFreeEnv = (pSQLFreeEnv) GetProcAddress(hLib2,"SQLFreeEnv");
if (SQLConfigDataSource)
{

SQLAllocEnv( &hEnv );
retCode = SQLDataSources( hEnv,
SQL_FETCH_FIRST,
szDSN,
SQL_MAX_DSN_LENGTH+1,
&wDSNLen,
szDescription,
255,
(SWORD *)&wDesLen );
DSNName = (AnsiString)((char *)szDSN);
while( retCode == SQL_SUCCESS || retCode == SQL_SUCCESS_WITH_INFO )
{
DSNName = (AnsiString)((char *)szDSN);
ListBox1->Items->Strings[i] = DSNName;
i++;
retCode = SQLDataSources( hEnv, SQL_FETCH_NEXT,
szDSN, SQL_MAX_DSN_LENGTH+1, &wDSNLen,
szDescription, 256, &wDesLen );
}

SQLFreeEnv( hEnv );
}
}
Nota: yo he añadido un ListBox donde pongo todos los ODBC.
Volver arriba
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.