Ver Mensaje Individual
  #4  
Antiguo 13-12-2005
Avatar de epuigdef
epuigdef epuigdef is offline
Miembro
 
Registrado: jul 2005
Posts: 196
Reputación: 19
epuigdef Va por buen camino
Buenas!


La idea es la siguiente:

Creas un DataModule y le colocas un TADOConnection (que llamaremos conexion) y un TOpenDialog.

El código de esta unidad es el siguiente:

Código Delphi [-]
unit UDataModule;
interface
uses
  SysUtils, Classes, DB, ADODB, Dialogs, Registry, Windows, Forms;
const
  bbdd1 = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=';
  bbdd2 = ';Persist Security Info=False;Jet OLEDBatabase Password=pepito';
type
  TDataMod = class(TDataModule)
    Conexion: TADOConnection;
    OpenDialog1: TOpenDialog;
    procedure DataModuleCreate(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;
begin
    Reg := TRegistry.Create;
    try
        Reg.RootKey := HKEY_LOCAL_MACHINE;
        if Reg.OpenKey('SOFTWARE\EduP\pedidos', false) then
        Begin
            fBBDD := Reg.ReadString('BBDD');
        End
        else
        Begin
            if (Reg.OpenKey('\SOFTWARE\EduP\pedidos', true)) and
               (OpenDialog1.Execute) then
            Begin
                fBBDD := OpenDialog1.FileName;
                Reg.WriteString('BBDD', fBBDD);
            End
            else
            Begin
                Showmessage('Error en la instalación de la aplicación');
                Application.Terminate;
            End;
        End;
        if Conexion.Connected then
          Conexion.close;
        try
            Conexion.ConnectionString := bbdd1 + fbbdd + bbdd2;
            Conexion.Open;
        except
          if (Reg.OpenKey('\SOFTWARE\EduP\pedidos', true)) and
               (OpenDialog1.Execute) then
            Begin
                fBBDD := OpenDialog1.FileName;
                Reg.WriteString('BBDD', fBBDD);
                Conexion.ConnectionString := bbdd1 + fbbdd + bbdd2;
                conexion.Open;
            End
            else
            Begin
                Showmessage('Error en la instalación de la aplicación');
                Application.Terminate;
            End;
        end;
    finally
      reg.Free;
    end;
end;
end.
En la creación del DataModule el programa va a buscar en el registro de Windows la rama HKEY_LOCAL_MACHINE\software\EduP\Pedidos y recoge un valor de cadena que se llama BBDD. En este valor se almacena la ruta y el nombre de la base de datos.

Si la clave no existe se lanza el opendialog para que se seleccione la base de datos y guarda el valor.

Una vez tiene el valor concatena los textos para la connectionString y abre la conexión a la base de datos.

A partir de ahí cualquier TADOTable o TADOQuery necesita acceder al TADOConnection del DataModule y listo.

Espero que te sirva

Edu
Responder Con Cita