PDA

Ver la Versión Completa : Cambiar la ruta de Access en Delphi


Ever_Martell
28-03-2013, 05:03:57
Estoy haciendo un programa para mi salón, mi intención es en una base de datos cargar las tareas asignadas y con el programa ellos poder visualizarlas. Lo que insinúo hacer es que la base de datos yo la pueda estar actualizando mientras ellos tienen su programa instalado.

Esto haciéndolo que el programa descargue la base de datos al iniciar de un servidor, pero que la descargue hacía un archivo temporal en Windows, y el programa en delphi pueda saber que ahí se encuentra la base de datos.
Como he visto varios tutoriales, delphi te pide que elijas la dirección pero no sé cómo hacer que yo la elija manualmente.

Si me ayudarían estaría agradecido.

Casimiro Notevi
28-03-2013, 11:36:57
Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo (http://www.clubdelphi.com/foros/guiaestilo.php)?, gracias por tu colaboración :)

radenf
28-03-2013, 22:57:16
Estimado Ever_Martell :

Si entendí bien lo que necesitas, con el siguiente código puedes definir la ubicación de tu base de datos de Access.

ADOConnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='
+ ExtractFilePath(Application.ExeName) + 'Tu carpeta\Tu BD.mdb;Persist Security Info=False';
ADOConnection1.Provider := 'Microsoft.Jet.OLEDB.4.0';

Ojalá te haya podido ayudar
Salu2

Ever_Martell
31-03-2013, 06:08:19
Disculpa mi ignorancia, y ese código dónde lo tendría que poner. :(

radenf
31-03-2013, 13:57:51
Disculpa mi ignorancia, y ese código dónde lo tendría que poner. :(

Yo lo coloco en el evento OnCreate del DataModulo. También puede ser en el mismo evento del Form principal.
Con ese código tu BD de Access se localiza en la carpeta que tu elijas en el directorio de tu ejecutable. Esto puedes cambiarlo a tu gusto.

Salu2

Ever_Martell
02-04-2013, 07:49:39
Yo lo coloco en el evento OnCreate del DataModulo. También puede ser en el mismo evento del Form principal.
Con ese código tu BD de Access se localiza en la carpeta que tu elijas en el directorio de tu ejecutable. Esto puedes cambiarlo a tu gusto.

Salu2

Muchísimas gracias Radenf me ha ayudado grandemente.

Mi solución fue la siguiente.

Eliminando el componente antiguo de ADOConnection, agregué uno nuevo aplicando el siguiente código en un Botón.

ADOConnection1.Connected := false;
ADOConnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='
+ GetTemp + 'Mydb.mdb;Persist Security Info=False;Jet OLEDB:Database Password=';
ADOConnection1.Provider := 'Microsoft.Jet.OLEDB.4.0';
ADOConnection1.Connected := true;

Le agregué Jet OLEDB: Database Password= y GetTemp

GetTemp Es la dirección de la carpeta temporal del usuario, para lograrlo usé este código, después de Implementation.

function GetTemp: String;
var
tempDir: PChar;
dwSDSice: DWORD;
begin
dwSDSice := MAX_PATH + 1;
GetMem(tempDir, dwSDSice);
try
if Windows.GetTempPath(dwSDSice, tempDir) <> 0 then
Result := tempDir;
finally
FreeMem(tempDir);
end;
end;

Jet OLEDB: Database Password= Porque mi base de datos usaba contraseña.

Y así fue como todo me resultó. Te lo agradezco mucho, saludos.

radenf
02-04-2013, 12:27:50
Encantado de haber podido ayudarte.
Saludos