PDA

Ver la Versión Completa : Cómo comenzar con Firebird


malcomp
15-07-2007, 05:33:18
Hola a todos.
He leído mucho acerca de las bases de datos, y creo que Firebird es lo mejor. Pero realmente no entiendo cómo empezar.
Me gustaría que me orientaran, pero por favor, he leído ese manual de Firebird y varios otros temas, pero realmente no logro hacer nada.
Qusiera saber qué es lo que debo descargar para instalar Firebird, saber si exiten componentes para Delphi 7, si creo un Form, qué debo hacer a continuación. Imagínense que le están explicando a un niño. Yo realemnte no he logrado entender cómo poder leer una tabla en access, menos aún crear una BD en Firebird. Ejemplos reales serán bienvenidos. La verdad es que no entender este tema me tiene vuelto loco. :p
De antemano, muchas gracias a todos.

marcoszorrilla
15-07-2007, 13:02:01
Pues es muy sencillo vas al sitio FireBird te descargas la versión para Windows tiene un instalador por lo tanto la instalación es muy sencilla y luego puedes utilizar los componentes de la paleta IB de Delphi.

Cuando hayas completado estos pasos, sigues preguntando.


Un Saludo.

Delphius
15-07-2007, 20:48:25
Añadiendo a lo que marcoszorrila te ha dicho, sería oportuno que leas la Cara Oculta de Delphi 4 (pdf), una simple búsqueda en google te puede llevar a uno de los sitios de descarga. No te lies por lo de D4, lo importante es que comprendas el concepto... además poco a cambiado (por lo menos de D4 a D6).

Saludos,

malcomp
16-07-2007, 04:17:15
He descargado el archivo Firebird-2.0.1.12855-1_win32.zip, y lo descomprimí. Algo debo estar haciendo mal porque he ejecutado el archivo fbserver.exe dentro del durectorio bin, pero no parece instalar nada.


:confused:

Cañones
16-07-2007, 04:24:58
Bajate el .exe, el zip trae otras cosas que no te van a servir.
Con la Cara Oculta de Delphi 4 vas a aprender mucho sobre SQL.

Saludos.

malcomp
16-07-2007, 04:42:13
Ya. BAjé el EXE y está instalado.
¿Qué hago ahora? La verdad es que descargué el archivo La Cara Oculta de Delphi 4, pero estoy tan desmotivado por no poder entender el tema, que mientras no logre conectarme a una tabla y agregar mis datos personales en ella, creo que no podré leer nada..... No sé qué me pasa, es la primera vez que no logro comprender un tema, y eso que aprendí Delphi solito.. (Será la edad ?... jijijijiji)

egostar
16-07-2007, 04:53:49
Ya. BAjé el EXE y está instalado.
¿Qué hago ahora? La verdad es que descargué el archivo La Cara Oculta de Delphi 4, pero estoy tan desmotivado por no poder entender el tema, que mientras no logre conectarme a una tabla y agregar mis datos personales en ella, creo que no podré leer nada..... No sé qué me pasa, es la primera vez que no logro comprender un tema, y eso que aprendí Delphi solito.. (Será la edad ?... jijijijiji)

Ahora te recomiendo que bajes IBExpert (http://www.ibexpert.com/) para que diseñes tus bases de datos.

Referente a tu desmotivación, no veo el porque, el tema es muy simple hasta este punto, lo dificil viene una vez que ya "ingresaste tus datos personales" en una tabla, así que reservate unos añitos :D:D, porque aún no comienzas lo bueno.

1. Tener la base de datos, (ya la tienes) y leer la cara oculta
2. Tener un administrador de bases de datos. (baja IBExpert (http://www.ibexpert.com/)) y leer la cara oculta
3. Tener Delphi (ya lo tienes). y leer la cara oculta.

Salud OS.

malcomp
16-07-2007, 05:09:05
Egostar, me queda muy claro:
Debo leer la Cara Oculta de Delphi 4
Debo leer la Cara Oculta de Delphi 4
Debo leer la Cara Oculta de Delphi 4
Debo leer la Cara Oculta de Delphi 4
Debo leer la Cara Oculta de Delphi 4
Debo leer la Cara Oculta de Delphi 4
Debo leer la Cara Oculta de Delphi 4
Debo leer la Cara Oculta de Delphi 4
Debo leer la Cara Oculta de Delphi 4
Debo leer la Cara Oculta de Delphi 4
Debo leer la Cara Oculta de Delphi 4
Debo leer la Cara Oculta de Delphi 4
Debo leer la Cara Oculta de Delphi 4
Debo leer la Cara Oculta de Delphi 4
Debo leer la Cara Oculta de Delphi 4


:D:D:D:D

Al menos los componentes de IB se ven más entendibles que los de BDE. Ya al menos pude crear una base de datos y una tabla.
Ahora debo aprender cómo guardarla en el disco, llenar la tabla yeso, que según me dices, es mucho más complicado. Ahora al menos ya pude hacer algo....

Cañones
16-07-2007, 06:41:00
De la Cara Oculta de Delphi 4 tenes que ver todo lo que es SQL y algo de componentes. Tambien tenes que Bajar de la pagina de FireBird el FlameRobin, que seria el programa para crear y administrar tus BD. Es Simple y Gratis.

Paoti
16-07-2007, 17:04:45
Pasate a www.firebird.com.mx


y lee los articulos de "Paradox a Firebird"


cuidate.

malcomp
17-07-2007, 17:33:07
Hola, ya instalé el FlameRobin, pero cuando intento crear una base de datos, luego de ingresar todos los parámetros requeridos (Display Name, Path, User, Pass,e tc.) aparece el error -904, Base de datos no disponible.
¿Pero cómo va a estar disponible si recién la estamos creando?

:confused::confused::confused::confused::confused::confused:

eduarcol
17-07-2007, 17:39:32
Ese error lo da porq al instalar la base de datos no marcastes la opcion Install CLient library o no esta corriendo el servicio

malcomp
17-07-2007, 17:43:30
Oye, agradezco sobretodo la rapidez en las respuestas. Quizá para Uds. sean preguntas obvias, pero para mí es todo un enigma.

¿Dónde le digo que instale la Librería esa? ¿Al instalar Firebird?

:confused::eek:

eduarcol
17-07-2007, 17:47:06
Sip en la instalacion te da una pantalla con varias checkbox seleccionadas, pero solo una que no lo esta, y precisamente esa la dejastes asi y te esta dando problemas.

malcomp
17-07-2007, 18:03:44
Instalé todo de nuevo, incluyendo el Robin, pero sigue el mismo problema.

snif snif ! ! ! !

eduarcol
17-07-2007, 18:08:32
pero te fijastes que el checkbox este seleccionado??

y el servicio esta corriendo??

malcomp
17-07-2007, 18:18:40
Cuando reinstalé Firebird, había un check box que decía:
Copiar librerías Client en el directorio......

y esa fue la que seleccioné.
Además hay una aplicación fbserver.exe que está corriendo.

eduarcol
17-07-2007, 22:34:58
Pues trata de hacer una conexion directa con isql que trae el firebird dentro de la carpeta bin en la ruta de instalacion.

cualquier cosa pregunta

Delfino
17-07-2007, 23:16:33
¿Dónde le digo que instale la Librería esa? ¿Al instalar Firebird?
Simplemente copiar la dll fbclient q esta en el directorio bin al directorio system, eso lo q te falta creo,

por cierto durante la instalacion tienes q tener las cuatro casillas activadas no solo una..:rolleyes:

mamaro
19-07-2007, 14:18:54
Ampliando un poco lo de Delfino, te digo que el archivo "FBCLIENT.DLL" debe estar en "C:\windows\SYSTEM" para win95/98, "C:\winnt\system32" para win2000, y "C:\windows\system32" en Win XP. :rolleyes:

Creo que la librería también puede estar en el directorio de tu ejecutable, pero ésto realmente no lo probé.

malcomp
19-07-2007, 15:54:29
Ampliando un poco lo de Delfino, te digo que el archivo "FBCLIENT.DLL" debe estar en "C:\windows\SYSTEM" para win95/98, "C:\winnt\system32" para win2000, y "C:\windows\system32" en Win XP. :rolleyes:

Creo que la librería también puede estar en el directorio de tu ejecutable, pero ésto realmente no lo probé.

En efecto, el archivo estaba en ese directorio. Pero sigo sin conseguir crear la base de datos. Durante la instalación, estaban las 4 casillas marcadas, y del isql, uf... mucho para mí todavía....:confused:

brakaman
19-07-2007, 17:56:08
Hola amigo:

Ideas....
Si antes habias instalado alguna version de Interbase debes desinstalarla por completo, en el directorio windows\sysem32\ que no exita un fichero gds32.dll (o algo asi)

Luego desinstala Firebird y vuelve a instalar el motor asegurandote que la libreria fbclient.dll esta en el directorio Windows\system32

A partir de ahi arranca el servidor y ejecuta el IBEXPERT . (Lo siento no he utilizado el Flamerobin pero sera similar , creo)

Utiliza la base de datos de ejemplo de Firebird....
Ruta C:\Archivos de programa\Firebird\Firebird_2_0\examples\empbuild\Employee.fdb

registrala y conectate, deberia de funcionar.

Animo. :)

malcomp
20-07-2007, 05:06:53
eeeeeeeehhhhhh ! ! ! !
vamos mejorando....
Hice todo lo recomandado por brakaman.
Pero usé el FlameRobin. Me pude conectar a la base de datos de ejemplo de Firebird, pero cuando intenté abrirla, ahora me dice que el password y la contraseña son incorrectos....

¿Cuáles serían estos datos? :confused::confused::confused::confused::confused:

UNa vez más quiero agradecer a todos por la ayuda.
Sin duda que este foro será muy útil para todos quienes estamos partiendo en esto, porque yo creo que todos los problemas que pueden ocurrir al iniciarse, me han sucedido a mí.... jajajajajaja :D:D:D

malcomp
20-07-2007, 05:12:16
eeeeeeeehhhhhh ! ! ! !

¿Cuáles serían estos datos? :confused::confused::confused::confused::confused:



Para que vean que si estoy investigando por mí mismo y para todos aquellos que al igual que yo, algunas respuestas no son tan obvias:

username : SYSDBA
password : masterkey

jijiji :D

malcomp
20-07-2007, 05:19:03
Bien.
Ahora volví a Delphi, y puse algunos controles en el formulario principal:

tIBDatabase, tIBTransaction y tIBTable.

Están todos conectados entre sí. Puedo ver las tablas de la base, y los nombres de los campos.

Ahora ando buscando un control tipo DBGrid, que me permita simplemente ver los datos de la tabla en la pantalla.

:confused::confused:

egostar
20-07-2007, 05:32:33
Son los componentes Standard DBGrid y DataSource, que se encuentran en las carpetas Data Access y Data Controls

Salud OS.

malcomp
20-07-2007, 05:48:52
Son los componentes Standard DBGrid y DataSource, que se encuentran en las carpetas Data Access y Data Controls


No lo puedo creer.
Amigos, he creado mi propia tabla, con el código, el nombre, dirección y teléfono de los contactos y.. ¿Lo pueden creer? Los puedo ver a través de un formulario creado con Delphi.

Muchas gracias a todos por la ayuda brindada.

Ahora trataré de seguir adelante. Algo sé de SQL, dado que ya trabajé con Access, por lo que creo poder armar una instrucción SQL.

Espero que cualquier otra duda, me ayuden a resolverla.

Saludos desde Chile, y muchas gracias.

:D;):D;)

brakaman
20-07-2007, 18:44:06
Hola amigo:

Me alegro mucho que hayas podido "Conectar" con Firebird.

Me parece muy bien que utilices software opone source como el Flame Robin, aunque mi deber es aconsejarte, que por lo menos para mi. El IBEXPERT aun en su version personal es muy superior al flame Robin.

Sobre todo si necesitas introducir datos para pruebas, en el Flame esta opcion esta un poco dejada de la mano de Dios.....
Tambien en los Triggers es un poco mas facil en IBExpert.

En fin son gustos, pero....

malcomp
20-07-2007, 19:45:09
Brakaman: Te agradezco tus nuevos consejos.
Voy a intentar con IBExpert, aunque yo creo que dentro de algunos días más cuando maneje bien el tema de las conexiones y demás.

Saludos a todos y gracias.

malcomp
21-07-2007, 00:27:23
Bien. Ya he creado una base de datos con dos tablas de ejemplo. Una con los nombres de personas (Código, Nombre, Dirección) y la otra tabala con los nombres de los hijos de cada una de estas personas (CodigoPadre, NombreHijo).

Las poblé manualmente y en el formulario de Delphi, puedo ver la información relacionada adecuadamente.

Ahora, quiero llenar la tabla HIJOS, pero usando un cuadro de diálogos donde se pida el nombre. Para guardar los datos, necesito obtener el código del padre desde la Tabla PADRES, para copiarlo en el campo CodigoPadre de la tabla HIJOS.

Hebuscado todos las propiedades de las tablas tIBTables, pero no encuentro cuál es la propiedad que contiene el valor almacenado en CODIGO. Es decir, necesito saber cómo acceder a los valores de las tablas.

Agradezco su cooperación y sobretodo su paciencia. :D:D:D

eduarcol
21-07-2007, 01:27:39
El asunto que el dataset es el conjunto de campos y/o registros, o sea que debes acceder a cada elemento de ese conjunto, para los campos el conjunto "Fields" indicando el indice del campo:

Tabla1.Fields[0].AsString

o puedes hacerlo de la manera facil

Tabla1.FieldbyName('MiCampo').AsString

malcomp
21-07-2007, 03:51:15
Aquí vamos de nuevo con otra pregunta.

Cuando deseo ocupar un control que muestre datos de una tabla, (Grid, ComboBox, etc.) ¿Siempre se deben crear objetos IBDataBase, IBTransaction IBTable e IBDataSource?

Saludos.

Delphius
21-07-2007, 13:13:54
Cuando deseo ocupar un control que muestre datos de una tabla, (Grid, ComboBox, etc.) ¿Siempre se deben crear objetos IBDataBase, IBTransaction IBTable e IBDataSource?

Hola malcomp,
La respuesta es SI.
Esos componentes son los que en verdad acceden a la base de datos. Sin ellos no podrías comunicarte con la base de datos.

Puedes "manejar" a esos componentes de tres maneras:
1. Dejarlos creados en tiempo de diseño con algunas propiedades con algún valor por default.
2. Crear los componentes bajo demanda, en tiempo de ejecución. Es decir que cuando sea necesario crearlos, usarlos y al finalizar la operación liberar la memoria.
3. Emplear un Módulo de Datos. Que es como un "formulario" en donde puedes colocar los Datasource, los transaccion, database, querys... Con esto consigues tener todo lo referido a "base de datos" en un solo lugar en vez de estar dispersando por todos lados los componentes.

Saludos,

malcomp
22-07-2007, 00:27:15
Delphius:
Estuve revisando las bases de datos de DEMOS de Delphi, y justamente la opción 3 es la que usan en una de ellas.
Me pareció la mejor, ya que con un solo formulario, tienes todo disponible para el resto de las aplicaciones.

En este momento estoy desarrollando una aplicación pero como estoy en período de aprendizaje con este tema, creo que probaré distintas opciones, y ahí veo cuál me acomoda más, pero por ahora, me gustó mucho la 3.

Gracias y saludos.

Delphius
22-07-2007, 00:46:03
Hola malcomp,

En este momento estoy desarrollando una aplicación pero como estoy en período de aprendizaje con este tema, creo que probaré distintas opciones, y ahí veo cuál me acomoda más, pero por ahora, me gustó mucho la 3.

Tu experimenta... y usa la que más te resulte cómodo.
Aunque la opción 1 es la más fácil de emplear (y por lo general la primera que se estudia) tiene un defecto muy grande: estarás mezclando la interfaz con la capa de acceso a datos. Lo cual lleva a una mayor dependencia entre la interfaz y la base de datos.

La opción 3, en cambio, que a mi modo de ver y entender, es la más recomendable. Ya que el canal de comunicación entre la interfaz y la base de datos es más delgado, mucho más "modular" (por ponerle un nombre).

La implementación de los módulos de datos es una extensión de la segunda opción. Esto quiere decir que puedes crear/destruir (abrir/cerrar) varios módulos de datos de forma tal que consigas separar el "modelo de datos" en varios módulos más o menos independientes. Por ejemplo: supongamos que tu tienes 3 módulos: Clientes, Ventas, Compras. Cada uno tiene lo necesario para acceder a una PARTE de la base de datos. Esto te permite reducir memoria y trabajar solo con lo necesario según se necesite. Por ponerte otro ejemplo: quien tenga un permiso para cargar Compras, solo debe tener creado el módulo de compras (y el de la conexión)... ¿Para qué cargar con tantas cosas si solo a él le interesa compras?

La elección de como distribuir los módulos dependerá también de las necesidades de mantenimiento, de la complejidad del sistema y otros factores más... Por lo general, si se sabe que el sistema es grande, y complejo... crear los módulos por demanda es una muy buena opción.

A los fines de tu práctica... comienza con uno solo. Después sigue avanzando.

Saludos,

malcomp
22-07-2007, 01:15:09
Tu experimenta... y usa la que más te resulte cómodo.


Según mi forma de ver, también la 3 es la mejor.

Por ahora, tengo otra pregunta.
En access, existe un atributo que se le puede agregar al campo Clave Principal, que hace que los valores se generen automáticamente de forma incremental. Se llama AUTONUMERICO.

¿Se puede hacer lo mismo con FireBird?

:confused::confused::confused:

Delphius
22-07-2007, 01:26:24
Por ahora, tengo otra pregunta.
En access, existe un atributo que se le puede agregar al campo Clave Principal, que hace que los valores se generen automáticamente de forma incremental. Se llama AUTONUMERICO.

¿Se puede hacer lo mismo con FireBird?

Si, se puede conseguir este efecto empleando los generadores y tiggers.

A modo de ejemplo:

Este es el tigger que se encarga de generar el número antes de insertar (Before insert)

CREATE TRIGGER SET_CUST_NO FOR CUSTOMER
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN

if (new.cust_no is null) then
new.cust_no = gen_id(cust_no_gen, 1);
END
^

SET TERM ; ^

Y Este es un generador, que se encarga de incrementar de uno en uno. Por ello es el valor 1. Puedes conseguir incrementar de ha saltos mayores cambiandolo:

CREATE GENERATOR CUST_NO_GEN;
SET GENERATOR CUST_NO_GEN TO 1;

Para mayor info, busca en los foros que se trató el tema.
Saludos,

malcomp
22-07-2007, 04:03:45
Costó un poco, pero funcionó.

Ahora, he creado el firmulario MyFormData, donde he puesto todas las conexiones. Tengo la IBDataBase, IBTransaction, y todas las IBTables y DataSources necesarias.

Esto queda en una unidad llamada MyFormData.

Tengo unas dll que utilizan esta unidad (uses MyFormData) y en tiempo de diseño, puedo ver los datos que están dentro de una las tablas, ya que para probar tengo todas las conexiones activadas.

Sin embargo, cuando ejecuto la aplicación, las columnas están vacías e incluso se ve sólo una columna sin siquiera poder ingresar datos.


¿Alguien sabe qué puede ser esto?

Si pongo los objetos para conexión (IBDataBase, etc) en el mismo formulario, todo funciona ok, pero cuando los objetos están en el formulario de datos (DataModule), no puedo ver los datos.

Saludos y gracias.

malcomp
22-07-2007, 05:07:48
Solucionado:

Al crear al formulario, en el evento OnCreate, también se crea el DataModule. Yo pensaba que estaba disponible de inmediato.

Al momento de cerrar el Formulario, aplico un FreeAndNil y listo.

malcomp
28-07-2007, 04:50:51
:D:D
Muchas gracias a todos.
Ahora realmente puedo trabajar.
Estoy haciendo algunas pruebas y prácticas y pornto mudaré todos mis programas con archivos planos a bases de datos.

Nuevamente muchas gracias a todos quienes me orientaron en el tema. Ahora debo realizar un poco de prácticas en SQL, pero eso, por ahora, es lo de menos para mí. Con ayuda de Access y el Libro Negro de Delphi, estoy haciendo lo que necesito.

Saludos a todos.:D:D