Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Empezando con Firebird y con varias dudas... (https://www.clubdelphi.com/foros/showthread.php?t=86908)

Delphitest 22-10-2014 10:40:43

Empezando con Firebird y con varias dudas...
 
Buenos días,

hasta ahora solo había trabajado con Access pero basándome en las recomendaciones que me habéis hecho en el foro he decido cambiar a Firebird. La versión de Delphi que uso es la XE5 y gracias a vuestra ayuda ya conseguí instalar y hacer funcionar Firebird.

No se si es mejor abrir un hilo para cada duda que tengo (y que no encuentro en foro) o hacer como un pequeño "paquete" con todas ellas con ánimo de que pueda servir de orientación a más usuarios que empiezan como yo.

Son dudas más bien obvias para muchos de vosotros pero al ser el primer contacto que tengo con Firebird a mi me suena todo esto a desconocido.

La primera duda es ¿qué componente usar? Veo que se habla de Zeos, Interbase... por mi parte siempre que pueda evitar instalar componentes que no estén incluidos en la instalación inicial de Delphi pues mejor que mejor. He visto comparativas de rendimiento que habéis hecho en el foro y varia información pero no acabo de tenerlo muy claro.

Por lo tanto y con ánimo de ir dando pasos en firme ¿El componente Interbase sería una buena elección para empezar?

He visto que en función del componente que use debo añadir al DataModule distintos objetos para hacer la conexión, en caso de usar Interbase, ¿Debo poner IBDataBase para hacer la conexión a la BBDD, IBTransaction (no se para que sirve pero veo que hay que ponerlo) y IBQuery con su correspondiente string SQL para identificar la Tabla que quiero disponer?

¿Con esos 3 es suficiente o es necesario poner también un DataSource como se usa con Access?

No sigo hasta no tener claro esta parte

Muchas Gracias y siento preguntar cosas tan básicas.

ecfisa 22-10-2014 11:30:15

Hola Delphitest.

Cita:

La primera duda es ¿qué componente usar?

Cita:

He visto que en función del componente que use debo añadir al DataModule distintos objetos para hacer la conexión, en caso de usar Interbase, ¿Debo poner IBDataBase para hacer la conexión a la BBDD, IBTransaction (no se para que sirve pero veo que hay que ponerlo) y IBQuery con su correspondiente string SQL para identificar la Tabla que quiero disponer?

Cita:

¿Con esos 3 es suficiente o es necesario poner también un DataSource como se usa con Access?
Se usa un TDataSource al igual que con Access.

Saludos :)

AgustinOrtu 22-10-2014 13:21:30

XE5 es versión de delphi, no de firebird. Si dispones de esa versión yo pasaría de todos los componentes viejos y usaría los fireDac, ya que son independientes de la base de datos con la que trabajes, con cambiar un par de parámetros en el componente FDConnection migras el sistema a una base distinta y sigues aprovechando todo el resto de componentes que venias usando. Además teóricamente son mejores y son los recomendados por Embarcadero, eso significa que estos serán los componentes que van a estar corrigiendo y actualizando así que mejor estar a la última

Sólo una observación, ecfisa ya te dejó unos enlaces estupendos para que estudies

Delphitest 22-10-2014 18:25:41

Antes de nada daros las gracias a todos por vuestros comentarios, quizás repita de vez en cuando lo mismo pero siempre insistiré en ello, No pretendo que nadie haga el trabajo por mi ni me de las cosas hechas, me gusta aprender e investigar en estos campos, pero nunca está de más un pequeño empujón de usuarios con experiencia como vosotros que me pueden ahorrar al menos unos cuantos quebraderos de cabeza.

Siento el retraso en contestar, me he puesto a estudiar lo que me habéis recomendado y he tardado un poco en digerir tanta información nueva para mi :confused:

Iba a optar por usar el componente Interbase puesto que es el que sale bien parado en las comparativas y forma parte de Delphi pero al ver el comentario de Agustín he pensado que también podría ser una buena opción FireDAC, es decir que ya me estoy liando y ni siquiera he empezado... :)

El caso es que he hecho esas dos pruebas y no se bien como pero picoteando de un lado y otro información he conseguido hacer funcionar los dos componentes en dos pruebas por separado para no liar más todo esto. Ha sido mucha información en inglés que no entiendo y algún vídeo de youtube en francés que me ha costado digerir, pero con un par de aspirinas y las ganas que tengo de verlo en marcha he conseguido salir adelante ;)

Como realmente todavía no entiendo muy bien como funciona todo esto he rescatado un formulario que tenía hecho para el acceso con Access y veo dos diferencias importantes que pueden ser decisivas para saber por donde seguir:

Mi formulario está hecho con varios DBEdit que corresponden a campos determinados de las tablas y tengo una botonera casera para crear un nuevo registro, modificar, eliminar... lo tipico supongo.

La forma que usa ese formulario es que de entrada los DBEdit están desactivados para que nadie pueda modificarlos por error, al pulsar por ej. Modificar ejecuto ..Tbabla.Edit y eso hace que pueda editarlo, para añadir uno nuevo lo hago con ... append, post para postearlo y asi con lo que conocía hasta ahora.

Mi duda es la siguiente:

Con el componente Interbase todo eso deja de funcionar, me salta un error que no recuerdo pero deja claro que no se puede hacer uso de esos comandos como lo venía haciendo hasta ahora. No supone ningún problema si tengo que cambiarlo todo ya solo estoy probando y quiero entenderlo.

Sin embargo con el componente FireDAC todo eso funciona de maravilla, puedo usarlo como antes aunque no se si es lo correcto o tampoco debería hacerlo así.

Tendiendo en cuenta que con FireDAC está funcionando, siempre que sea la forma correcta de hacerlo, me ahorraría un poquillo de trabajo al poder aprovechar los formularios que ya tengo hechos para Access.

Si pudierais darme alguna opinión me vendría bien para decidirme por uno u otro componente.

Muchas gracias de nuevo por vuestro tiempo.

Por cierto, para hacer funcionar FireDac he echado mano de este vídeo de Youtube por si a alguien le puede servir.

Casimiro Notevi 22-10-2014 18:29:53

Cita:

Empezado por Delphitest (Mensaje 483531)
Con el componente Interbase todo eso deja de funcionar, me salta un error que no recuerdo pero deja claro que no se puede hacer uso de esos comandos como lo venía haciendo hasta ahora. No supone ningún problema si tengo que cambiarlo todo ya solo estoy probando y quiero entenderlo.

Con IBX puede funcionar igual, pero "me salta un error que no recuerdo" no nos dice nada :p
De todas formas puedes usar los nuevos firedac, como has comentado :)

camiz 23-10-2014 18:22:27

hola Delphitest,
Dejame compartirte un poco de experiencia no soy un experto pero creo poder compartir algo.
Si elegiste firebird te sugiero los componentes Zeos la ultima version estable 7.1.3 alcanza hasta XE5 son muy buenos, versatil y gratuitos.
* te dejo las fuentes de un proyecto de muestra con Zeos y firebird lo hice para darcelo a un amigo para tenga una idea de como empezar
Fuente
Y si no eres un paranoico de los que cree que un ejecutable es peligroso y te pueden robar tu información, te dejo el paquete completo listo para distribuir
Muestra 1.00

Este proyecto está hecho con Delphi XE6 y con Zeos en una version de desarrollo, pero igual puede servirte de guía, el proyecto esta implementado por capas que muchos recomiendan, puedes tener una para crear tus propios Procedimientos y Funciones que los puedes usar en cualquier formulario de tu aplicacion sin nesecidad de estar creando una para cada accion, como ejemplo en el Form fFode del proyecto hay algunas procedimiento que yo los uso muchisimo para limpiar edit, desabilitar y habilitar sin escribir tanto codigo.



espero que te sirava.

Casimiro Notevi 23-10-2014 18:45:46

Hola camiz, por favor, un ejecutable no sirve para que Delphitest, ni nadie, aprenda.
Aquí compartimos código fuente para aprender.
He borrado el enlace, por favor, cumple las normas de los foros. Gracias.

camiz 23-10-2014 19:38:04

Cita:

Empezado por Casimiro Notevi (Mensaje 483624)
Hola camiz, por favor, un ejecutable no sirve para que Delphitest, ni nadie, aprenda.
Aquí compartimos código fuente para aprender.
He borrado el enlace, por favor, cumple las normas de los foros. Gracias.

Con todo respeto Casemiro,
Pero lo que he publicado es el codigo fuente del proyecto, y adicional a eso he puesto el resultado compilado
y con lo necesario para funcionar.

Porque cuando yo empece en delphi descargaba codigos fuente de pequeñas aplicaciones y
al compilarlas me mandaban errores y muchos errores, quizas era porque no estaban desarrolladas con la misma
version de delphi y en esos momentos lo que deseaba es el paquete completo para poder ver el funcionamiento real
y los archivos y librerias que el exe necesita para funcionar correctamente, porque si no se puede compilar el
proyecto o el exe que que compilo no funciona, y el que intenta ayudarme no me da mas detalles de como hacerlo
funcionar, el codigo fuente me sirve muy poco.
como puedo aprender si soy novato si no tengo la mas minima idea. es por eso que puse el enlace del
exe completo con la base de datos y las librerias correspondientes y de ahi obtenga sus propias concluciones.
Pero bueno si crees que es lo mejor para el que está pidiendo ayuda o un pequeño ejemplo, no hay problema.

Delphitest 23-10-2014 19:42:39

1 Archivos Adjunto(s)
Gracias camiz por lo de Zeos, ahora no me queda mas remedio que probarlo también y así decido, lo hago en cuanto me libere de tanta información que tengo en la cabeza ahora mismo :confused:

Casimiro, tienes razón... "me salta un error que no recuerdo" no dice nada, jajajajajaj me explico de tal manera que no me entiendo ni yo :( , lo siento.

Este es el error que aparece:

http://www.clubdelphi.com/foros/atta...1&d=1414085643

Está claro que es por algo que hago mal.

De todos modos voy a probar ya también para no quedarme con las ganas el Zeos, a ver por donde salgo.

Un saludo y gracias por vuestros comentarios

Casimiro Notevi 23-10-2014 19:43:30

Bien, hablando se entiende la gente, voy a consultar con los otros moderadores...

ecfisa 23-10-2014 19:53:52

Hola Delphitest
Cita:

Empezado por Delphitest (Mensaje 483632)
Este es el error que aparece:

http://www.clubdelphi.com/foros/atta...1&d=1414085643

Está claro que es por algo que hago mal.
...

Sería mucho mas simple de encontrar el problema si publicaras el código que hace que te genere ese error.

Saludos :)

Delphitest 23-10-2014 20:05:08

En el DMmain tengo:

IBDatabase, IBTRansaction, IBQueryClientes, DSClientes

Este error me aparece desde un Form donde he puesto un DBEdit que apunta al IBQueryClientes y al campo Nombre de la tabla.

Aparece al pulsar el Botón Nuevo (que quiero usar para crear un nuevo cliente) y le tengo puesto esto:

Código:

DMmain.IBQueryClientes.Append;
No le he dado muchas vueltas la verdad porque solo estoy haciendo pruebas con los componentes para saber con cual me quedo y es lo que tenía de cuando usaba la conexion con Access.

Se me pasaba que en IBQueryCLientes tengo puesta una sentencia sql: "select * from clientes" que entiendo que es para poder trabajar con todos los registros de la tabla clientes.

ecfisa 23-10-2014 20:32:42

Hola Delphitest.

Es que así, sin más, no funciona el componente TIBQuery (ni otros componentes Query). Vas a tener que incluir y relacionarle a su propiedad UpdateObject, un componente TIBUpdateSql.

Por otro lado también contas con el componente TIBDataSet que es muy simple usar para estos casos.

Saludos :)

Casimiro Notevi 23-10-2014 20:55:41

Eso pasa por no leer los enlaces que le ponemos.
Paso a paso, explicado tan ricamente.

Delphitest 25-10-2014 19:57:37

Siento no haber dicho nada pero no quiero quedarme con las ganas de probar también Zeos.

El caso es que descargué la versión 7.1.3 que era la ultima hace 3 días y resulta que me daba errores a la hora de instalarla, mencionaba algo relacionado con no encontrar algún archivo necesario para la instalación, ya me empezaba a sentir un poco inútil pero no quería preguntar porque me parecía demasiado torpeza no conseguir ni siquiera la instalación del componente ;)

Ese día lo deje por imposible, he llegado hasta a desinstalar Delphi por completo por si había hecho mal con tantas pruebas pero todo seguía igual.

Hoy me he puesto de nuevo con la instalación y resulta que veo en la web de zeos que hay una nueva versión, la 7.1.4, la he descargado y sorpresa... la he instalado a la primera :)

Ya lo retomo y me centro en las pruebas con mis Formularios y os voy contando.

Buen fin de semana

Delphitest 27-10-2014 08:28:00

Bien, pues de cara a la instalación y puesta en marcha ya he podido probar los 3 componentes; Interbase, FireDAC y Zeos

Voy a descartar FireDAC porque, sin entender demasiado que hace internamente en Delphi, me ha dado problemas que han requerido tener que reinstalar Delphi en dos ocasiones y tengo claro que ha sido ese componente que lo ha provocado, así que no lo voy a usar...

Me quedan Interbase y Zeos, iba a decantarme por este último ahora que he conseguido ponerlo en marcha pero me queda una duda con respecto a su rendimiento por un comentario que he visto en el foro;

Cita:

Componente Tiempo (sg.)
DBEXpress___________80
BDE________________148
ZEOS_______________309
IBX_________________64
FIBPlus_____________64
UIB_________________86
BDE/ODBC___________195
ADO/ODBC___________211
IBO_________________75

Desde vuestro punto de vista ¿Debo tener en cuenta esta comparativa?

Ahí salta a la vista que Zeos es el mas "lento" pero no se si darle importancia a ese punto o no.

Solo voy a necesitar una base de datos que tendrá aproximadamente 27 tablas y he calculado por encima que serán unos 50.000 registros anuales. De cara a las tareas diarias se trabaja de forma continua en una red con un servidor que tiene Windows server 2008 desde 3 puestos de trabajo y hay otros 2 que entran de forma puntual.

No se bien por cual decidirme si Zeos o Interbase

¿Podríais por experiencia darme vuestras opiniones?

Muchas Gracias

Casimiro Notevi 27-10-2014 09:12:49

Estas decisiones son similares a "¿qué coche/zapatos/ordenador me compro?
Depende, todo depende.
Si vas a repartir mercancías entonces no escogerás un deportivo. Si vas a participar en circuito entonces no irás con una furgoneta. Si vas a correr todos los días 10 km. no lo harás con unas botas para el agua. Si vas a usar el ordenador en sitios diferentes entonces no irás con una gran torre, lo harás con un portátil.

Los componentes IBX son de "acceso directo", por eso son más rápidos. Los componentes Zeos tienen una "capa" para poder acceder a distintas bases de datos (firebird, mysql, postsgresql, etc.)
Depende lo que necesites. Después de todo, la diferencia en velocidad son décimas de segundo, que no es casi nada (aunque siempre estamos en lo mismo, depende para qué se vaya a usar).
Así que debes pensar qué tipo de software quieres hacer y luego decidir las herramientas.

pacopenin 27-10-2014 09:40:47

Como bien dice Casimiro, depende del uso.

Yo utilizo Zeos por varias razones:
  1. Siguen trabajando en ello y por lo tanto hay actualizaciones.
  2. Son gratuítas.
  3. Funcionan en Lazarus también.
  4. Hago muchos traspasos de otras aplicaciones, así que cubro muchos orígenes de datos.
  5. Me he habituado.
Probablemente no sean la mejores ni la más rápidas, pero cumplen su función. Mis aplicaciones no tienen grandes procesos con altos volúmenes de tratamiento de datos, así que estoy contento y no tengo quejas.

Si tienes que importar decenas de miles de registros con relativa frecuencia, probablemente no den los mejores resultados, pero en mi caso (salvo algún traspaso) no ocurre nunca.

IBX las descarté hace bastante tiempo, aunque mientras las usé tampoco tuve ningún problema. El motivo de descartarlas fué que nunca hubo una versión específica para Firebird, y aunque sigue funcionando preferí no correr el riesgo de encontrarme con errores que no pudiese subsanar.


Un saludo,

Delphitest 27-10-2014 19:54:29

Me quedo con el deportivo para repartir el pan y las botas de agua para hacer la media maratón, jejejjejje

Es verdad que la diferencia debe de ser insignificante y no va a repercutir en el funcionamiento así que ya no mareo más y me quedo con Zeos :)

Ya me he puesto a intentar adaptar mis formularios de access y me surgen muchas dudas que espero no os parezca mal que plantee aunque sean muy básicas.

He echado mano de los hilos que tocan esos temas pero en la mayoría faltan los pantallazos (ya no aparecen) y me despisto un poco.

Uso ZConnection, Ztable y Dsource en DataModule que he creado para alimentar a todos los Form

Dentro de los form estoy usando DBEdit y aprovechando lo que tenía en los botones, Append, Post, Edit y Delete para las operaciones básicas.

Veo que en muchos ejemplos en lugar de Ztable usan Zquery y que en vez de DBedit, lo hacen con Edit. Para los botones usan sentencias sql como update y cosas de esas.

Tengo conocimiento mas bien bajos del sql y aunque se que deberé usarlo para alguna consulta ahora me encuentro mas cómodo con lo que estoy haciendo.

¿Es correcto el uso que hago de ZTable y los DBedit para las funciones básicas de añadir, modificar y borrar o me acabará dando problemas?

Gracias de nuevo por vuestro tiempo

lbuelvas 28-10-2014 01:27:05

Hola amigos,

Llevo trabajando varios años con Delphi y la versión que utilizo es Delphi 6, los componentes para bases de datos los IBX, son rápidos, confiables y muy compatibles con Firebird 1.5.6 y están disponibles en todas las versiones de Delphi. La combinacion Delphi 6, IBX, Firebird 1.5.6, FastReport ha sido perfecta, no tengo queja.

Lo que sucede es que con las nuevas versiones de sistemas operativos Windwos 7 / 8 deseo maquillar las aplicaciones, la parte lógica fuerte de mis sistemas está a nivel de triggers y procedimientos almacenados, lo que quiero es modernizar las aplicaciones, sin embargo los componentes FireDAC después de una revision exhaustiva son mejores que IBX y con la ventaja que las aplicaciones pueden conectarse sobre diferentes motores de bases de datos, con IBX no.

Deberías probar los FireDAC, el hecho de problemas en la instalación no creo que sea justificación para retiralos como una opción, además que es la familia de componentes para conexión a bases de datos que Embarcadero está promoviendo.

El siguiente salto que quiero dar es Delphi XE7 (o la versión que este disponible cuando inicie la migración), componentes de conexión a base de datos FireDAC y motor de bases de datos Firebird 3.0 que está cada vez más cerca.


La franja horaria es GMT +2. Ahora son las 19:54:02.

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