Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-08-2011
Avatar de pmtzg
pmtzg pmtzg is offline
Miembro
 
Registrado: jul 2007
Posts: 179
Poder: 20
pmtzg Va por buen camino
conexion a Firebird

hola amigos tengo el siguiente dilema

en una pequeña aplicacion tengo form1 y 1 datamodule llamados Dmdatos

si desde el form1 creao mando crear una base de datos me marcaba error

bueno pues puse el IBDatabase en el form1 y ya pude crear la base

pero si la deseo crear desde el form1 hasta el data module me tira el error de:

Código Delphi [-]
Access violation at adress  005cab7b in module  programa.exe read of  addresss 00000074

y ade ahi ya no paso

pero bueno si creo la base desde form1 como dije la crea sin problema pero ahora si deso abrir la misma base de datos ya creada me vuelve a sacar el mismo error

codigo para abrir base de datos ya creada :
me arroja el error desde la primera linea IBDatabase1.params.clear

es un procedure que lo mando llamar desde el form1
Código Delphi [-]
DmDatos.open_bdfb;

Código Delphi [-]
procedure TDmDatos.open_bdfb;                         { ABRE LA BD DATOS FIREBIRD}
begin
  IBDatabase1.Params.Clear;
  IBDatabase1.DatabaseName:=RutaBdFb;
  IBDatabase1.Params.Add('user_name=SYSDBA');
  IBDatabase1.Params.Add('password=masterkey');
  IBDatabase1.DefaultTransaction:=IBTran1;
  IBTran1.DefaultDatabase:=IBDatabase1;
  if not IBDatabase1.Connected then
    begin
      IBDatabase1.Connected:=true;
      IBDatabase1.Open;
    end;

  if not IBTran1.Active then
      IBTran1.Active:=true;

end;

me pueden hechar una manita

uso delphi 2007, firebird 2.1 y acceso con IBdatabase de interbase
la variable ruta tiene la ruta exacta donde crear

repito este codigo no me funciona en el datamodule pero si lo copia y lo hago desde el form1 si corre

gracias
Responder Con Cita
  #2  
Antiguo 12-08-2011
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.806
Poder: 22
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Cita:
este codigo no me funciona en el datamodule pero si lo copia y lo hago desde el form1 si corre
Esto parece indicar que además de mover el código, deberás mover los componentes a los que hace referencia
- IBDataBase1
- IBTran1

Supongo que luego, las tablas que tiren de esta base, también deberás apuntarlas a DmDatos.IBDataBase1
Responder Con Cita
  #3  
Antiguo 12-08-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Pone el TDataModule en Autocreate-forms y de esta forma te tiene que conectar. (Siempre que sean correctas la ruta y la contraseña)
Código Delphi [-]
...
implementation 
{$R *.dfm}

procedure TDataModule1.DataModuleCreate(Sender: TObject);
begin
  IBDatabase1.DatabaseName:= RutaBdFb;
  IBDatabase1.LoginPrompt:= False;
  IBDatabase1.Params.Clear;
  IBDatabase1.Params.Add('user_name=sysdba');
  IBDatabase1.Params.Add('password=masterkey');
  try
    IBDatabase1.Open;
    IBTransaction1.DefaultDatabase:= IBDatabase1;
    IBTransaction1.Active:= True
  except
    raise Exception.Create('No se puede establecer la conexión con la base de datos');
    Application.Terminate
  end
end;

procedure TDataModule1.DataModuleDestroy(Sender: TObject);
begin
  if IBDatabase1.TestConnected then
    IBTransaction1.Commit
end;
end.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #4  
Antiguo 12-08-2011
Avatar de pmtzg
pmtzg pmtzg is offline
Miembro
 
Registrado: jul 2007
Posts: 179
Poder: 20
pmtzg Va por buen camino
no puedo crear ni abrir base de datos Fb desde datamodule

Gracias a todos por sus comentarios

mi pregunta es la siguiente:

¿ que estoy haciendo mal ?

por que no puedo crear mi base de datos desde mi datamodule

y por lo mismo , por que no puedo abrirla


ese es mi problema , !!!!!!!!!!!!!!!!!!!!!!????????

una orientadita amigo quiza omiti algo que no lo vizualizo
Responder Con Cita
  #5  
Antiguo 12-08-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola pmtzg.


Cita:
por que no puedo crear mi base de datos desde mi datamodule
Ahora que reparo en lo que comentás arriba, a ver si te estoy interpretando mal...

Previamente a intentar conectarte, ¿ Estas haciendo algo como
Código Delphi [-]
var
  IBDatabase1: TIBDatabase;
begin
  IBDatabase1:= TIBDatabase.Create(Self);
  ....
end;
?

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #6  
Antiguo 12-08-2011
Avatar de pmtzg
pmtzg pmtzg is offline
Miembro
 
Registrado: jul 2007
Posts: 179
Poder: 20
pmtzg Va por buen camino
hola mi estimado eficsa

en mi data module lo tengo asi:
Código Delphi [-]
procedure TDmDatos.open_bdfb;                         { ABRE LA BD DATOS FIREBIRD}
begin
  IBDatabase1.Params.Clear;
  IBDatabase1.DatabaseName:=RutaBdFb;
  IBDatabase1.Params.Add('user_name=SYSDBA');
  IBDatabase1.Params.Add('password=masterkey');
  IBDatabase1.DefaultTransaction:=IBTran1;
  IBTran1.DefaultDatabase:=IBDatabase1;
  if not IBDatabase1.Connected then
    begin
      IBDatabase1.Connected:=true;
      IBDatabase1.Open;
    end;

  if not IBTran1.Active then
      IBTran1.Active:=true;

end;


y desde otro form por decir form1, lo ejecuto asi:
Código Delphi [-]
DmDatos.open_bdfb;


y me manda el error que aqui describo, eso es en principio para crear no puedo error y si lo creo de otra forma por decir desde un form1 si medeja

ahora bien si desde el Datamodule deseo abrir como lo describo arriba no me deja me lanza error

espero poder darme a entender

saludos
Responder Con Cita
  #7  
Antiguo 12-08-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Cuando reemplacé por tu código también me generó error.
Le hice unas modificaciones que verás comparándolo con el original y me funciona correctamente.
Código Delphi [-]
procedure TDMDatos.Open_bdfb;
begin
  IBDatabase1.DatabaseName:=RutaBdFb;
  IBDatabase1.LoginPrompt:= False;  // login desactivado
  IBDatabase1.Params.Clear;
  IBDatabase1.Params.Add('user_name=SYSDBA');
  IBDatabase1.Params.Add('password=masterkey');
  if not IBDatabase1.Connected then
  begin
      //IBDatabase1.Connected:=true; (Debajo haces Open)
     IBDatabase1.Open;
     IBTransaction1.DefaultDatabase:=IBDatabase1;
  end;
  if not IBTransaction1.Active then
    IBTransaction1.Active:=true;
end;

La llamada con que probe:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  DMDatos.Open_bdfb;
  if DMDatos.IBDatabase1.TestConnected then
    ShowMessage('Conectado correctamente');
end;

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 12-08-2011 a las 22:47:52.
Responder Con Cita
  #8  
Antiguo 12-08-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 27
Caral Va por buen camino
Hola
No entiendo, se esta creando un base de datos o accediendo a ella?.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #9  
Antiguo 12-08-2011
Avatar de pmtzg
pmtzg pmtzg is offline
Miembro
 
Registrado: jul 2007
Posts: 179
Poder: 20
pmtzg Va por buen camino
se esta creando y despues se usara

lo probare y ya te contare amigo
Responder Con Cita
  #10  
Antiguo 13-08-2011
Avatar de pmtzg
pmtzg pmtzg is offline
Miembro
 
Registrado: jul 2007
Posts: 179
Poder: 20
pmtzg Va por buen camino
ya se lo que pasa les cuento

mi amigo ecfisa me hizo unas pruebas que posteriormente yo las realize y ok

pero el error me sale cuando entra el Form

los procesos que mando llamar los ponto en :


Formpaint o FormCreate

para que se autoejecuten es ahi cuando me manda el error
si mando crear la base de datos desde mi DAtaModule

pero si lo hago igual y pongo ibdatabase en el form1 no me marca error


hay alguna manera para que mis procesos que estan en mi datamodulo
los ejecute desde otro form en forma automatica colocando los procedure
en el FormPaint sin q me marque error ????


es decir

Código Delphi [-]
form1.Formpaintprocedure TForm2.FormPaint(Sender: TObject);
begin

  datamodule.crea_base_datos;    {cuando lo ejecuto asi me marca error}

end;
Responder Con Cita
  #11  
Antiguo 13-08-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola pmtzg.

Cita:
hay alguna manera para que mis procesos que estan en mi datamodulo los ejecute desde otro form en forma automatica colocando los procedure en el FormPaint sin q me marque error?
El problema es que al invocar el procedimiento:datamodule.crea_base_datos en el evento OnPaint del form, será llamado cada vez que el form necesite repintarse.
Para que compruebes esto:
DataModule:
Código Delphi [-]
procedure TDMDatos.Open_bdfb;
begin
  IBDatabase1.DatabaseName:=RutaBdFb;
  IBDatabase1.LoginPrompt:= False;  // login desactivado
  IBDatabase1.Params.Clear;
  IBDatabase1.Params.Add('user_name=SYSDBA');
  IBDatabase1.Params.Add('password=masterkey');
  if not IBDatabase1.Connected then
  begin
      //IBDatabase1.Connected:=true; (Debajo haces Open)
     IBDatabase1.Open;
     IBTransaction1.DefaultDatabase:=IBDatabase1;
  end;
  if not IBTransaction1.Active then
    IBTransaction1.Active:=true;
end;

Form invocador: (agrega un TEdit y un TButton)
Código Delphi [-]
...
procedure TForm1.FormPaint(Sender: TObject); 
begin
  DMDatos.Open_bdfb;
  if DMDatos.IBDatabase1.TestConnected then
    ShowMessage('Conectado correctamente')
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Edit1.Visible:= not Edit1.Visible;
end;
...
Al abrir el form muestra: "Conectado correctamente", al primer click sobre el botón te va a mostrar: "No es posible realizar la operacion -- La Base de Datos está actualmente abierta". Y si cambias de ventana y volves al form, vas a ver el cartel de error en cascada tantas veces como lo hagas, ya que el form se repinta y el evento OnPaint es disparado.

En el caso de que llames a la función DMDatos.Open_bdfb desde el evento OnCreate del form, asegurate de que en el órden de creación esté primero DMDatos (Project-> Options ->Auto-create forms) . De no ser así, vas a recibir un error de EAccesViolation ya que al invocar el procedimiento Open_bdfb, en el evento OnCreate del form invocador, DMDatos aún no ha sido creado.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Conexion a una BD Firebird FelipeDiaz Firebird e Interbase 4 11-10-2007 22:25:56
Conexion con Firebird dblx Conexión con bases de datos 1 25-05-2006 23:23:55
conexion con firebird Yoli Conexión con bases de datos 1 11-03-2005 11:27:47
conexion a FIREBIRD ronson JAVA 3 26-05-2004 16:15:42
Conexion Firebird VB6 pzhero Firebird e Interbase 6 04-05-2004 19:17:12


La franja horaria es GMT +2. Ahora son las 16:22:53.


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