Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-08-2014
grandzon grandzon is offline
Miembro
NULL
 
Registrado: jul 2014
Posts: 14
Poder: 0
grandzon Va por buen camino
Conexión dinámica a base de datos .mdb

Hola tod@s.

Una vez más solicito ayuda de los expertos del foro, estoy desarrollando una aplicación en Delphi XE3 en la que deseo que al iniciar por primera vez si no encuentra la ruta a la base de datos, que guardo en el Registro Windows, me pregunte por dicha ruta usando un TOpenDialog. La función que uso para grabar la ruta en el Registro lo hace perfectamente, la que uso para leerla... no estoy seguro lo haga tan bien. El principal problema que he notado es que me borra la ruta de acceso del Registro al cerrar la aplicación, lo he notado porque: 1-inicio la aplicación, me pregunta por la ruta de la Base de Datos y se la especifico luego ejecuto el RegEdit y la ruta está ahí, 2-cierro la aplicación luego entro a RegEdit nuevamente y la ruta ya no está.

Este es el código que estoy usando en el módulo de datos (donde tengo alojado un TADOConnection) en el evento OnCreate:

Código Delphi [-]
procedure TDataModule1.DataModuleCreate(Sender: TObject);
var
  rutaBD:string;
  conexion:widestring;
begin
  rutaBD:=regread('Softwate\Proyecto6527', 'Base de Datos', ''); //tratar de leer la ruta a base de datos

  if not (fileexists(rutaBD)) then //si no existe la ruta crearla usando como base el cuadro de diálogo
  begin
    application.MessageBox('Por favor localice la base de datos','No tengo base de datos');
    if OpenDialog1.Execute() then rutaBD:=OpenDialog1.FileName; //asignar la ruta del cuadro de diálogo a la rutaBD
    conexion:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='
    +rutaBD+';Persist Security Info=False';
    ADOConnection1.ConnectionString:=conexion;
    try
      ADOConnection1.Open();
      regwrite('Base de Datos', rutaBD);
    except on e:exception do
      showmessage('Hubo un error al conectarse a la base de datos');
    end;
  end;
end;

Estas son las funciones RegRead y RegWrite

Código Delphi [-]
function regwrite(nombre, valor: string): boolean;
var
  registro: tregistry;
begin
  registro:= tregistry.Create;
  result:= true;
  with (registro) do begin
    try
      if (openkey('\software\Proyecto6527', true)) then
        writestring(nombre, valor)
      else
        result:= false;
    finally
      free;
    end;
  end;
end;

function regread(ruta, nombre, valor: string): string;
var
  registro: tregistry;
begin
  registro:= tregistry.Create;
  result:= '';
  with (registro) do begin
    try
      if (openkey(ruta, true)) then begin
        result:= readstring(nombre);
        if (result = '') then begin
          regwrite(nombre, valor);
          result:= valor;
        end;
      end;
    finally
      free;
    end;
  end;
end;

...y este es el orden de creación de los componentes en el Código Fuente del Proyecto

Código Delphi [-]
Application.CreateForm(TDataModule1, DataModule1);
  Application.Initialize;
  Application.MainFormOnTaskbar := True;

Si alguien pudiera decirme qué estoy haciendo mal (le he dado mil vueltas a esto y no encuentro qué sea), o sugerirme una manera más sencilla y efectiva de hacerlo se lo agradecería bastante.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Conexion a base de datos Sacmaed Conexión con bases de datos 8 06-06-2010 22:12:33
conexion de una base de datos airam Conexión con bases de datos 0 29-05-2008 22:56:59
conexion con base de datos johnniewalker Conexión con bases de datos 5 03-12-2007 13:38:25
Conexion de Base de Datos DBF jmedina Conexión con bases de datos 4 13-09-2004 08:06:34
Conexion con Base de Datos trex2000 Conexión con bases de datos 0 19-04-2004 23:59:54


La franja horaria es GMT +2. Ahora son las 16:45:18.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi