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 

odbc para access

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Bases de Datos
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: odbc para access Responder citando

Sobre la generacion y destruccion de ODBCs dinamicos he encontrado este codigo de César C. Salazar González, y ademas he buscado por la web sin mucha fortuna...


Código:

 
// indicar el Lugar del Archivo.net,
            Session1->NetFileDir = "ruta";
            TConfigMode Save_Config = Session1->ConfigMode;
            Session1->ConfigMode = cmPersistent;
            try{
                //Limpiamos simpre por cualquier cuelgue del sistema..
                // por si nuestro programa, se trabajo, la maquina se
                // reseteo etc. borramos siempre el alias..
                Session1->DeleteAlias("NOMBRE_DEL_ALIAS");//
                Session1->AddStandardAlias("NOMBRE_DEL_ALIAS","RUTA_DE_LAS_BASES","PARADOX");
                // ALIAS DINAMICO, PARA PARADOX, EXISTE TAMBIEN
               //  AddAlias, para Ado, ODBC, ETC..
            }
            __finally{
                Session1->ConfigMode = Save_Config;
            }
            // POR ULTIMO ACTIVAMOS LA SESSION Y EL DATABASE.
            Session1->Active=true;
            Database1->Connected=true


En:

https://cppbuilder.es/viewtopic.php?t=8448

Sin embargo y pese a que está genial explicado, no se como crear un alias para Access. Debo decir que no utilizo componentes ADO al no venirme en el paquete que es c++builder 5.0, la base de datos es Access 2003. Gracias por la ayuda!
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

he encontrado estos codigos en la red pero no es codigo c++builder!
El primero es en delphi y el siguiente Win32.

Código:

const
  ODBC_ADD_DSN = 1; // Add data source
  ODBC_CONFIG_DSN = 2; // Configure (edit) data source
  ODBC_REMOVE_DSN = 3; // Remove data source
  ODBC_ADD_SYS_DSN = 4; // add a system DSN
  ODBC_CONFIG_SYS_DSN = 5; // Configure a system DSN
  ODBC_REMOVE_SYS_DSN = 6; // remove a system DSN
  ODBC_REMOVE_DEFAULT_DSN = 7; // remove the default DSN

function SQLConfigDataSource(
  hwndParent: HWND;
  fRequest: WORD;
  lpszDriver: LPCSTR;
  lpszAttributes: LPCSTR): BOOL; stdcall; external 'ODBCCP32.DLL';

function AddDSN(const DSN, Database, Description: String): Boolean; begin
  Result := SQLConfigDataSource(0, ODBC_ADD_DSN,
    'Microsoft Access Driver (*.mdb)', PChar(
    'DSN=' + DSN + #0 +
    'Driver=ODBCJT32.DLL'#0 +
    'DBQ=' + Database + ''#0 +
    'DefaultDir=' + ExtractFilePath(Database) + #0 +
    'Description=' + Description + #0 +
    'FIL=MS Access'#0 +
    'UID=Admin'#0));
end;

function RemoveDSN(const DSN: String): Boolean;
begin
  Result := SQLConfigDataSource(0, ODBC_REMOVE_DSN,
    'Microsoft Access Driver (*.mdb)', PChar(
    'DSN=' + DSN + #0));
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if AddDsn('TestDns','c:\test.mdb', 'anything') then
    ShowMessage('The ODBC DNS Added successfully');
end;



y el siguiente de _Leo_
Código:


//bool ret;
//ret = CreateODBCAlias("MiAlias",
//"miBase.mdb",
//"C:\directorio\datos\",
//"Esto es una prueba";
// Devuelve true si se crea correctamente
//ShowMessage(ret ? "Creado" : "Error";



bool CreateODBCAlias(String sAlias, String sDB, String Dir, String sDescription)
{
 typedef BOOL (__stdcall *pSQLConfigDataSource)(HWND, WORD, 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; 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);
  }   
 // Devuelve true si se crea o false en caso contrario
 return bRet;
}



////////Para Borrar un alias ODBC

//LLAMADA
//bool ret = RemoveODBCAlias("Rebeca";
// devuelve true en caso de que se borre
//ShowMessage(ret ? "Borrado" : "Error";


bool RemoveODBCAlias(String 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;
}



Como puedo introducirlos en builder sin que me de errores? o tal vez debo compilarlo con Visual C++ y luego llamar a las funciones de otra manera? Gracias.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
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.