Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   FireBird + Delphi 7 (https://www.clubdelphi.com/foros/showthread.php?t=68833)

Gimli 09-07-2010 12:56:20

FireBird + Delphi 7
 
Hola, me estoy planteando cambiar de base de datos
y queria saber que os parece FireBird
¿da problemas?, ¿es rapida?, ¿se corrompe?, ¿tiene alguna limitación?

Además me gustaría que alguien desde la experiencia me recomendara
algún componente para usar fireBird desde delphi7 lo más completo posible
con dabaBases para usar los tipicos append, edit, post, findkey, setrange, etc.. y no tener que usar sentencias SQL siempre

Gracias y saludos

mcs 09-07-2010 13:16:49

Hola,

Por aquí me recomendaron el Firebird (imagino que Casimiro Noteví, es un gran fan del Firebird! ;)), y la verdad es que estoy bastante contento con ella. Es un buen gestor de bases de datos, tiene la versión embedded (que además funciona como la versión normal), es rápida, y por el momento no da problemas.

Pero claro, siempre hay inconvenientes: no tiene campos autonuméricos (se usa un generador más un trigger, y todo arreglado), no tiene campos booleanos (se pueden definir, y algunos componentes los entienden), y la documentación deja un poco que desear (pero yo soy muy exigente en el tema documentación!).

Sobre componentes de acceso a datos... Yo te recomiendo los IBDAC (al final voy a pedir comisión a los creadores, siempre los recomiendo :P). Son como el BDE, pero con Firebird/Interbase y con código moderno. Seguirás usando las TTable, pero ahora se llamarán TIBCTable, los TQuery->TIBCQuery, etc. Y se usa sin problema las funciones edit, post, append, findkey, locate, filterby, etc... A mi me gustan mucho, y sólo uso el SQL para updates grandes o para las querys.

Además, lleva una utilidad para migrar de BDE a IBDAC, que a veces tambien sirve. Pero yo he usado los componentes estos tanto para migrar aplicaciones BDE a Firebird, como para empezar aplicaciones de 0.

Saludos,

Marc

Gimli 09-07-2010 13:25:50

http://www.devart.com/ibdac/
http://www.devart.com/dbx/interbase/

El componente que me recomiendas es el primero o el segundo?

mcs 09-07-2010 13:31:25

El primero es el que uso.

El segundo es un driver para acceder a Interbase/Firebird a traves de dbExpress.

O sea que yo te recomiendo el primero, porque el segundo no lo conozco...

Casimiro Notevi 09-07-2010 13:48:10

Cita:

Empezado por Gimli (Mensaje 369799)
[..]FireBird...
¿da problemas?, ¿es rapida?, ¿se corrompe?, ¿tiene alguna limitación?

Da problemas: ninguno
Es rápida: mucho
Se corrompe: nada
Limitación: No sabe cocinar :)

Es una muy buena elección, sin duda, aunque deberías de indicar para qué la vas a usar, en qué entorno, red local, monousuario, servidor web, mil usuarios conectados, etc. en fin, cuéntanos algo más.

No sirve de nada ponerse a elegir unos componentes si no sabes qué uso vas a darle después.

p.d.: y por cierto, usa SQL, en caso contrario no estarás sacándole ningún partido, para eso usa access o paradox.

mcs 09-07-2010 13:57:43

Cita:

Empezado por Casimiro Notevi (Mensaje 369813)
p.d.: y por cierto, usa SQL, en caso contrario no estarás sacándole ningún partido, para eso usa access o paradox.

no estoy de acuerdo con esto. es mucho más simple, fácil y fiable hacer un tabla.append, asignar las variables y un table.post. Porqué es más fácil? sólo asignas vaiables. Porqué es más fiable? Porqué el propio componente se encarga de mirar y corregir los posibles carácteres que no le gustan al SQL (las comillas, etc). Y para añadir un registro, no le veo ninguna ventaja a usar un INSERT INTO.

Otra cosa es usar el SELECT. Esto es diferente, ya que el usar directamente SQL te da mucha más potencia... Pero para operaciones simples como son añadir o modificar una tabla, el SQL (en mi opinion y gusto) no es necesario.

Gimli 09-07-2010 14:06:00

Anteriormente usaba paradox pero las tablas se estropeanban... a veces con el uso o por que el cliente apagaba mal el equipo, luego cambie a pervasive que es mas robusta pero consume bastantes recursos y para aplicaciones que tengan que estar en red local con tablas con miles o millones de registros es lentisima

¿La habeís probado con una base de datos en red con más de 5 puestos atacandole simultaneamente?
¿Como se comporta con tablas con miles de registros? ¿busca y filtra rapido por cualquier campo?

El uso que le quiero dar es para todos los casos, pues si funciona bien migraria todas las aplicaciones (con el tiempo) a esta base de datos,
y unas aplicaciones son de almacenamiento masivo de datos,
otras prima la velocidad, otras la respuesta en red a los terminales conectados

Saludos

Casimiro Notevi 09-07-2010 14:49:04

Cita:

Empezado por mcs (Mensaje 369816)
no estoy de acuerdo con esto. es mucho más simple, fácil y fiable hacer un tabla.append, asignar las variables y un table.post. Porqué es más fácil? sólo asignas vaiables. Porqué es más fiable? Porqué el propio componente se encarga de mirar y corregir los posibles carácteres que no le gustan al SQL (las comillas, etc). Y para añadir un registro, no le veo ninguna ventaja a usar un INSERT INTO.
[..]

:confused: vale, entonces por qué preguntas, si no te gusta la respuesta :confused:

Caral 09-07-2010 14:55:05

Hola
Cita:

Empezado por mcs (Mensaje 369816)
no estoy de acuerdo con esto. es mucho más simple, fácil y fiable hacer un tabla.append, asignar las variables y un table.post. Porqué es más fácil? sólo asignas vaiables. Porqué es más fiable? Porqué el propio componente se encarga de mirar y corregir los posibles carácteres que no le gustan al SQL (las comillas, etc). Y para añadir un registro, no le veo ninguna ventaja a usar un INSERT INTO.

Otra cosa es usar el SELECT. Esto es diferente, ya que el usar directamente SQL te da mucha más potencia... Pero para operaciones simples como son añadir o modificar una tabla, el SQL (en mi opinion y gusto) no es necesario.

Esto es totalmente contradictorio.
Si no usas insert por comodidad, como dices usar Select por potencia?.
Cuando usas una tabla estas usando un Select *.
Saludos

mcs 09-07-2010 16:32:24

Cita:

Empezado por Casimiro Notevi (Mensaje 369823)
:confused: vale, entonces por qué preguntas, si no te gusta la respuesta :confused:

Es que yo no preguntaba... Lo preguntaba Gimli. Yo solo daba mi opinión...

mcs 09-07-2010 16:40:25

Cita:

Empezado por Caral (Mensaje 369824)
Hola

Esto es totalmente contradictorio.
Si no usas insert por comodidad, como dices usar Select por potencia?.
Cuando usas una tabla estas usando un Select *.
Saludos

No veo que sea contradictorio. Con un Insert no vas a hacer "florituras", mientras que con un select puedes enlazar tropecientas tablas, crear campos inexistentes (el típico SUM(importe) AS total), unir dos tablas (SELECT * FROM a UNION SELECT * FROM b)... Cosas que con las funciones de un TTable diría (ni lo he intentado) que no se puede hacer.

Por esto mismo he dicho lo de actualizar UN registro. Si tienes el registro 25 abierto en un form, encuentro más fácil hacer un
Código:

tabla1.edit();
tabla1VALOR1.asString():=editvalor1.text();
tabla1.post();

, que no un
Código:

query1.sql.clean();
query1.sql.add('UDPATE tabla1 SET valor1=:VAL1 WHERE id=:ID');
query1.paramByName('ID').asInteger:=variableId;
query1.paramByName('VAL1').asString():=editValor1.Text();
query1.execute();  // o es un open()? he ejecutado alguna vez un update, pero no recuerdo como...

Logicamente es cuestión de gustos, pero no sé, yo lo encuentro más simple así... :confused:

Saludos,

Marc

Gimli 09-07-2010 16:53:20

Os desviais del tema completamente
Algunos estais mezclando mis post con los de otro usuario...

Retomemos el tema de firebird y delphi 7

Los puntos son:
¿cual es el mejor componente para usar firebird desde delphi7?
que permita usar las caracteristicas que usan la Ttables con paradox,
para que la migracion de los programas no sea traumatica

Y segundo punto, es firebird una base de datos fiable, rapida y estable

saludos

Gimli 09-07-2010 17:06:58

Posteo esta información que he puesto antes y creo que a sido pasada por alto:

Anteriormente usaba paradox pero las tablas se estropeanban... a veces con el uso o por que el cliente apagaba mal el equipo, luego cambie a pervasive que es mas robusta pero consume bastantes recursos y para aplicaciones que tengan que estar en red local con tablas con miles o millones de registros es lentisima

¿La habeís probado con una base de datos en red con más de 5 puestos atacandole simultaneamente?
¿Como se comporta con tablas con miles de registros? ¿busca y filtra rapido por cualquier campo?

El uso que le quiero dar es para todos los casos, pues si funciona bien migraria todas las aplicaciones (con el tiempo) a esta base de datos,
y unas aplicaciones son de almacenamiento masivo de datos,
otras prima la velocidad, otras la respuesta en red a los terminales conectados

Saludos

Caral 09-07-2010 18:04:55

Hola
Cita:

Empezado por mcs (Mensaje 369838)
Por esto mismo he dicho lo de actualizar UN registro. Si tienes el registro 25 abierto en un form, encuentro más fácil hacer un
Código:

tabla1.edit();
tabla1VALOR1.asString():=editvalor1.text();
tabla1.post();


Aqui tu mismo lo dices: si tienes la tabla abierta, eso quiere decir que ya hiciste un Select * form tabla, aunque sea para hacer un simple edit.
Osea, llamaste a todos los registros de la tabla para insertar, actualizar o lo que sea de un solo campo.
Si la tabla contiene pocos registros esta bien, pero si contiene muchos se hara muy lento.
Intenta hacer una consulta con un table a una tabla con muchos registros via internet, puedes ir a tomarte un cafe mientras te envia el dato.:)

Cita:

Empezado por mcs (Mensaje 369838)
, que no un
Código:

query1.sql.clean();
query1.sql.add('UDPATE tabla1 SET valor1=:VAL1 WHERE id=:ID');
query1.paramByName('ID').asInteger:=variableId;
query1.paramByName('VAL1').asString():=editValor1.Text();
query1.execute();  // o es un open()? he ejecutado alguna vez un update, pero no recuerdo como...


Aqui por el contrario trabajaste un poco mas en el codigo, pero el programa. la actualizacion o lo que se quiera hacer sera mucho mas eficiente, rapida y efectiva, repito, en tablas con mucho contenido.
Nota: es query1.ExecSQL;

Cita:

Empezado por mcs (Mensaje 369838)
Logicamente es cuestión de gustos, pero no sé, yo lo encuentro más simple así... :confused:

Para mi no es un asunto de gustos, es un asunto de programacion.
Si se hacen las cosas bien, se hacen una vez.
El dia que crezca la tabla el cliente te llamara para decirte que el programa esta muy lento y tendras que recurrir al sql, te guste o no, sea mas facil o no.
Saludos
PD: No pretendo contradecirte, es solo mi opinion.

Gimli 09-07-2010 18:12:27

valla tela! :mad:

si quereis discutir que es mejor si las SQLs o los dataBases
abrir otro tema, por favor

Caral 09-07-2010 18:18:12

Hola
Es el mismo tema ya que dependiendo de los componentes se pueden hacer cosas de cosas.
A tu Pregunta CONCRETA: IB, Paleta Interbase.
Simple, transparente, eficiente, facil. etc. etc.......
Ahora tambien esta Zeos (cuestion de gustos)
Saludos

Gimli 09-07-2010 18:28:18

¿Con la paleta interBase de Delphi 7 puedo conectar con firebird? ¿como?

Caral 09-07-2010 18:33:07

Hola
Valla tela :mad:, ahora te apetece cambiar de tema.....:D:p

Este tutorial te ayudara en lo que buscas.
Presiona aqui, con paciencia.:D
Saludos

Gimli 09-07-2010 18:36:30

OK gracias, perdona por lo de antes pero parecia que ibais a enzarzaros en un discusion de gustos personales...

¿La habeís probado con más de 5 pcs atacandole simultaneamente a traves una red local?
¿Como se comporta con tablas con miles de registros? ¿busca y filtra rapido por cualquier campo?

Caral 09-07-2010 18:41:56

Hola
No puedo hablar por los demas.
En mi caso:
Tengo 7 ordenadores conectados a la BD simultaneamente sin problemas.
Eso si, Tratamos de no atacarla.........:D
Saludos
PD: Firebird se comporta muy bien, no le tengas miedo, duro con ella...


La franja horaria es GMT +2. Ahora son las 11:45:29.

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