Ir al contenido


Foto

[RESUELTO] Relacionar tablas usando Zeos y firebird 2.1


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

#1 luk2009

luk2009

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.040 mensajes
  • LocationSanto Domingo

Escrito 28 abril 2010 - 06:03

Quiero recomendarte que uses Zeos, es gratuito, muy bueno e instuitivo para conectarte e interactuar con firebird desde delphi o lazarus(linux-windows). Por otro lado tambien quisiera que investigaras acerca de los querys. Por ejemplo para relacionar estas tres tablas podrias poner en la propiedad sql del query:

delphi
  1. select * from pedidos inner join clientes on pedidos.id_cliente =clientes.id_cliente inner join Articulos on pedidos.id_articulo=Articulos.Id_articulo 



con esto obtendrias todos los campos de todas las tablas cuando exista la coincidencias de los campos clave.
Escribe esto en la parte de Ibexpert para crear sentencias sql y ve que te sale. Si hay algun error indicalo para ayudarte a corregirlo, porque esto lo hice muy rapido.

saludos


  • 0

#2 GUN10

GUN10

    Advanced Member

  • Miembros
  • PipPipPip
  • 79 mensajes
  • LocationArgentina

Escrito 28 abril 2010 - 10:17

gracias por responder luk2009, voy a probar con esto que me decís e investigar acerca de zeos! ya les cuento como me va!
  • 0

#3 GUN10

GUN10

    Advanced Member

  • Miembros
  • PipPipPip
  • 79 mensajes
  • LocationArgentina

Escrito 28 abril 2010 - 11:13

Hola de nuevo!

Les comento que descargue los componentes Zeos desde el siguiente enlace http://sourceforge.n...ojects/zeoslib/. La version es 6.6.6.

Encontre un tutorial que explica como es la instalación, segui los pasos y logre instalar los componentes.
Tengo una duda en cuanto a la conexión ya que me sale un error.
Despues de relacionar el ZTable con el ZConnection por medio de la propiedad Connection. Quiero buscar una tabla para asignar en la propiedad TableName, pero no encuentro nada.

Si selecciono el componente ZConnection, veo que la propiedad Connected esta en False, cuando quiero cambiarla a True me aparece el error que les comento. Dice lo siguiente:

"None of the dynamic libraries can be found: fbclientd21.dll, fbclientd.dll"

En el archivo que descargue no me aparecen algunas carpetas que muestra el ejemplo, una de ellas es la carpeta lib, donde tendria que encontrar las librerias del error.
Quizas baje una version equivocada, les agradeceria si me corrigen!

Saludos!!


  • 0

#4 GUN10

GUN10

    Advanced Member

  • Miembros
  • PipPipPip
  • 79 mensajes
  • LocationArgentina

Escrito 28 abril 2010 - 07:03

Hola, primero que nada gracias por sus buenas respuestas.

Delphius, a las 3 tablas las hice con la herramienta IBExpert, que me fue recomendada en este foro para trabajar con FireBird 2.1.3 que es la version que tengo instalada.
Son tablas a modo de ejemplo que las hice para ir viendo como funcionan estas herramientas. La version de IBUtils es 0.9.8.2.

A decir verdad estoy medio desorientado en que seguir incursionando.
Cuando recien comence con el mundo de la programacion en Delphi y Bases de Datos, me enseñaron a realizar las operaciones basicas con las tablas (altas, bajas y modificaciones).
Ahora quiero aprender a utilizar otro gestor de bases de datos.
Entonces me recomendaron InterBase. Estuve leyendo un poco sobre el tema y logre realizar una base de datos con unas tablas sencillas y pude visualizarlas en Delphi sin problemas por medio de los componentes IBX. Pero estas tablas aisladas, no tenian relacion.

Luego en una tema que publique en este mismo foro, me recomendaron utilizar FireBird y la herramienta IBExpert que reemplazaria IBConsole en el armado de tablas.
luk2009 me recomendo cambiarme a los componentes Zeos para interactuar con la Base de Datos y Delphi.
Busque informacion con respecto a FireBird y me encontre con que en todos lados o al menos en los foros a donde anduve, lo recomiendan. Al igual que a los componentes Zeos. Tambien vi que seria recomendable utilizar estos componentes ya que no se sabe si los IBX seguiran dando soporte a FireBird. Perdon si me equivoco con esto pero creo haberlo leido en algun foro.
Asi que me decidi a desinstalar InterBase e instalar Firebird con IBExpert.
Tambien logre crear una Base de Datos con tablas sencillas y las pude visualizar en Delphi.
Ahora el problema lo tengo en las relaciones. Pero debe ser como me dijo Rolphy Reyes, me falta mas documentacion acerca de SQL.
Ahora estamos por comenzar con las clases de SQL asi que espero ahi poder manejar bien el lenguaje.

Creo que me fui algo del tema, pero bueno era para que tengan una idea de lo que estuve haciendo.
Ya que les hable acerca de estar desorientado en que seguir incursionando, me gustaria saber que piensan de FireBird como gestor de base de datos, mas alla de que siempre se tenga en cuenta lo que se va a desarrollar y de la herramienta IBExpert, para meterme de lleno en este tema.

Saludos!

  • 0

#5 luk2009

luk2009

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.040 mensajes
  • LocationSanto Domingo

Escrito 28 abril 2010 - 10:44

Vamos a ver Gun10: en el Zconnection tienes las siguientes propiedades:
Catalog
Database
Hostname
Password
Protocol
User

Dime que pusiste en cada una de ellas para poder ayudarte.


La de Transactisolation te la explico luego


  • 0

#6 GUN10

GUN10

    Advanced Member

  • Miembros
  • PipPipPip
  • 79 mensajes
  • LocationArgentina

Escrito 29 abril 2010 - 09:26

Ok luk2009 aqui te dejo como tengo las propiedades:

Catalog: Aqui me dice que tengo que poner el nombre de la base de datos, lo que tengo dudas es si es solo el nombre o la direccion completa como en DataBase.

DataBase: Ruta completa de la ubicacion de la base de datos

Hostname: Aqui no se que tengo que poner me dice, direccion IP o nombre del servidor en donde esta corriendo el motor.

Password: masterkey

Protocol: Selecciono firebird-2.1 que es la version que tengo instalada, aunque me genera una duda lo de firebirdd-2.1 que tien una "d" mas al final del nombre.

User: SYSDBA
  • 0

#7 luk2009

luk2009

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.040 mensajes
  • LocationSanto Domingo

Escrito 29 abril 2010 - 07:33

Ok luk2009 aqui te dejo como tengo las propiedades:

Catalog: Aqui me dice que tengo que poner el nombre de la base de datos, lo que tengo dudas es si es solo el nombre o la direccion completa como en DataBase.

DataBase: Ruta completa de la ubicacion de la base de datos

Hostname: Aqui no se que tengo que poner me dice, direccion IP o nombre del servidor en donde esta corriendo el motor.

Password: masterkey

Protocol: Selecciono firebird-2.1 que es la version que tengo instalada, aunque me genera una duda lo de firebirdd-2.1 que tien una "d" mas al final del nombre.

User: SYSDBA


ok GUN10 he dividido el hilo y lo que tiene que ver con zeos lo he puesto en  este nuevo hilo, porque en realidad Rolphy tiene toda la razon. Asi que le pedimos disculpas a Rolphy por este error.

En cuanto a las propiedades van asi:
Catalog y database va exacatamente lo mismo ejemplo:  si la base de datos esta en c:\firebird\gun10.fdb pones esto mismo en ambas propiedades.

Hostname debes poner la ip de la maquina donde esta la base de datos ejemplo 192.168.1.5 o si es por internet y estas usando no-ip puedes usar ejemplo(hipoteticamente) gun10.no-ip.biz .

Protocol aqui esta bien firebird-2.1  si pones firebirdd-2.1 estarias usando la version de firebird embebida(de esto hablaremos luego para que Rolphy no nos diga nada, je je je je).

Password esta bien
User esta bien asi en mayuscula
solo debes poner conectar a true  y en las propiedades de Ztable
seleccionas la conexion y pones el nombre de la tabla en tablename ejemplo: alumnos
Luego de esto activas la tabla, para que veas si se ven los datos.

Para que se vean en un dbgrid debes poner un datasource de la paleta dataAccess y en la propiedad dataset de este pones ztable1 en caso de que le hayas dejado ese nombre a tu componente ztable.

En el dbgrid le seleccionas el nombre de tu datasource en  la propiedad del mismo nombre del dbgrid

si quieres poner un dbnavigator seleccionas el datosource en la propiedad del mismo nombre de este componente.

prueba y me dices para que vayamos corrigiendo, disculpa la tardanza en responderte pero en estos dias he estado supervisando algunos proyectos fuera de la oficina y no he tenido la oportunidad de conectarme.

saludos y suerte

  • 0

#8 GUN10

GUN10

    Advanced Member

  • Miembros
  • PipPipPip
  • 79 mensajes
  • LocationArgentina

Escrito 29 abril 2010 - 07:57

Gracias por avisar luk2009, me sumo a las disculpas hacia Rolphy Reyes por desviar el tema jeje!

Bueno te comento que defini las propiedades del Zconnection tal y como me lo especificas pero me sigue apareciendo el mismo error que muestro al inicio del tema, cuando quiero poner a true la propiedad Connected.

"None of the dynamic libraries can be found: fbclientd21.dll, fbclientd.dll"

Y no te preocupes por haber tardado en responder. Estoy muy agradecido a este foro por la ayuda qe me dan. Es mas soy yo el que deberia pedir disculpas por demorarte a vos y a los demas con dudas que quizas sean obvias. 

Saludos!

  • 0

#9 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 29 abril 2010 - 08:05


Bueno te comento que defini las propiedades del Zconnection tal y como me lo especificas pero me sigue apareciendo el mismo error que muestro al inicio del tema, cuando quiero poner a true la propiedad Connected.

"None of the dynamic libraries can be found: fbclientd21.dll, fbclientd.dll"


Una pregunta, ¿ esas librerias las tienes en el directorio System32 ? Me parece que puedes copiarlas del directorio Bin de Firebird.

O tal vez es necesario registrarlas,

INICIO, EJECUTAR, regsvr32 fbclientd.dll y regsvr32 fbclientd21.dll

Salud OS
  • 0

#10 luk2009

luk2009

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.040 mensajes
  • LocationSanto Domingo

Escrito 29 abril 2010 - 08:06

entonces prueba buscando estos archivos y copiandolos en el directorio donde esta tu proyecto y dime que sucede


PD. chequea que no hayas seleccionado el firebirdd con dos d en el protocol.

pero con lo primero deberia funcionar

  • 0

#11 GUN10

GUN10

    Advanced Member

  • Miembros
  • PipPipPip
  • 79 mensajes
  • LocationArgentina

Escrito 29 abril 2010 - 08:17

Ahora pude conectarla, copie el archivo fbclientd.dll, que encontre en la carpeta BIN de FireBird a System32.
El archivo fbclientd21.dll no estaba pero igual parece funcionar.
Conecte el componente ZTable a una DBGrid y puedo visualizar todos los campos.

Creo que se soluciono el problema.
Pero antes de terminar me gustaria saber si teniendo solo el archivo fbclient.dll en System32 es suficiente. Osea en el creado de un futuro sistema mas complejo.


  • 0

#12 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 29 abril 2010 - 08:24

Ahora pude conectarla, copie el archivo fbclientd.dll, que encontre en la carpeta BIN de FireBird a System32.
El archivo fbclientd21.dll no estaba pero igual parece funcionar.
Conecte el componente ZTable a una DBGrid y puedo visualizar todos los campos.

Creo que se soluciono el problema.
Pero antes de terminar me gustaria saber si teniendo solo el archivo fbclient.dll en System32 es suficiente. Osea en el creado de un futuro sistema mas complejo.



Cuando instales Firebird, en el dialogo de instalación marca la casilla de que copie las librerias cliente para que haga lo que hicimos automáticamente.

Salud OS
  • 0

#13 luk2009

luk2009

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.040 mensajes
  • LocationSanto Domingo

Escrito 29 abril 2010 - 08:28

Que bueno que te funciona, ahora en lugar de un ztable, puedes usar un zquery y escribe lo que te habia indicado antes en la propiedad sql del zquery para que en lugar de una sola tabla puedas visualizar las tres tablas relacionadas.

Prueba y avisanos para seguir ayudandote
  • 0

#14 GUN10

GUN10

    Advanced Member

  • Miembros
  • PipPipPip
  • 79 mensajes
  • LocationArgentina

Escrito 29 abril 2010 - 08:58

Gracias egostar, voy a instalarlo de esa manera entonces, no me habia dado cuenta!

luk2009, escribi lo que me indicase en la propiedad sql del ZQuery y me da el siguiente error cuando quiero activarlo.

"SQL error: Dynamic SQL error SQL error code: -204 Table unknown PEDIDOS At line 1, column 23. Error code: -204. Undefined  name The SQL: select *from pedidos inner join clientes on pedidos.id_clientes=clientes.id+cliente inner join Articulos on pedidos.id_articulo=Articulos.Id_articulo;"

Este codigo relaciona las tablas? porque todavia no tengo las tablas relacionadas, quizas sea por eso!


  • 0

#15 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 29 abril 2010 - 09:38

Hola intenta con esto



delphi
  1. ' select * from pedidos A ' +
  2. ' inner join clientes B on A.id_clientes = B.id ' +
  3. ' inner join Articulos C on A.id_articulo = C.Id_articulo ';



Salud OS
  • 0

#16 GUN10

GUN10

    Advanced Member

  • Miembros
  • PipPipPip
  • 79 mensajes
  • LocationArgentina

Escrito 29 abril 2010 - 09:52

lamentablemente sigo con el mismo error cuando quiero activar el ZQuery.

Imagen Enviada
  • 0

#17 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 29 abril 2010 - 09:58

Hola

¿ Puedes colocar el código que estas usando ?

Tambien los campos que quieres visualizar de cada tabla

Salud OS
  • 0

#18 GUN10

GUN10

    Advanced Member

  • Miembros
  • PipPipPip
  • 79 mensajes
  • LocationArgentina

Escrito 29 abril 2010 - 10:09

El codigo que estoy utilizando es el que me indicaste en la respuesta anterior:



sql
  1. ' select * from pedidos A ' +
  2. ' inner join clientes B on A.id_clientes = B.id ' +
  3. ' inner join Articulos C on A.id_articulo = C.Id_articulo ';



Y el tema de los campos que quiero visualizar, no lo tengo claro, luk2009 me indico que con esto iba a poder ver las 3 tablas relacionadas.

Saludos!
  • 0

#19 luk2009

luk2009

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.040 mensajes
  • LocationSanto Domingo

Escrito 30 abril 2010 - 12:08

El error esta en que pegaste el * del from y van despegados ademas la sentencia en esa propiedad no necesita que le pongas al final ;  quita eso  y prueba   

Esto te lo digo en referencia al codigo que te puse yo, no al que te puso egostar.

Revisa y avisame.



  • 0

#20 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 30 abril 2010 - 07:39

El error esta en que pegaste el * del from y van despegados ademas la sentencia en esa propiedad no necesita que le pongas al final ;  quita eso  y prueba   

Esto te lo digo en referencia al codigo que te puse yo, no al que te puso egostar.

Revisa y avisame.




Bueno, estaba suponiendo que esa consulta la estaba ingresando a un ZQuery por código.



delphi
  1. ZQuery.SQL.Text := ' select A.* from pedidos A ' +
  2.                   ' inner join clientes B on A.id_clientes = B.id ' +
  3.                   ' inner join Articulos C on A.id_articulo = C.Id_articulo ';



Si lo está haciendo dentro del componente, es obvio que no es así, debe ser de esta forma



sql
  1. SELECT A.* FROM pedidos A
  2. INNER JOIN clientes B ON A.id_clientes = B.id
  3. INNER JOIN Articulos C ON A.id_articulo = C.Id_articulo



Salud OS
  • 0




IP.Board spam blocked by CleanTalk.