Club Delphi  
    FTP   CCD     Enlaces   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 Desplegado
  #1  
Antiguo 16-03-2012
agustinbus agustinbus is offline
Miembro
 
Registrado: ago 2007
Posts: 44
agustinbus Va por buen camino
Mini tutorial Zeos + Firebird

Hola como estan? abro este hilo porque creo que ya hice varias preguntas en el foro y todavia no aporte nada.
Aunque sea muy pequeño este mini tutorial, creo que es mejor aportar algo que nada y me parece que a algunas personas va a servirle.
Me dejo de hablar y nos ponemos manos a la obra.

Voy a tomar como referencia el tutorial hecho por Caral en donde se explica como iniciarse con firebird.

Haremos un programita EXTREMADAMENTE sencillo utilizando los componentes ZEOS en donde mostraremos:

-Como conectarnos a una BD firebird
-Como insertar registros
-Como actualizar registros (o modificar)
-Como eliminar registros


Primero que nada creamos una tabla en firebird y le pondremos como nombre CONTACTOS y los siguientes campos:

ID- Integer - Autoincrement
NOMBRE - Varchar
APELLIDO - Varchar
TELEFONO - Varchar

como vemos en la imagen:




Para que nos funcione el campo ID y sea autoincrement tenemos que crear un Generador. Como es eso?

En el campo ID le damos doble clic al casillero AutoInc y se nos abrira una ventanita. En esa ventana seleccioanmos la pestaña Generador y luego marcamos el checkbox Crear generador. Despues de eso, dentro de la misma ventanita, vamos a la pestaña Disparador y seleccionamos el checkbox Crear disparador. Terminamos dandole OK a la ventanita







Listo!!! ya tenemos nuestra tabla y ahora que hacemos?

Pasamos a delphi!!!

Creamos un nuevo proyecto y colocamos en el form: 3 botones, 1 ZConnection, 1 ZQuery, 1 DBGrid, 1 DataSource



con las propiedades:

Boton de insercion:
-name: button1
-caption: Agregar contacto

Boton de edicion (o actualizacion o modificacion):
-name: button2
-caption: Modificar contacto

Boton de eliminacion:
-name: button3
-caption: Eliminar contacto


ZConnection:
-Database: (Seleccionamos la base de datos firebird en donde la hayamos guardado)
-HostName: si es un sistema en local, ponemos localhost
-Name: ZConection1
-Password: el pass de firebird que por lo general es: masterkey
-Protocol: firebird x.x (x.x es la version en la cual hayamos creado nuestra BD)
-User: por lo general es SYSDBA
-Connected: por ultimo connected a true.

ZQuery:
-Connection: seleccionamos el ZConnection1
-SQL: se nos abre una ventanita y escribimos: SELECT * FROM CONTACTOS
-Name: ZQuery1
-Active: True

DataSource:
-Name: DataSource1
-Dataset: seleccionamos el ZQuery1


DBGrid:
-Name: DBGrid1
-DataSource: DataSource1


Una vez que tenemos todos los componentes en nuestro form hacemos doble clic sobre el ZQuery, se nos abre una ventanita en donde vamos a hacer clic derecho add all fields.



Cuando se agreguen los campos (fields) seleccionamos ID (Autoincrement) y para que se genere automaticamente el numero, le cambiamos las propiedades:
-Required: False
-ProviderFlags
--pfInUpdate: False


Por falta de tiempo voy a tener que detenerme aca , pero protito agregare lo que falta.

Vayan guardando su proyecto!
PD: si algun moderador ve que me confundi en algo o falta algo, o esta mal explicado, diganme que con gusto lo corrijo!
Saludos!!!
Responder Con Cita
  #2  
Antiguo 16-03-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: Planeta Agua
Posts: 21.557
Casimiro Notevi Va camino a la fama
Estupendo

Una duda, no conozco bien zeos, lo he usado poco, pero me ha resultado extraño esto:


ZConnection:
-Protocol: firebird x.x (x.x es la version en la cual hayamos creado nuestra BD)

Supongo que habrá sido un "desliz", se supone que ahí debe ir TCP/IP u otro protocolo.
__________________
/* Saludos
*/
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código

$ sudo mv system > /dev/null

Responder Con Cita
  #3  
Antiguo 16-03-2012
Avatar de white_zombie
[white_zombie] white_zombie is offline
Miembro Premium
 
Registrado: nov 2005
Ubicación: Zaragoza - España
Posts: 172
white_zombie Va por buen camino
Hola,
Cita:
ZConnection:
-Protocol: firebird x.x (x.x es la version en la cual hayamos creado nuestra BD)
Esto es correcto, en Protocol debes especificar la base de datos con la que te vas a conectar (Postgres-7, Postgres-8, firebird-2.1, firebird-2.5, etc). En función de lo elegido establece internamente como debe conectarse a la base de datos, si es por ejemplo sqlite lo hace a través de la Dll correspondiente sin utilizar TCP/IP y si es otra como firebird lo hará con TCP/Ip, con lo cual tienes que rellenar los campos Hostname y Port.

Tampoco soy un gran conocedor de Zeos pero lo he usado alguna vez y creo que el funcionamiento es así.

Un Saludo.
Responder Con Cita
  #4  
Antiguo 16-03-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.625
Caral Va por buen camino
Hola
Muchas gracias por el aporte.
Siempre estamos los que necesitamos aprender algo nuevo.
Gracias.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #5  
Antiguo 16-03-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: Planeta Agua
Posts: 21.557
Casimiro Notevi Va camino a la fama
Pues aclarada la duda

Pongo este tema "adherido" para que quede siempre en las primeras posiciones, ya que es un tema que se pregunta mucho.
__________________
/* Saludos
*/
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código

$ sudo mv system > /dev/null

Responder Con Cita
  #6  
Antiguo 16-03-2012
agustinbus agustinbus is offline
Miembro
 
Registrado: ago 2007
Posts: 44
agustinbus Va por buen camino
hola hola! como dice white_zombie ahi en protocol se especifica la base de datos, ya que por lo poco y nada que se de Zeos, estos permiten conectarse a multiples motores de BD.

Mañana seguramente subire otra parte del tuto.

Código:
Pongo este tema "adherido" para que quede siempre en las primeras posiciones, ya que es un tema que se pregunta mucho.
Muuuuchas gracias! me encanta ser parte de esta hermosa comunidad!
Responder Con Cita
  #7  
Antiguo 16-03-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: Planeta Agua
Posts: 21.557
Casimiro Notevi Va camino a la fama
Cita:
Empezado por agustinbus Ver Mensaje
Muuuuchas gracias! me encanta ser parte de esta hermosa comunidad!
Muchas gracias a tí, estos aportes son los que nos enriquecen a todos
__________________
/* Saludos
*/
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código

$ sudo mv system > /dev/null

Responder Con Cita
  #8  
Antiguo 17-03-2012
agustinbus agustinbus is offline
Miembro
 
Registrado: ago 2007
Posts: 44
agustinbus Va por buen camino
Me libere de las tareas, ahora puedo seguir con el tuto!


Creamos un nuevo form (form2) y le colocamos 3 edits con sus respectivos labels, y un boton como muestra la imagen:



Bien, el procedimiento para realizar una insercion es el siguiente, en el form1 donde tenemos la grilla y los tres botones ("Agregar contacto", "Modificar contacto", "Eliminar contacto") al presionar el boton agregar contacto, se nos despliega el form2 que acabamos de crear, introducimos los datos y presionamos el boton guardar.
Para modificar seleccionamos el registro a modificar en la grilla y el procedimiento despues es igual al de insertar.

Empezamos con algo de codigo. En el evento OnClick del boton "Agregar contacto" colocamos el siguiente codigo:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  //Limpiamos los edit
  Form2.Edit1.Clear;
  Form2.Edit2.Clear;
  Form2.Edit3.Clear;

  Form2.Caption := 'Agregar nuevo contacto';
  Form2.Position := poScreenCenter;
  Form2.ShowModal;

end;

y el en evento OnClick del boton "Modificar contacto" ponemos el siguiente codigo:

Código Delphi [-]

procedure TForm1.Button2Click(Sender: TObject);
begin
  //Asignamos los valores correspondientes a los edits
  Form2.Edit1.Text := ZQuery1NOMBRE.Value;
  Form2.Edit2.Text := ZQuery1APELLIDO.Value;
  Form2.Edit3.Text := ZQuery1TELEFONO.Value;

  Form2.Caption := 'Modificar contacto';
  Form2.Position := poScreenCenter;
  Form2.ShowModal;
end;

Muy bien, ahora podemos probar dandole a run (F9) y al presionar los botones Agregar contacto y Modificar contacto, vemos como se despliega el form.


Bueno ya realizado esto procedemos a poner el codigo que en si realiza la insercion y modificacion de un registro.

Vamos al form2 y en el evento OnClick del boton "Guardar" ponemos el siguiente codigo (esta explicado en el mismo codigo con comentarios cualquier duda me preguntan):

Código Delphi [-]
var
  id:Integer;
begin

  //Si estamos en el modo Agregar...
  if Form2.Caption = 'Agregar nuevo contacto' then
    begin
      with Form1.ZQuery1 do
        begin
          close;
          Sql.Clear;
          //Codigo para insertar un registro
          Sql.Add('insert into CONTACTOS (NOMBRE, APELLIDO, TELEFONO) values(:nom, :ape, :tel) ');
          //Asignamos a cada campo los valores correspondientes
          ParamByName('nom').AsString := Edit1.Text;
          ParamByName('ape').AsString := Edit2.Text;
          ParamByName('tel').AsString := Edit3.Text;
          ExecSQL;

          close;
          Sql.Clear;
          //Consulta para que se vean los datos en el DBGrid
          Sql.Add('select * from CONTACTOS');
          Open;

          Form2.Close;
        end;
    end
  else
    //Si estamos en el modo Modificar...
    begin
      with Form1.ZQuery1 do
        begin
          //Guardamos el codigo del registro que estamos modificando
          id := FieldByName('ID').Value;
          close;
          Sql.Clear;
          //Codigo para editar un registro
          Sql.Add('update CONTACTOS set NOMBRE= :nom, APELLIDO= :ape, TELEFONO= :tel where ID= :idd');
          //Asignamos a cada campo los valores correspondientes
          ParamByName('idd').AsInteger := id;
          ParamByName('nom').AsString := Edit1.Text;
          ParamByName('ape').AsString := Edit2.Text;
          ParamByName('tel').AsString := Edit3.Text;
          ExecSQL;

          close;
          Sql.Clear;
          //Consulta para que se vean los datos en el DBGrid
          Sql.Add('select * from CONTACTOS');
          Open;

          Form2.Close;
        end;
    end;
end;
Responder Con Cita
  #9  
Antiguo 18-03-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 7.222
ecfisa Tiene un aura espectacularecfisa Tiene un aura espectacular
Hola agustinbus.

Muchísimas gracias por el aporte.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #10  
Antiguo 19-03-2012
Avatar de rretamar
[rretamar] rretamar is offline
Miembro Premium
 
Registrado: ago 2006
Ubicación: San Francisco, Córdoba, Argentina
Posts: 966
rretamar Va camino a la fama
Muy buen aporte. Lo interesante es que este tutorial se puede aplicar prácticamente sin cambios (salvo por IBExpert, que en Linux se reemplaza por Flamerobin) en Lazarus.
__________________
Lazarus Codetyphon : Desarrollo de aplicaciones Object Pascal, libre y multiplataforma.
Responder Con Cita
  #11  
Antiguo 13-04-2012
Avatar de gmontes
gmontes gmontes is offline
Miembro
 
Registrado: jul 2004
Ubicación: Culiacán, Sinaloa, México
Posts: 626
gmontes Va por buen camino
gracias por el tutorial, llevo varios años utilizando ibexpert y nunca me di cuenta de que en la creacion de la tabla podia crear el generador y el trigger que vergüenza
__________________
Todos llevamos nuestros demonios a cuestas..
Responder Con Cita
  #12  
Antiguo 14-04-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: Planeta Agua
Posts: 21.557
Casimiro Notevi Va camino a la fama
Cita:
Empezado por gmontes Ver Mensaje
gracias por el tutorial, llevo varios años utilizando ibexpert y nunca me di cuenta de que en la creacion de la tabla podia crear el generador y el trigger que vergüenza

No se puede saber todo
__________________
/* Saludos
*/
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código

$ sudo mv system > /dev/null

Responder Con Cita
  #13  
Antiguo 14-04-2012
agustinbus agustinbus is offline
Miembro
 
Registrado: ago 2007
Posts: 44
agustinbus Va por buen camino
Me alegra q te haya gusta gmontes !!!!!
Responder Con Cita
  #14  
Antiguo 25-08-2012
Leopard2 Leopard2 is offline
Miembro
 
Registrado: may 2012
Posts: 15
Leopard2 Va por buen camino
Primero que nada agradecer por el tutorial, soy nuevo en SQl a pesar de que llevo años programando en Delphi7 con Paradox y Dbase, por lo mismo quisiera consultar el porque usa para ingresar los datos los Edit en lugar de los DbEdit ?
Saludos
Responder Con Cita
  #15  
Antiguo 25-08-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: Planeta Agua
Posts: 21.557
Casimiro Notevi Va camino a la fama
Normalmente es sólo cuestión de gustos.
Es más cómodo usar dbedits, por supuesto.
__________________
/* Saludos
*/
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código

$ sudo mv system > /dev/null

Responder Con Cita
  #16  
Antiguo 01-10-2012
Avatar de bulc
bulc bulc is offline
Miembro
 
Registrado: jun 2010
Posts: 255
bulc Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Normalmente es sólo cuestión de gustos.
Es más cómodo usar dbedits, por supuesto.
Me gustaría que en el ejemplo de Firebird pusiérais un campo de gráficos. Si no es mucho pedir. Me parecen muy importantes pero suelen quedarse fuera.
Responder Con Cita
  #17  
Antiguo 07-10-2012
pedrolazarus pedrolazarus is offline
Miembro
 
Registrado: sep 2012
Posts: 91
pedrolazarus Va por buen camino
Red face

Cita:
Empezado por agustinbus Ver Mensaje
Hola como estan? abro este hilo porque creo que ya hice varias preguntas en el foro y
Por falta de tiempo voy a tener que detenerme aca , pero protito agregare lo que falta.

Vayan guardando su proyecto!
PD: si algun moderador ve que me confundi en algo o falta algo, o esta mal explicado, diganme que con gusto lo corrijo!
Saludos!!!

Carajo, porq no pase por aqui ase dos dias

Buen tuto
Responder Con Cita
  #18  
Antiguo 18-10-2012
agustinbus agustinbus is offline
Miembro
 
Registrado: ago 2007
Posts: 44
agustinbus Va por buen camino
no uso DBEdits porque uso otros componentes con mascaras y validaciones de entradas de datos, y bueno ya me acostumbre a no usar dbedits. Por supuesto que es mas facil .

Cita:
Me gustaría que en el ejemplo de Firebird pusiérais un campo de gráficos. Si no es mucho pedir. Me parecen muy importantes pero suelen quedarse fuera.
Ya con mas tiempo agrego eso , pero yo prefiero utilizar la ruta de la imagen para que no sea tan pesada la base de datos. Entonces leo el campo ruta de la tabla y mediante la ruta cargo la imagen en un TImage.

Cita:
Carajo, porq no pase por aqui ase dos dias

Buen tuto

muchas gracias pedrolazarus!!
Responder Con Cita
  #19  
Antiguo 28-01-2013
Avatar de santiago14
santiago14 santiago14 is offline
Miembro
 
Registrado: sep 2003
Ubicación: Cerrillos, Salta, Argentina
Posts: 429
santiago14 Va por buen camino
Wink

Cita:
Empezado por gmontes Ver Mensaje
gracias por el tutorial, llevo varios años utilizando ibexpert y nunca me di cuenta de que en la creacion de la tabla podia crear el generador y el trigger que vergüenza
Yo tampoco lo sabía, me adhiero a la vergüenza y agradezco el aporte.

Santiago.
__________________
Uno es responsable de lo que hace y de lo que omite hacer.
Responder Con Cita
  #20  
Antiguo 28-01-2013
Avatar de santiago14
santiago14 santiago14 is offline
Miembro
 
Registrado: sep 2003
Ubicación: Cerrillos, Salta, Argentina
Posts: 429
santiago14 Va por buen camino
Cita:
Empezado por agustinbus Ver Mensaje
Me gustaría que en el ejemplo de Firebird pusiérais un campo de gráficos. Si no es mucho pedir. Me parecen muy importantes pero suelen quedarse fuera.
La manera mas razonable de tratar los gráficos en la BD es a través de un BLOB, luego en Delphi los podemos ver con los componentes pertinentes.
Para guardarlos y leerlos en y desde la BD hay que pasarlos a un flujo de bits (streaming) con unas clases bien hechas para tal fin.

Santiago.
__________________
Uno es responsable de lo que hace y de lo que omite hacer.
Responder Con Cita
Respuesta


Herramientas
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
Programa (Mini Tutorial) novatos Caral Varios 76 29-10-2011 01:14:50
Tutorial comparativa (IBX + Zeos + Firebird + Velocidad ) Novatos Caral Varios 20 04-07-2011 21:31:02
Bajate aqui un Tutorial de Zeos AzidRain Conexión con bases de datos 13 27-05-2007 12:15:05
tutorial de firebird santiago14 Firebird e Interbase 3 30-06-2004 21:03:00
tutorial firebird Aleca Firebird e Interbase 1 26-02-2004 12:59:58


La franja horaria es GMT +2. Ahora son las 10:50:26.


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