Ver Mensaje Individual
  #16  
Antiguo 15-12-2005
Moises22 Moises22 is offline
Miembro
 
Registrado: sep 2005
Posts: 53
Reputación: 19
Moises22 Va por buen camino
Thumbs up

He desarrollado en la unidad que aqui pusieron un poco mas para que se pueda cambiar la ruta y para que si no se mete una ruta correcta no la acepte y welva a intentarlo en el siguiente inicio. Todo quedo asi:

Código Delphi [-]
unit UDataModule;
interface
uses
SysUtils, Classes, DB, ADODB, Dialogs, Registry, Windows, Forms,UnitGlobal;
const
bbdd1 = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=';
bbdd2 = ';Persist Security Info=False';
type
TDataMod = class(TDataModule)
Conexion: TADOConnection;
OpenDialog1: TOpenDialog;
procedure DataModuleCreate(Sender: TObject);
procedure cambiardb(Sender: TObject);
private
{ Private declarations }
fBBDD : String;
public
{ Public declarations }
property BBDD : String read fBBDD write fBBDD;
end;
var
DataMod: TDataMod;
implementation
{$R *.dfm}
procedure TDataMod.DataModuleCreate(Sender: TObject);
var Reg : TRegistry;
hechodb: Boolean;
begin
hechodb:=true;
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_LOCAL_MACHINE;
if Reg.OpenKey('\SOFTWARE\loquesea', false) then
Begin
fBBDD := Reg.ReadString('BBDD');
End
else
Begin
if ((Reg.OpenKey('\SOFTWARE\loquesea', true)) and
(OpenDialog1.Execute)) then
Begin
fBBDD := OpenDialog1.FileName;
Reg.WriteString('BBDD', fBBDD);
End
else
Begin
Showmessage('Debe seleccionar la Base de Datos, se procedera a cerrar la aplicacion');
if (fBBDD='') then
Reg.DeleteKey('\SOFTWARE\loquesea');
hechodb:=false;
Application.Terminate;
End;
End;
if hechodb then
begin
if (Conexion.Connected) then
Conexion.close;
try
Conexion.ConnectionString := bbdd1 + fbbdd + bbdd2;
Conexion.Open;
except
Reg.DeleteKey('\SOFTWARE\loquesea');
Showmessage('La Base de Datos seleccionada es erronea o esta dañada');
reg.Free;
Application.Terminate;
End;
end;
finally
reg.Free;
Conexion.Close;
end;
end;
procedure TDataMod.cambiardb(Sender: TObject);
var Reg2 : TRegistry;
fBBDD2: String;
hechodb2: Boolean;
begin
Reg2 := TRegistry.Create;
hechodb2:= false;
try
Reg2.RootKey := HKEY_LOCAL_MACHINE;
if ((Reg2.OpenKey('\SOFTWARE\loquesea', true)) and
(OpenDialog1.Execute)) then
Begin
fBBDD2:=fBBDD;
fBBDD := OpenDialog1.FileName;
if (Conexion.Connected) then
Conexion.close;
try
Conexion.ConnectionString := bbdd1 + fbbdd + bbdd2;
Conexion.Open;
if (Conexion.Connected) then
begin
Reg2.DeleteValue('BBDD');
Reg2.WriteString('BBDD', fBBDD);
hechodb2:=true;
end;
except
Showmessage('La Base de Datos seleccionada es erronea o esta dañada, se obtendra la anterior');
fBBDD:=fBBDD2;
Reg2.Free;
End;
End
else
Begin
Showmessage('No selecciono ninguna base de datos o aun no existe ninguna Base de datos');
End;
finally
Reg2.Free;
Conexion.Close;
if hechodb2 then
begin
Showmessage('Para seguir trabajando vuelva a Iniciar la Aplicacion');
Application.Terminate;
end;
end;
end;
end.


Por si alguien ve esto recuerdo que debe crear un ConnectionString dentro del TADOConnection y se utiliza asi:

Para llamar desde comprobar si ya hay registrada una base de datos o para la primera vez que se entra:

-Añadimos esta unidad en el uses (en este caso Udatamodule)
-Ponemos donde queramos DataMod.DataModuleCreate(owner);

Para cambiar de base de datos:

-Añadimos esta unidad en el uses (en este caso Udatamodule)
-Pone donde queramos Datamod.cambiardb(owner);

Gracias por su ayuda y espero ayudar a alguien con lo que he puesto

Última edición por Moises22 fecha: 15-12-2005 a las 14:38:01.
Responder Con Cita