Ir al contenido



Foto

Tutorial (como empezar con Firebird) Para Novatos


  • Por favor identifícate para responder
32 respuestas en este tema

#1 Caral

Caral

    Advanced Member

  • Administrador
  • 4.241 mensajes
  • LocationCosta Rica

Escrito 30 junio 2010 - 07:28

Hola
Este tutorial lo voy a hacer, por y para novatos, poco a poco, (estoy corto de tiempo. :'( ), tratare de hacerlo paso a paso para que se entienda mejor.
Espero ayude a alguien. (y)
Aprovecho por agradecer a todos los que me enseñaron, en especial a Casimiro de ClubDelphi.

Como novatos no sabemos nada de firebird asi que empezamos a buscar por todo lado y no encontramos lo que necesitamos, logico, ley de Murphy. :D
Empezando por como se trabaja, como se hace un bd, una tabla, como se genera el sql, etc. etc.., todo se nos complica y por supuesto no lo entendemos.

Bueno, empecemos:

Primero vamos a necesitar descargar firebird AQUI hay uno de los sitios de descarga.
Lo instalamos practicamente dando siguiente, es muy sencillo.

Ahora necesitamos un manejador de BD, en este caso el mas practico y sencillo es IBExpert, lo descargamos AQUI y lo instalamos.

Una vez hecho esto, ya podemos empezar creando la base de datos esto lo haremos desde IBExpert en el proximo paso.

En este tutorial crearemos un programa sencillo que nos permita loguearnos y entrar al programa, para eso de momento solo crearemos una tabla: Usuarios.
Saludos
Continua, espero os interese......

  • 0

#2 Caral

Caral

    Advanced Member

  • Administrador
  • 4.241 mensajes
  • LocationCosta Rica

Escrito 30 junio 2010 - 07:55

Hola
Seguimos:
Una vez que hemos instalado Firebird nos preguntamos:
Donde esta?,
Como lo activo o no?,
Como arranca?.
Bien, a la hora de instalar Firebird se puede dejar solo o colocar donde deseemos los archivos, ¿pero como sabemos si esta corriendo, donde lo vemos?.
Bien, en el panel de control nos aparecera un icono, si le damos doble click podremos acceder y lo podremos configurar para que arrenque con windows o manualmente, pararlo o correrlo.
Facil.
Saludos
Continuamos.......
  • 0

#3 Caral

Caral

    Advanced Member

  • Administrador
  • 4.241 mensajes
  • LocationCosta Rica

Escrito 01 julio 2010 - 09:58

Hola
Empecemos con IBExpert:
Una vez que arranca veremos una serie de opciones en la parte alta.
Para crear una BD nueva seguimos estos pasos:
En el menu, Database, buscamos y presionamos en Register Database.
Nos saldra una pantalla en la que colocaremos los datos de la BD que vamos a crear, asi:

Imagen Enviada

En Database File pondremos la ruta que tendra la nueva BD asi como el nombre que le vallamos a poner,
en este caso le pusimos MIDB.FDB, acordaros de ponerle FDB (firebird database).
En Database Alias colocamos el nombre que queramos, este sera el nombre que aparecera en la lista del IBExpert.
En User Name escribimos SYSDBA, siempre sera este.
En Password escribimos masterkey, la clave se podra cambiar posteriormente.
Por ahora Role, Charset y lo demas lo dejamos como esta y presionamos en el boton register.
Ya la tenemos registrada, pero no tenemos ninguna BD, tendremos que crearla, para eso seguimos:

En el mismo menu Database, buscamos: Create Database y lo presionamos.
Nos mostrara la pantalla de creacion de database, asi:

Imagen Enviada

Escribimos practicamente los mismos datos incluyendo usuario, password, etc y presionemos OK.
Nota: Es posible que os salga la pantalla de registro otra vez, simplemente cerradla.
Si buscamos la carpeta donde la colocamos veremos que ya se creo.
Si le damos doble click (en el programa IBExpert) al alias que creamos, se conectara con todo lo necesario para funcionar nuestra BD.

Imagen Enviada

Bien, en el proximo paso crearemos la Tabla que necesitamos para nuestro programa.
Saludos
Continua.......
  • 0

#4 Caral

Caral

    Advanced Member

  • Administrador
  • 4.241 mensajes
  • LocationCosta Rica

Escrito 01 julio 2010 - 10:32

Hola
Seguimos con IBExpert:
Ahora crearemos nuestra tabla USUARIOS.
Dandole doble click a nuestro alias creado, nos muestra todas las opciones que necesitamos.
Buscamos Tables y con click derecho nos saldra la lista, el primer punto es New Table, le damos click:

Imagen Enviada

Esto nos creara una pantalla en donde podremos colocar los campos de nuestra Tabla.

Imagen Enviada

Bien, ahora ya podemos cambiarle el nombre y poner los datos de nuestros campos.
Recordad que para crear un nuevo campo se presiona en el boton que se muestra en la foto anterior.

Asi quedaria nuestra tabla ya terminada, copiadla igual:

Imagen Enviada 

Una vez terminado presionamos el boton para crearla y nos mostrara una pantalla para hacer un Commit.
Presionaremos el boton Commit y listo, ya tenemos nuestra tabla.

Ahora deberiamos crearle un indice ya que Firebird se enoja (y me consta) cuando no le pones indices a las tablas.
En el proximo paso lo haremos.
Saludos
Continua......
  • 0

#5 Caral

Caral

    Advanced Member

  • Administrador
  • 4.241 mensajes
  • LocationCosta Rica

Escrito 01 julio 2010 - 11:00

Hola
Los indices de nuestra Tabla:

Al igual que en la pantalla anterior esta vez buscaremos la opcion Indices, le damos click derecho y buscaremos New Index:

Imagen Enviada

Nos saldra una pantalla para crear los indices.

Imagen Enviada

Aqui buscaremos nuestra tabla en el primer desplegable, en este caso solo tenemos USUARIOS.
Pasaremos el Campo CodUsuario al lado derecho de la lista y lo haremos unico.
Presionamos OK
Esto nos enviara a la pantalla del Commit, presionamos ese boton y nos creara el Indice.

Bien, ya tenemos el primer paso listo, creo que podemos empezar con delphi.
Saludos
Continua......



  • 0

#6 Caral

Caral

    Advanced Member

  • Administrador
  • 4.241 mensajes
  • LocationCosta Rica

Escrito 01 julio 2010 - 12:00

Hola
Ahora nos toca pensar en como nos conectaremos con nuestra BD desde delphi.
Hay varios componentes que lo hacen, los que yo conozco, Zeos e Intebase (IB).
Bien:
Zeos es muy bueno, muy rapido, sencillo de instalar, gratis etc.
IB esta incluido en Delphi, es rapido, sencillo de usar, etc.
Cual usamos entonces?.
Segun mi poca experiencia:
Zeos aunque muy bueno, aveces grita y no nos dice por que, nos muestra errores y no nos dice ni donde ni como, ni cuando, osea, para nosotros los novatos es un dolor de cabeza.
IB tambien aveces grita, pero por lo menos de vez en cuando nos dice donde esta el error, segun mi punto de vista es mas comodo, por decirlo de alguna manera.
Por ende, nos conectaremos por medio de IB.
Saludos.
Continua.....

  • 0

#7 Caral

Caral

    Advanced Member

  • Administrador
  • 4.241 mensajes
  • LocationCosta Rica

Escrito 01 julio 2010 - 01:03

Hola
Empecemos con Delphi.
Una vez arrancado nuestro delphi, tenemos el form1 de siempre.
Creemos un Datamodule que para mi es una buena opcion.
Entonces:
File, new, DataModule nos creara el Datamodule1.

Vamos a la paleta Interbase y le arrastraremos a nuestro dataModule:
Un IBDatabase
Un IBTransaction

Demosle Doble Click al IBDatabase:
Os saldra una pantalla en la que pondremos esencialmente los mismos datos que pusimos con el IBExpert:

Imagen Enviada

Dejad sin marcar la opcion Login Prompt, asi no os pedira el password.
Si queris asegurar la conexion, dadle a Test, os dara un mensaje, si esta bien:

---------------------------
Successful Connection
---------------------------
OK 
---------------------------

Ya estamos conectados, dadle OK.

Ahora necesitamos las transacciones, en esto Firebird es muy concreto si no las haces se enoja y mucho  :'( 8o|

Demosle Doble Click al IBTransaction.
Nos saldra una pantalla con varias opciones, pinchemos en Read_Commited:

Imagen Enviada


Bueno, ya estamos conectados y tenemos nuestras transacciones, mas o menos aseguradas.
No os olvideis de ir guardando todo... (y)
Saludos
Continua....
  • 0

#8 Caral

Caral

    Advanced Member

  • Administrador
  • 4.241 mensajes
  • LocationCosta Rica

Escrito 01 julio 2010 - 01:47

Hola
Ahora crearemos el form que nos servira para loguearnos y entrar al programa usando la tabla USUARIOS que creamos:
Ya sabemos: File, new, form.
Arrastremos al nuevo form:
2 Edit.
2 Label
2 Botones
1 IBQuery (de la paleta Interbase)

Cambiemos el Name del form por FLogin, quedaria asi:

Imagen Enviada

Bien, ahora nos queda poner el codigo que necesitamos:
Empecemos por el IBQuery:

En la propiedad Database pondremos la direccion de la IBDatabase:
DataModule2.IBDatabase1

En la propiedad SQL (strings) presionaremos el boton y nos saldra una pantalla:
En este caso solo tendremos la Tabla Usuarios, escribiremos esto:


sql
  1. SELECT CodUsuario, Nombre, Clave FROM Usuarios WHERE
  2. CodUsuario = :cod



Quedara asi:

Imagen Enviada

Le presionamos OK y listo.
Ahora en la propiedad Params del IBQuery, presionamos el boton y nos saldra una pequeña pantalla, ahi cambiaremos algunos datos, quedara asi:

Imagen Enviada

Segimos con los botones:
Saludos
Continua.....


  • 0

#9 Caral

Caral

    Advanced Member

  • Administrador
  • 4.241 mensajes
  • LocationCosta Rica

Escrito 01 julio 2010 - 02:50

Hola
Segimos con el form FLogin:
Coloquemos una variable (cuenta), esta nos servira para determinar la cantidad de veces que se intenta introducir la clave:


delphi
  1. var
  2.   FLogin: TFLogin;
  3.   Cuenta : integer;
  4.  
  5. implementation



En el evento OnCreate la iniciamos en cero:


delphi
  1. procedure TFLogin.FormCreate(Sender: TObject);
  2. begin
  3.   Cuenta := 0;
  4.  
  5. end;



En el boton OK:


delphi
  1. procedure TFLogin.BtnOkClick(Sender: TObject);
  2. begin
  3.   IBQuery1.Params.ParamByName('Cod').Value:= Edit1.Text;
  4.   IBQuery1.Active:= True;
  5. If IBQuery1.RecordCount < 1 then
  6.     Begin
  7.       Cuenta := Cuenta + 1;
  8.       MessageDlg('Usuario no encontrado',mtError, [mbOK], 0);
  9.       Edit1.Text := '';
  10.       Edit2.Text := '';
  11.       IBQuery1.Active := False;
  12.       If Cuenta = 3 then Close;
  13.     end
  14.   else
  15.       If IBQuery1Clave.AsString = Edit2.Text then
  16.         Begin
  17.           Form1.Show;
  18.           IBQuery1.Active := False;
  19.           FLogin.Visible:= False;
  20.         end
  21.     else
  22.         Begin
  23.           Cuenta := Cuenta + 1;
  24.           MessageDlg('Clave Inválida',mtError, [mbOK], 0);
  25.           Edit2.Text := '';
  26.           IBQuery1.Active := False;
  27.           If Cuenta = 3 then Close;
  28.         end;
  29.  
  30. end;


En el boton Cancelar:


delphi
  1. Close;



Ahora solo nos queda que el programa arranque desde el form login:
Vamos al Proyecto, en units, project y cambiamos el orden de entrada al programa asi:


delphi
  1. program Project1;
  2.  
  3. uses
  4.   Forms,
  5.   Unit1 in 'Unit1.pas' {Form1},
  6.   Unit2 in 'Unit2.pas' {DataModule2: TDataModule},
  7.   UFLogin in 'UFLogin.pas' {FLogin};
  8.  
  9. {$R *.res}
  10.  
  11. begin
  12.   Application.Initialize;
  13.   Application.CreateForm(TDataModule2, DataModule2);
  14.   Application.CreateForm(TFLogin, FLogin);
  15.   Application.CreateForm(TForm1, Form1);
  16.   Application.Run;
  17. end.


Listo, a correr.
AHHHHHHHH, que monton de errores, logico, somos novatos y se nos olvido asignar algunas cositas. :
Son faciles de apreciar pero son errores que nos pueden pasar por descuido:

Primero regresemos un poco atras, al datamodule:

1- En el IBDatabase nos olvidamos de colocar en su propiedad DefaultTransaction el IBTransaction.
Con esto ya se ligan.
2- Lo mismo con el IBTransaction, en su propiedad DefaultDatabase lo ligamos pero esta vez con el IBDatabase.
Osea, uno con otro.

regresemos al FLogin.
Demosle doble click al IBQuery, nos saldra una pequeña pantalla, raton derecho y add, nos colocara los campos dentra de esta pantalla.
Listo, no era para tanto, corredlo, esta listo para usarse.

[move]Ojala os sirva de algo este Pequeño Tutorial hecho con mucho cariño  ;).[/move]

Saludos

Para dudas y aclaraciones estan los maestros  (y) *-)



  • 0

#10 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3.486 mensajes
  • LocationMexico City

Escrito 01 julio 2010 - 03:29

Excelente tuto amigo Caral (y) !

Con esto se tiene para empezar a trabajar con Firebird en algo realmente sencillo y simple pero básico para crear algo mucho más complejo...

Esperemos que nuestros compañeros foristas lo encuentren tan interesante como a mi me lo pareció...

Saludox ! :)... y de nuevo gracias  (b)
  • 0

#11 escafandra

escafandra

    Advanced Member

  • Moderadores
  • PipPipPip
  • 3.855 mensajes
  • LocationMadrid - España

Escrito 01 julio 2010 - 03:33

Lo dicho, excelente y trabajado aporte.  (y)

Saludos.
  • 0

#12 Wilson

Wilson

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.137 mensajes

Escrito 02 julio 2010 - 07:13

Como siempre, buen trabajo amigo caral, gracias por tu tiempo y voluntad.
Saludos
  • 0

#13 agidar

agidar

    Member

  • Miembros
  • PipPip
  • 14 mensajes

Escrito 14 julio 2010 - 10:43

Muy buen trabajo para los iniciados.

Gracias.
  • 0

#14 esocrates

esocrates

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 102 mensajes
  • LocationArgentina

Escrito 09 octubre 2010 - 02:10

Muchas gracias Caral.
Este tutorial me ha servido y mucho en mis primerísimos pasos y para perderle el miedo a Firebird.
Ahora vendra el resto...
Un saludo

  • 0

#15 puchero23

puchero23

    Newbie

  • Miembros
  • Pip
  • 1 mensajes

Escrito 25 abril 2011 - 07:17

Buenas he caído en este tutorial ya que estoy comenzando con Firebird.
La verdad me resulta muy interesante y bien redactado. Estoy teniendo problemas a la hora de la creación de la BD, me tira error sobre "I/O error during "CreateFile (open)" .....
Me serviría mucho si puede enviarme al correo las imágenes que están en el tutorial pero que no se ven.
Gracias y espero una ayudita. Saludos.
  • 0

#16 Caral

Caral

    Advanced Member

  • Administrador
  • 4.241 mensajes
  • LocationCosta Rica

Escrito 25 abril 2011 - 09:22

Hola
Bienvenido a DelphiAccess.
Que imagenes no se ven ?.
Saludos
  • 0

#17 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.262 mensajes
  • LocationArgentina

Escrito 25 abril 2011 - 10:56

Asi es amigo,
Algo pasa con ImageShack. Algunos pueden ver las imágenes y otros no...
Yo por ejemplo no puedo ver estas imágenes, aparece la foto de un sapo congelado en vez de la imagen correcta. Es como que algo las bloquea.
Lo chistoso es que en algunos hilos que tienen imágenes enlazadas desde ImageShack puedo verlas, pero a otros no.

Saludos,
  • 0

#18 casi

casi

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 190 mensajes

Escrito 25 abril 2011 - 01:57

Yo llevo una temporada subiendo las imágenes a flickr para evitar esos problemas con imageshack.

  • 0

#19 amuntsempre

amuntsempre

    Newbie

  • Miembros
  • Pip
  • 5 mensajes

Escrito 18 mayo 2011 - 04:51

Hola, este es mi primer post.

Caral, en este procedimiento:



delphi
  1. procedure TFLogin.BtnOkClick(Sender: TObject);
  2. begin
  3.   IBQuery1.Params.ParamByName('Cod').Value:= Edit1.Text;
  4.   IBQuery1.Active:= True;
  5. If IBQuery1.RecordCount < 1 then
  6.     Begin
  7.       Cuenta := Cuenta + 1;
  8.       MessageDlg('Usuario no encontrado',mtError, [mbOK], 0);
  9.       Edit1.Text := '';
  10.       Edit2.Text := '';
  11.       IBQuery1.Active := False;
  12.       If Cuenta = 3 then Close;
  13.     end
  14.   else
  15.       If [color=red]IBQuery1Clave.AsString[/color] = Edit2.Text then
  16.         Begin
  17.           Form1.Show;
  18.           IBQuery1.Active := False;
  19.           FLogin.Visible:= False;
  20.         end
  21.     else
  22.         Begin
  23.           Cuenta := Cuenta + 1;
  24.           MessageDlg('Clave Inválida',mtError, [mbOK], 0);
  25.           Edit2.Text := '';
  26.           IBQuery1.Active := False;
  27.           If Cuenta = 3 then Close;
  28.         end;
  29.  
  30. end;




aparece IBQuery1Clave.AsString, pero no encuentro nada parecido. ¿Hay un error o ha cambiado algo? Estoy utilizando Delphi XE, y no se donde están los valores que obtienes con el select.

Gracias.
  • 0

#20 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3.486 mensajes
  • LocationMexico City

Escrito 18 mayo 2011 - 07:58

Hola amig@ amuntsempre !

Siéntete bienvenid@ a la comunidad DelphiAccess  (y) ...


Disculpa pero no he comprendido tu pregunta... la línea que mencionas




delphi
  1. IbQuery1Clave.AsString




Hacer referencia a un campo persistente llamado Clave y que se encuentra dentro de la consulta de IBQuery1. No comprendo muy bien cuál es tu duda, podrías aclararla un poco ?  (y)


Saludox !  :)
  • 0