![]() |
Tutorial (como empezar con Firebird) Novatos
Hola
Primero que nada agradecer a casimiro, mi maestro en Firebird y por este espacio a ClubDelphi. Espero que este mini tutorial sirva de ejemplo, aunque sea sencillo, para alguien que este empezando con Firebird. Como bien sabemos los novatos la informacion siempre esta por todos lados, pero no se trata para nosotros, lo que nos complica cosas que aveces son mas sencillas de lo que parecen. Espero que este tutorial os ayude. Empecemos: Primero nos bajaremos el programa firebird y lo instalaremos, practicamente dando siguiente a todo, es muy sencillo. Ahora necesitamos un manejador, en este caso usaremos IBExpert, tambien lo descargamos e instalamos. En este tutorial trataremos de hacer un programa sencillo para poder usar Firebird conectandonos con delphi. Saludos Continua..... |
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....... |
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: ![]() 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....... |
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: ![]() 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...... |
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: ![]() 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...... |
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..... |
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: ![]() 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 :D:eek: 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...:p:) Saludos Continua.... |
Hola
Como ya tenemos casi todo listo y tenemos una tabla USUARIOS creada lo logico es hacer un Form para loguearnos, entonces crearemos un form mas. Como siempre: File New, Form. Esto nos creara el form2 que es el que iniciara el programa: 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:
Quedara asi: ![]() Presionamos OK. 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.... |
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:
En el evento OnCreate la iniciamos en cero:
En el boton OK:
En el boton Cancelar:
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:
Listo, a correr. AHHHHHHHH, que monton de errores, logico, somos novatos y se nos olvido asignar algunas cositas. :D:o 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. Ojala os sirva de algo este. Saludos Para dudas y aclaraciones estan los maestros :D:D:cool: |
Hola
Mi amigo y maestro Casimiro me envia una informacion que me parece muy importante aportar: Cita:
![]() Cita:
Saludos |
Alucinante documental de Firebid, es un placer pertenecer al clubdelphi.
Un saludo. |
Hola Caral,
es importante que cuando se crea una BBDD , se indique el CHARSET, para que luego el tema de acentos, la eñe , etc no nos den problemas a la hora de hacer búsquedas, ... siempre y cuando trabajemos en castellano. Yo suelo poner el ISO8859_1 y en general no he tenido problemas. Buena aportación, novato. Saludos |
Está bien lo que comenta fjcg02, sin embargo yo tengo la costumbre de no ponerlo en la declaración de la base de datos, sólo en los campos que me interesa hacer búsquedas y ordenaciones que se tenga en cuenta las palabras acentuadas, signos, etc.
Por ejemplo, para los campos de nombres (personas, empresas, artículos, etc.) los declaro así:
p.d.: siempre uso dominios, nunca creo los campos indicando el tipo. |
![]() ![]() ![]() gracias. |
Consulta
En el boton OK:
Tengo un problema en la linea que esta indicada If IBQuery1Clave.AsString = Edit2.Text then {Me arroja error en esta linea} [DCC Error] ULogin.pas(51): E2003 Undeclared identifier: 'IBQuery1clave' no se que hacer, agradezco la ayuda y perdonen la novatada. :confused: |
Hola
No dices el error que te envia, pero podria ser que no esta en la caja de texto el campo clave, como solucionarlo, facil. Dale doble click a IBQuery1. Te saldra una pequeña pantalla. Dale click derecho y ADD. Esto colocara los campos en esa pantalla. De momento solo coloca los que te den error, en este caso Clave. Corre el programa otra vez. Saludos PD: Hay otra forma de solucionarlo pero empecemos por ahi. |
Hola
Cita:
¿ Que es IBQuery1clave ?. Con toda seguridad un campo persistente. Así que como bien dice Caral, deberías crearlos. Aunque personalmente prefiero sustituir esa línea por :If IBQuery1.FieldByName('Clave').AsString = Edit2.Text thenY es que prefiero acceder a los campos de esta forma, en lugar de hacerlo por el correspondiente campo persistente. Te ahorras bastantes problemas de este tipo. Saludos. |
Cita:
|
OK muchachos, lo que pasa es que he estado siguiendo los pasos en el post, pero la linea de código que dice:
If IBQuery1Clave.AsString = Edit2.Text then es porque lo puse tal cual aparece en el post, realice todos los pasos, pero al darle doble clic al IBQuery1 de la forma para identificarse y tratar de adicionar los campos me sale este otro error Unknown SQL Data type (0). y los detalles que me salen son: [407A5A3B]{ibxpress140.bpl} Ib.IBError + $97 [40778C4E]{ibxpress140.bpl} Ibsql.TIBXSQLDA.Initialize + $3BE [4077AE95]{ibxpress140.bpl} Ibsql.TIBSQL.Prepare + $391 [4076BBC5]{ibxpress140.bpl} Ibcustomdataset.TIBCustomDataSet.InternalPrepare + $ED [4076DE0E]{ibxpress140.bpl} Ibcustomdataset.TIBCustomDataSet.InternalInitFieldDefs + $42 [50690D9F]{dbrtl140.bpl} DB.TDataSet.OpenCursor (Line 11348, "DB.pas" + 2) + $4 [50690F8D]{dbrtl140.bpl} DB.TDataSet.InitFieldDefs (Line 11419, "DB.pas" + 5) + $7 [407BFFF0]{ibxpress140.bpl} Ibquery.TIBQuery.InitFieldDefs + $0 [5067F6B7]{dbrtl140.bpl} DB.TDefCollection.UpdateDefs (Line 3396, "DB.pas" + 6) + $3 [506802EC]{dbrtl140.bpl} DB.TFieldDefs.Update (Line 3774, "DB.pas" + 1) + $A [22AE849B]{dcldb140.bpl} DSDesign.TFieldsEditor.DoAddFields (Line 823, "DSDesign.pas" + 5) + $C [22AE8425]{dcldb140.bpl} DSDesign.TFieldsEditor.AddFields (Line 808, "DSDesign.pas" + 1) + $2 [22AE8646]{dcldb140.bpl} DSDesign.TFieldsEditor.AddItemClick (Line 855, "DSDesign.pas" + 0) + $2 [502801CB]{vcl140.bpl } Menus.TMenuItem.Click (Line 2520, "Menus.pas" + 19) + $8 [50281787]{vcl140.bpl } Menus.TMenu.DispatchCommand (Line 3383, "Menus.pas" + 5) + $2 [50282966]{vcl140.bpl } Menus.TPopupList.WndProc (Line 4489, "Menus.pas" + 4) + $E [502828B5]{vcl140.bpl } Menus.TPopupList.MainWndProc (Line 4464, "Menus.pas" + 2) + $5 [50076360]{rtl140.bpl } Classes.StdWndProc (Line 13014, "Classes.pas" + 8) + $0 [502C98F5]{vcl140.bpl } Forms.TApplication.StopHintTimer (Line 10515, "Forms.pas" + 3) + $6 [502C8749]{vcl140.bpl } Forms.TApplication.ProcessMessage (Line 9784, "Forms.pas" + 30) + $1 [502C878E]{vcl140.bpl } Forms.TApplication.HandleMessage (Line 9814, "Forms.pas" + 1) + $4 [502C8AB9]{vcl140.bpl } Forms.TApplication.Run (Line 9951, "Forms.pas" + 26) + $3 [0042D94A]{bds.exe } bds.bds (Line 200, "" + 8) + $FFFB No he entendido nada de lo que dice :(. Ha se me olvidaba decirles que estoy utilizando el Delphi 2010, perdonen por la demora para responder he tenido que salir. Y muchas gracias por responder tan prontamente :) |
Cita:
Así que aunque utilices campos persistentes, los procesos de prueba y puesta a punto tienen que ser igualmente largos y complejos. |
La franja horaria es GMT +2. Ahora son las 16:08:23. |
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