 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
elruca Cdt

Registrado: 26 Sep 2006Mensajes: 1
|
Publicado: Mar 26 Sep, 2006 11:01 am Asunto: Conectar alias con BDAccess por linea de comandos |
|
|
Hola!
He hecho un programa en Borland C++ que utiliza una base de datos de Access. Para acceder a la base de datos utilicé la creacción de un alias en panel de control/herramientas de programa/... y luego la seleccióne desde el programa. El problema es que me gustaría que el programa fuera "autosuficiente" es decir, no tener que hacer esos pasos manualmente, sino dejarlo programado para que cada vez que active el programa, se cree este alias, aunque sea de manera temporal. Sabéis si es posible? Sé que para otras bases de datos (dBase, Paradox...) hay una función "AddStandardAlias" que hace precisamente esto, pero no he encontrado nada para Access.
Me podéis ayudar?
Gracias! |
|
| Volver arriba |
|
 |
Invitado
|
Publicado: Vie 29 Sep, 2006 11:39 am Asunto: |
|
|
hola y bienvenido.
encontre este codigo para delphi y lo adapte, espero que te sirva...
| Código: |
#include <windows.h>
typedef BOOL (__stdcall *pSQLConfigDataSource)(HWND, WORD, LPCSTR, LPCSTR);
//sAlias - nombre de alias
//sDB - nombre de base de datos access
//sDir - path para encontrarla
//sDescription - lo que quieras
bool CreateODBCAlias(AnsiString sAlias, AnsiString sDB, AnsiString sDir, AnsiString sDescription)
{
pSQLConfigDataSource SQLConfigDataSource;
HINSTANCE hLib;
bool bRet = false;
hLib = LoadLibrary("odbccp32.dll");
if (hLib)
{
SQLConfigDataSource = (pSQLConfigDataSource) GetProcAddress(hLib, "SQLConfigDataSource");
if (SQLConfigDataSource)
{
char szParam[1024];
sprintf(szParam, "DSN=%s; Description=%s; DefaultDir=%s; DBQ=%s",
sAlias.c_str(), sDescription.c_str(), sDir.c_str(), sDB.c_str());
bRet = SQLConfigDataSource(NULL, 1 /*ODBC_ADD_DSN*/,
"Microsoft Access Driver (*.mdb)", szParam);
}
FreeLibrary(hLib);
}
return bRet;
}
-------------------------------------------------------------------------------------
//sAlias - nombre de alias
bool RemoveODBCAlias(AnsiString sAlias)
{
// typedef BOOL (__stdcall *pSQLConfigDataSource)HWND,ORD, LPCSTR, LPCSTR);
pSQLConfigDataSource SQLConfigDataSource;
HINSTANCE hLib;
bool bRet = false;
hLib = LoadLibrary("odbccp32.dll");
if (hLib)
{
SQLConfigDataSource = (pSQLConfigDataSource) GetProcAddress(hLib, "SQLConfigDataSource");
if (SQLConfigDataSource)
{
char szParam[1024];
sprintf(szParam, "DSN=%s;", sAlias.c_str());
bRet = SQLConfigDataSource(NULL,3 /*ODBC_REMOVE_DSN*/,"Microsoft Access Driver (*.mdb)", szParam);
}
FreeLibrary(hLib);
}
// Devuelve true si se borra o false en caso contrario
return bRet;
}
|
Yo lo he hecho funcionar varias veces y es OK. Espero que seas asiduo al foro,  |
|
| Volver arriba |
|
 |
best_guitar Lt


Registrado: 12 Nov 2005Mensajes: 92
|
Publicado: Vie 29 Sep, 2006 11:43 am Asunto: |
|
|
| best_guitar escribió: | hola y bienvenido.
encontre este codigo para delphi y lo adapte, espero que te sirva...
| Código: |
#include <windows.h>
typedef BOOL (__stdcall *pSQLConfigDataSource)(HWND, WORD, LPCSTR, LPCSTR);
//sAlias - nombre de alias
//sDB - nombre de base de datos access
//sDir - path para encontrarla
//sDescription - lo que quieras
bool CreateODBCAlias(AnsiString sAlias, AnsiString sDB, AnsiString sDir, AnsiString sDescription)
{
pSQLConfigDataSource SQLConfigDataSource;
HINSTANCE hLib;
bool bRet = false;
hLib = LoadLibrary("odbccp32.dll");
if (hLib)
{
SQLConfigDataSource = (pSQLConfigDataSource) GetProcAddress(hLib, "SQLConfigDataSource");
if (SQLConfigDataSource)
{
char szParam[1024];
sprintf(szParam, "DSN=%s; Description=%s; DefaultDir=%s; DBQ=%s",
sAlias.c_str(), sDescription.c_str(), sDir.c_str(), sDB.c_str());
bRet = SQLConfigDataSource(NULL, 1 /*ODBC_ADD_DSN*/,
"Microsoft Access Driver (*.mdb)", szParam);
}
FreeLibrary(hLib);
}
return bRet;
}
-------------------------------------------------------------------------------------
//sAlias - nombre de alias
bool RemoveODBCAlias(AnsiString sAlias)
{
// typedef BOOL (__stdcall *pSQLConfigDataSource)HWND,ORD, LPCSTR, LPCSTR);
pSQLConfigDataSource SQLConfigDataSource;
HINSTANCE hLib;
bool bRet = false;
hLib = LoadLibrary("odbccp32.dll");
if (hLib)
{
SQLConfigDataSource = (pSQLConfigDataSource) GetProcAddress(hLib, "SQLConfigDataSource");
if (SQLConfigDataSource)
{
char szParam[1024];
sprintf(szParam, "DSN=%s;", sAlias.c_str());
bRet = SQLConfigDataSource(NULL,3 /*ODBC_REMOVE_DSN*/,"Microsoft Access Driver (*.mdb)", szParam);
}
FreeLibrary(hLib);
}
// Devuelve true si se borra o false en caso contrario
return bRet;
}
|
Yo lo he hecho funcionar varias veces y es OK. Espero que seas asiduo al foro,  |
_________________ Be water my friend. |
|
| 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.
|