PDA

Ver la Versión Completa : Crear ODBC dinámicamente?


HccSoft
17-03-2008, 08:16:35
Es posible crear un DNS de usuario dinámicamente?

Utilizo un ADOConnection de Delphi 7 para acceder a una BD remota SQL Server. Me gustaría que el ejecutable funcionara desde un Pendrive sin tener que configurar nada.

Gracias

rafita
18-03-2008, 11:10:06
Hola,
Yo no creo ODBC's dinámicamente, sino que me limito a crear la conexión para mi aplicación capturando los datos de un archivo de texto.

GUbicacionAplicacion:=ExtractFilePath(Application.ExeName);
AssignFile(fich_setup,GUbicacionAplicacion+'Configuracion.txt');
{$I-} Reset(fich_setup); {$I+}
if IOResult<>0 then
begin
ShowMessage('No encuentro el archivo de configuración inicial Configuracion.txt.');
Close;
end
else
begin
ReadLn(Fich_Setup,Cadena); GConexion:=Cadena;
CloseFile(Fich_Setup);
// establecer conexión con la base de datos
ADOQuery1.Connection:=ADOcn1;
ADOQuery2.Connection:=ADOcn1;



Espero que esto te oriente un poco

jcarteagaf
18-03-2008, 15:15:41
La información de los ODBC se almacen en el registro del Windows, uso el siguiente codigo para generar ODBC's que apuntan a SQL SERVER desde mis aplicaciones


var
r : TRegistry

begin
r := TRegistry.create;
r.RootKey:= HKEY_LOCAL_MACHINE;
r.OpenKey('SOFTWARE\ODBC\ODBC.INI\'+Nombre_ODBC,true);
r.WriteString('Database',Nombre_base_de_datos);
r.WriteString('Driver','C:\WINDOWS\System32\SQLSRV32.dll');
r.WriteString('Language','Español');
r.WriteString('Lastuser',Nombre_Usuario);
r.WriteString('Server',Nombre_Servidor);
r.CloseKey;
r.Free;
r := TRegistry.create;
r.RootKey:= HKEY_LOCAL_MACHINE;
r.OpenKey('SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources',true);
r.WriteString(Nombre_ODBC,'SQL Server');
r.CloseKey;
r.Free;
end;
end;

Espero que te sirva. Saludos

HccSoft
18-03-2008, 15:19:32
Muchas gracias por las respuestas.

Creo que esta última es lo que buscaba. Luego probaré el código.