 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Laura Invitado
|
Publicado: Lun 10 Mar, 2003 12:25 pm Asunto: Saber si existe un ODBC |
|
|
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 |
|
 |
Laura Invitado
|
Publicado: Lun 10 Mar, 2003 6:11 pm Asunto: |
|
|
Todo solucionado,
gracias. |
|
| Volver arriba |
|
 |
Carliosss Cdt

Registrado: 28 Ago 2002Mensajes: 4
|
Publicado: Lun 10 Mar, 2003 10:53 pm Asunto: |
|
|
como lo solucionaste??? si se puede saber... |
|
| Volver arriba |
|
 |
Laura Invitado
|
Publicado: Mar 11 Mar, 2003 9:37 am Asunto: |
|
|
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 |
|
 |
|
|
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
|
© 2002–2026 Club Builder · Funciona con phpBB.
|