Tutorial (como empezar con Firebird) Para Novatos
#1
Posted 30 June 2010 - 07:28 PM
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.
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.
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......
#2
Posted 30 June 2010 - 07:55 PM
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.......
#3
Posted 01 July 2010 - 09:58 AM
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:
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:
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.
Bien, en el proximo paso crearemos la Tabla que necesitamos para nuestro programa.
Saludos
Continua.......
#4
Posted 01 July 2010 - 10:32 AM
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:
Esto nos creara una pantalla en donde podremos colocar los campos de nuestra Tabla.
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:
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......
#5
Posted 01 July 2010 - 11:00 AM
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:
Nos saldra una pantalla para crear los indices.
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......
#6
Posted 01 July 2010 - 12:00 PM
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.....
#7
Posted 01 July 2010 - 01:03 PM
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:
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 :'(
Demosle Doble Click al IBTransaction.
Nos saldra una pantalla con varias opciones, pinchemos en Read_Commited:
Bueno, ya estamos conectados y tenemos nuestras transacciones, mas o menos aseguradas.
No os olvideis de ir guardando todo...
Saludos
Continua....
#8
Posted 01 July 2010 - 01:47 PM
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:
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:
SELECT CodUsuario, Nombre, Clave FROM Usuarios WHERE CodUsuario = :cod
Quedara asi:
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:
Segimos con los botones:
Saludos
Continua.....
#9
Posted 01 July 2010 - 02:50 PM
Segimos con el form FLogin:
Coloquemos una variable (cuenta), esta nos servira para determinar la cantidad de veces que se intenta introducir la clave:
var FLogin: TFLogin; Cuenta : integer; implementation
En el evento OnCreate la iniciamos en cero:
procedure TFLogin.FormCreate(Sender: TObject); begin Cuenta := 0; end;
En el boton OK:
procedure TFLogin.BtnOkClick(Sender: TObject); begin IBQuery1.Params.ParamByName('Cod').Value:= Edit1.Text; IBQuery1.Active:= True; If IBQuery1.RecordCount < 1 then Begin Cuenta := Cuenta + 1; MessageDlg('Usuario no encontrado',mtError, [mbOK], 0); Edit1.Text := ''; Edit2.Text := ''; IBQuery1.Active := False; If Cuenta = 3 then Close; end else If IBQuery1Clave.AsString = Edit2.Text then Begin Form1.Show; IBQuery1.Active := False; FLogin.Visible:= False; end else Begin Cuenta := Cuenta + 1; MessageDlg('Clave Inválida',mtError, [mbOK], 0); Edit2.Text := ''; IBQuery1.Active := False; If Cuenta = 3 then Close; end; end;
En el boton Cancelar:
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:
program Project1; uses Forms, Unit1 in 'Unit1.pas' {Form1}, Unit2 in 'Unit2.pas' {DataModule2: TDataModule}, UFLogin in 'UFLogin.pas' {FLogin}; {$R *.res} begin Application.Initialize; Application.CreateForm(TDataModule2, DataModule2); Application.CreateForm(TFLogin, FLogin); Application.CreateForm(TForm1, Form1); Application.Run; 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
#10
Posted 01 July 2010 - 03:29 PM
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
#12
Posted 02 July 2010 - 07:13 AM
Saludos
#13
Posted 14 July 2010 - 10:43 AM
Gracias.
#14
Posted 09 October 2010 - 02:10 PM
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
#15
Posted 25 April 2011 - 07:17 AM
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.
#16
Posted 25 April 2011 - 09:22 AM
Bienvenido a DelphiAccess.
Que imagenes no se ven ?.
Saludos
#17
Posted 25 April 2011 - 10:56 AM
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,
#18
Posted 25 April 2011 - 01:57 PM
#19
Posted 18 May 2011 - 04:51 AM
Caral, en este procedimiento:
procedure TFLogin.BtnOkClick(Sender: TObject); begin IBQuery1.Params.ParamByName('Cod').Value:= Edit1.Text; IBQuery1.Active:= True; If IBQuery1.RecordCount < 1 then Begin Cuenta := Cuenta + 1; MessageDlg('Usuario no encontrado',mtError, [mbOK], 0); Edit1.Text := ''; Edit2.Text := ''; IBQuery1.Active := False; If Cuenta = 3 then Close; end else If [color=red]IBQuery1Clave.AsString[/color] = Edit2.Text then Begin Form1.Show; IBQuery1.Active := False; FLogin.Visible:= False; end else Begin Cuenta := Cuenta + 1; MessageDlg('Clave Inválida',mtError, [mbOK], 0); Edit2.Text := ''; IBQuery1.Active := False; If Cuenta = 3 then Close; end; 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.
#20
Posted 18 May 2011 - 07:58 AM
Siéntete bienvenid@ a la comunidad DelphiAccess ...
Disculpa pero no he comprendido tu pregunta... la línea que mencionas
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 ?
Saludox !