Club Delphi  
    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 Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-06-2005
Avatar de el_barto
el_barto el_barto is offline
Miembro
 
Registrado: may 2005
Ubicación: Bogota Colombia
Posts: 533
Poder: 19
el_barto Va por buen camino
Thumbs up Ventana user y password

Buenos dias, tengo creados 3 usuarios en mi base interbase incluyendo el SYSDBA como puedo crear una ventana solicitando user y password de manera que no sea la misma que me aparece cuando compilo el programa ya que esta ventana indica la ruta en donde se encuentra ubicado el archivo gdb.

Espero haberme hecho entender y gracias por una respuesta o un link donde pueda encontrarla
Responder Con Cita
  #2  
Antiguo 01-06-2005
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 22
Crandel Va por buen camino
Crea un formulario con dos edit uno para el usuario y otro para el password, un botón Conectar y otro salir.

En el click del boton conectar le pasas los paramentros USER_NAME y PASSWORD al componente TIBDatabase.

Si necesitas más ayuda comentalo.

Suerte
__________________
[Crandel]
Responder Con Cita
  #3  
Antiguo 01-06-2005
Avatar de el_barto
el_barto el_barto is offline
Miembro
 
Registrado: may 2005
Ubicación: Bogota Colombia
Posts: 533
Poder: 19
el_barto Va por buen camino
Y como puedo pasar dichos parametros??? me puedes indicar un ejemplo, ah y muchas gracias por contestar
Responder Con Cita
  #4  
Antiguo 01-06-2005
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 23
maeyanes Va por buen camino
Si no tiene parámetros tu componente IBDatabase:

Código Delphi [-]
  IBDatabase1.Params.Add('user_name=SYSDBA');
  IBDatabase1.Params.Add('password=masterkey');

Si ya existen los parámetros:

Código Delphi [-]
  IBDatabase1.Params.Values['user_name'] := 'SYSDBA';
  IBDatabase1.Params.Values['password'] := 'masterkey';
Responder Con Cita
  #5  
Antiguo 01-06-2005
Avatar de el_barto
el_barto el_barto is offline
Miembro
 
Registrado: may 2005
Ubicación: Bogota Colombia
Posts: 533
Poder: 19
el_barto Va por buen camino
en un form cree dos edit uno para el pass y otro para el user cree dos botones pero tengo aun dos dudas
1. cuando se ejecuta estas instrucciones:

Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;

2. cuando el usuario sea el correcto quiero que me lleve a una forma en donde le voy a pedir datos como valido esto.
Gracias

Última edición por el_barto fecha: 01-06-2005 a las 21:51:23.
Responder Con Cita
  #6  
Antiguo 01-06-2005
Avatar de el_barto
el_barto el_barto is offline
Miembro
 
Registrado: may 2005
Ubicación: Bogota Colombia
Posts: 533
Poder: 19
el_barto Va por buen camino
Disculpen incomodarlos otra vez pero si yo hago lo que ustedes me indicaron me sigue sale una exepcion EIBClientError, entonces puse la propiedad loginprompt en false y ahora me sale EIBInterbaseError como si primero verificara sin que me diese la oportunidad de escribirlos en los edit creados..... Por que puede ser esto? y como corregirlo
Responder Con Cita
  #7  
Antiguo 02-06-2005
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 22
Crandel Va por buen camino
Post

Hola barto,

vamos a empezar un poco mas atras.

justamente como comentas, tenes que modificar el dpr de tu proyecto, para que en vez de que cree y ejecute tu formulario principal primero comience con la ventana del password.

(no tengo el dephi a mano, asi que puede a ver algun error de sintaxis)

Código Delphi [-]
   Application.Initialize;
   Application.CreateForm(TDataModule, DataModule);
   
   FormPassword := TFormPassword.Create; // creas el formulario
   if FormPassword.ShowModal = mrOk then  // mostramos el formulario con ShowModal que lo configuramos
                                        // para que nos devuelva mrOk si los datos son correctos
   begin
      FormPassword.Free;  // lo destruimos porque ya no lo necesitamos
      Application.CreateForm(TForm1, Form1); // Ahora si lanzas tu formulario principal 
      Application.Run;
   end;

Ahora en el click del boton Conectar hacemos esto:

Código Delphi [-]
     DataModule.IBDatabase.Params.Values['USER_NAME'] := EditUser.Text;  
     DataModule.IBDatabase.Params.Values['PASSWORD']  := EditPassword.Text;
 
     try
       DataModule.IBDatabase.Open;  // probamos conectarnos con los parametros que introdujo el usuario
     
     except
        MessageDlg(...);  // mensaje de error
     end;
 
     if DataModule.IBDatabase.Connected then
     begin
       ModalResult := mrOk;  //  Avisamos que todo esta OK
     end;

Aca lo que necesitas

Suerte
__________________
[Crandel]
Responder Con Cita
  #8  
Antiguo 02-06-2005
Avatar de el_barto
el_barto el_barto is offline
Miembro
 
Registrado: may 2005
Ubicación: Bogota Colombia
Posts: 533
Poder: 19
el_barto Va por buen camino
Primero que todo Gracias por que has sido el unico interesado en mi caso.
Bueno puntualmente en esta linea:
DataModule.IBDatabase1.Params.Values['USER_NAME'] := Edit1.Text;
DataModule.IBDatabase1.Params.Values['PASSWORD'] := Edit2.Text;
me esta sacando error, como me indicaste esta creado en mi boton conectar, dice que no esta declarado DataModule
Responder Con Cita
  #9  
Antiguo 02-06-2005
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 23
maeyanes Va por buen camino
Dónde tienes colocado el componente IBDatabase?

En el código que te puso Crandel, está usando DataModule a modo de ejemplo. En tu caso debes usar el módulo o forma que tiene el IBDatabase.

Ahora, si tu IBDatabase está en la forma principal, entonces crea un DataModule y corta y pega el IBDatabase a ese DataModule, así podrás usar el IBDatabase sin necesidad de crear la forma principal. Checa bien el ejemplo de Crandel y verás que crea un DataModule antes de la creación de TFormPassword.


Saludos...
Responder Con Cita
  #10  
Antiguo 02-06-2005
Avatar de el_barto
el_barto el_barto is offline
Miembro
 
Registrado: may 2005
Ubicación: Bogota Colombia
Posts: 533
Poder: 19
el_barto Va por buen camino
Gracias, si tengo creado mi IBDatabase1 en mi form1 que es la principal e hice tal y como me indico Crandel en su ejemplo, es decir

begin

Application.Initialize;
Application.CreateForm(TDataModule, DataModule);
Form2 := TForm2.Create;
if Form2.ShowModal := mrOK then
begin
Form2.Free;
Application.CreateForm(TForm1, Form1);
Application.Run;
end;
end.

pero lo que no entiendo es cuando me dices que corte y pegue mi IBDatabase y lo que pegue en mi DataModule???, en este codigo se creo el DataModule a donde pego mi IBDatabase lo quito de mi form1???, gracias
Responder Con Cita
  #11  
Antiguo 02-06-2005
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 23
maeyanes Va por buen camino
A lo que me refiero es que el componente IBDatabase lo quites de tu Form1 y lo pongas en DataModule... Puedes hacerlo cortando el componente (Edit|Cut) de Form1 y pegándolo (Edit|Paste) en DataModule. De esta forma todas las propiedades que modificaste en IBDatabase se conservan.

Espero que ahora si me de a entender...

Saludos...
Responder Con Cita
  #12  
Antiguo 02-06-2005
Avatar de el_barto
el_barto el_barto is offline
Miembro
 
Registrado: may 2005
Ubicación: Bogota Colombia
Posts: 533
Poder: 19
el_barto Va por buen camino
Upps pero no puedo cortar y pegar mi database por que en mi form1 hay objetos que necesitan estar conectados a mi database y cuando los pongo en true pues no me deja por que no tiene asignado database
Responder Con Cita
  #13  
Antiguo 02-06-2005
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 23
maeyanes Va por buen camino
Me imagino que en tu Form1 tienes también componentes IBDataSet, DataSource y similares, no?

Si es así, selecciona todos esos componentes junto con el IBDatabase y córtalos y pégalos en el DataModule, así todos tus componentes de acceso a datos quedarán en el mismo lugar. Cuando necesites asígnar alguno de estos componentes a un control (por ejemplo un DBGrid), solo agrega en el uses de la unidad en cuestion el DataModule y listo, estarán disponibles para usarse.

Saludos...
Responder Con Cita
  #14  
Antiguo 02-06-2005
Avatar de el_barto
el_barto el_barto is offline
Miembro
 
Registrado: may 2005
Ubicación: Bogota Colombia
Posts: 533
Poder: 19
el_barto Va por buen camino
Gracias tu ayuda es valiosisima, estas en lo cierto ahora si me deja poner en true mis objetos y no me afecto mi combobox mi mi grid pero ahora el puñetero programa me saca error en mi unit 2 precisamente cuando el boton conectar entra en funcion

procedure TForm2.Button1Click(Sender: TObject);
begin
DataModule.IBDatabase1.Params.Values['USER_NAME'] := Edit1.Text;
DataModule.IBDatabase1.Params.Values['PASSWORD'] := Edit2.Text;
try
DataModule.IBDatabase1.Open;
except
MessageDlg ('Error en el ingreso', mtwarning,[mbyes,mbno],0);
if DataModule.IBDatabase1.Connected then
begin
ModalResult := mrOk;
end;
end;
end.

[Error] Unit2.pas(46): ';' expected but '.' found
[Error] Unit2.pas(55): Declaration expected but end of file found
[Fatal Error] mejorproycombo.dpr(9): Could not compile used unit 'Unit2.pas'
Responder Con Cita
  #15  
Antiguo 02-06-2005
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 22
Crandel Va por buen camino
DataModule

Un DataModule es un contenedor (que te aparece como un formulario mas) que es invisible, por lo que unicamente aloja componentes no visibles.

Esta diseñado especialmente (pero no unicamente) para contener los controles acceso a base de datos, de esta forma contienes los controles y los puedes apuntar desde todas tus units.

Esto trae varias ventajas, por ejemplo, quieres editar los datos de uno de tus clientes, que tienes seleccionados en el formulario principal pero a traves de un segundo formulario. Si los controles de los dos apuntan al mismo DataSource entonces éditas directamente el mismo cliente sin necesidad de cargar los datos o buscarlo en el segundo.

El data module lo tenes File \ new \ Other

Suerte
__________________
[Crandel]
Responder Con Cita
  #16  
Antiguo 02-06-2005
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 22
Crandel Va por buen camino
un detalle el_barto, edita todos tus mensajes con etiquetas de codigo para que tu mensaje sea más claro.

Lee la guia de estilos.
__________________
[Crandel]
Responder Con Cita
  #17  
Antiguo 02-06-2005
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 22
Crandel Va por buen camino
Parece que estaba atrasado con el hilo

Parece que ya conociste el DataModule antes que te conteste.

Te recomendaria que ahora que tienes las ideas un poco más claras y tu proyecto es chico, comienza de nuevo proyecto en limpio. Debes tener basura por cortar y pegar.

Suerte
__________________
[Crandel]
Responder Con Cita
  #18  
Antiguo 02-06-2005
Avatar de el_barto
el_barto el_barto is offline
Miembro
 
Registrado: may 2005
Ubicación: Bogota Colombia
Posts: 533
Poder: 19
el_barto Va por buen camino
Sip, pues yo hice lo siguiente corte todos mis datasource transaction, database, dataset, e ibtable a un DataModule, y deje en mi form1 mi combobox y mi grid pero en la propiedad datasource no me deja seleccionar nada, entonces fui a mi unit 1 y en uses coloque DataModule pero sale error, hay algo mal en el procedimiento??? como puedo seleccionarle a mi grid el ibtable que necesita si este ibtable esta en un datamodule???
Responder Con Cita
  #19  
Antiguo 02-06-2005
Avatar de el_barto
el_barto el_barto is offline
Miembro
 
Registrado: may 2005
Ubicación: Bogota Colombia
Posts: 533
Poder: 19
el_barto Va por buen camino
Debo colocar DataModule donde esta definifo el form cierto
Responder Con Cita
  #20  
Antiguo 02-06-2005
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 22
Crandel Va por buen camino
si debes especificar el nombre de la unit en cada una de las unit que utilicen el DataModule

Suerte
__________________
[Crandel]
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


La franja horaria es GMT +2. Ahora son las 15:09:55.


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