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

Respuesta
 
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
  #2  
Antiguo 06-08-2014
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.269
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Es posible que si usas la misma clave para leer y para escribir funcione...

Cita:
Empezado por grandzon Ver Mensaje
Código Delphi [-]
...
begin
  rutaBD:=regread('Softwate\Proyecto6527', 'Base de Datos', ''); //tratar de leer la ruta a base de datos
  ...

Cita:
Empezado por grandzon Ver Mensaje
Código Delphi [-]
  ...
      if (openkey('\software\Proyecto6527', true)) then
        writestring(nombre, valor)
...
...Softwate <> Software...

__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 06-08-2014
grandzon grandzon is offline
Miembro
NULL
 
Registrado: jul 2014
Posts: 14
Poder: 0
grandzon Va por buen camino
Gracias por hacerme notar esa falta hermano, pero luego de corregirla ahora me da 'Authentication failed'
Responder Con Cita
  #4  
Antiguo 07-08-2014
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.269
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
¿Tu Base de Datos tiene contraseña?
La mía sin contraseña (la que viene de pruebas con Delphi) ha conectado sin problemas.
Si la Base de Datos tiene contraseña, debes cambiar la cadena de conexión.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 10-08-2014
grandzon grandzon is offline
Miembro
NULL
 
Registrado: jul 2014
Posts: 14
Poder: 0
grandzon Va por buen camino
Gracias por sus aclaraciones Neftali, el problema era justamente ese "la contraseña" jajaja... la solución es que en lugar de especificarla en la propiedad "password" debí hacerla en la propiedad "Jet OLEDBatabase password"... hasta un poco de vergüenza me dio, pero como dicen "no hay preguntas tontas solo tontos que no preguntan" , gracias de nuevo
Responder Con Cita
Respuesta



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 04:50:35.


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