Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-12-2005
Moises22 Moises22 is offline
Miembro
 
Registrado: sep 2005
Posts: 53
Poder: 21
Moises22 Va por buen camino
Talking

Ya he solucionado el problema. Era que en el ConnectionString del TADOConnection yo lo vaciaba pues creia que debia estar limpio para que funcionara el sistema que estabamos montando. Una vez me cree un ConnectionString al cual le quite la ruta todo me funciona correctamente, excepto una cosa y es que en el codigo que me facilitaste encuentro un pequeño desajuste, cuando salta el explorer si lo cancelo la aplicacion se cierra, pues bien yo he de permitir que el usuario no elija ninguna base de datos si lo desea, y tambien que en el momento que quiera pueda cambiar la ruta de la base de datos.

Voy a Trabajar con ello y en cuanto tenga un resultado la pego aqui para que los demas usuarios no tengan el problema que yo tube.

MUCHAS GRACIAS POR TODO
Responder Con Cita
  #2  
Antiguo 15-12-2005
Moises22 Moises22 is offline
Miembro
 
Registrado: sep 2005
Posts: 53
Poder: 21
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
  #3  
Antiguo 16-12-2005
Avatar de epuigdef
epuigdef epuigdef is offline
Miembro
 
Registrado: jul 2005
Posts: 196
Poder: 21
epuigdef Va por buen camino
Muy bien!


Estoy contento que al final solucionaras el problema. Ayer tuve fiesta y por esto no te escribí.

A partir de hoy, tus conexiones a base de datos van a ser pura rutina!

Un saludo

Edu
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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


La franja horaria es GMT +2. Ahora son las 14:33:43.


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