PDA

Ver la Versión Completa : Sql access a Firebird 2


Caral
25-12-2007, 19:09:50
Hola a todos
Feliz Navidad.
Estoy todavía en esto del cambio de base de datos y me encontré con otro problema, os cuento:
Tengo esta sentencia que funciona en access:
Select Last(BancoNac.IdTramsac) AS IdTramsac


Ahora me he encontrado que firebird no la reconoce, no tiene esta funcion last.
Que puedo hacer, como se hace algo similar?
Saludos

Al González
25-12-2007, 19:58:49
¡Ho-ho-ho-hola a todos! :D

Así es Carlos, Last no es instrucción del SQL estándar (Microsoft mal acostumbra a los desarrolladores, y sobre todo en Access). Si lo que deseas obtener es el mayor valor encontrado en el campo IdTramsac, puedes recurrir a la tradicional función Max.

Pero si lo que buscas es el valor que tiene la última fila en el campo IdTramsac, lo primero a considerar es ¿cuál es la última fila?. Esta pregunta retórica lleva a considerar que en las bases de datos cliente-servidor no existen primeras o últimas filas absolutas, todo depende del orden (Order By) que establezcas en la consulta.

Si éste fuera el caso, la sentencia SQL podría ser como la siguiente:

Select First 1 BancoNac.IdTramsac AS IdTramsac From BancoNac
Order By ElCampoPorElQueDeseoOrdenar Desc

o simplemente:

Select First 1 IdTramsac From BancoNac
Order By ElCampoPorElQueDeseoOrdenar Desc


Si así fuera y la tabla en cuestión podrá tener miles de registros, convendrá además crearle un índice descendente sobre el campo por el que se ordena la consulta, para que la localización del registro sea mucho más rápida.

Hasta ahora me he percatado de que estás trabajando con Firebird 2, ¿por qué no la 1.5, que está un poco más consolidada?

¡Feliz Navidad!

Al González. :)

Caral
25-12-2007, 20:39:34
Hola
Muchas gracias Al.
Siempre con el dato exacto, eres espectacular.
Gracias.
Saludos

jachguate
26-12-2007, 18:49:23
Hasta ahora me he percatado de que estás trabajando con Firebird 2, ¿por qué no la 1.5, que está un poco más consolidada?

Hola Al.

Realmente no estoy seguro de lo que querés decir con esto... pero yo estoy haciendo desarrollo desde hace algunos meses con la 2... ya pensando en la 2.1 y migrando a mis clientes activos a 2.0.x. La verdad no me arrepiento. Esta versión tiene mejoras y, en mi experiencia, es tan estable como las anteriores.

¿que razón darías para seguir usando la 1.5?

Hasta luego.

;)

Al González
26-12-2007, 19:38:22
¡Hola!

...¿que razón darías para seguir usando la 1.5?...
Bueno Antonio, creo que la respuesta a esa pregunta dependerá de cada caso. Tratándose de Carlos, que viene saliendo de MS Access y apenas está dando sus primeros pasos en Firebird (según se desprende de algunos de sus hilos), creo que todavía le daría vigencia a este consejo:

http://www.clubdelphi.com/foros/showthread.php?p=228070#post228070

Pero en términos generales, cuando hablo de consolidación de un producto de software para desarrollo de aplicaciones, considero en el escenario no sólo las mejoras y la estabilidad del mismo, sino además la cantidad de información que puede encontrarse en la Red, la experiencia que muchos otros desarrolladores han adquirido en su uso, la disponibilidad de valiosos recursos como componentes, manuales de soporte, blogs, respuestas en los foros, alojamiento en servidores, etc.

Cierto es que alguien tiene que "entrarle" a las nuevas versiones, y soy de los primeros que me apunto para ello, pero, como de alguna manera doy a entender en el hilo referido, hay que tener cautela y definir las herramientas a usar en función de las circunstancias de cada caso.

Tengo dos proyectos medianos a mitad de desarrollo, usando Firebird 1.5.x. Obviamente no cambiaría en este momento la base de datos. Pero si al día de hoy comenzara un proyecto nuevo pequeñito, digamos de unas 20 tablas, seguramente emplearía Firebird 2.x.

Por cierto, ¿alguien conoce cuál es actualmente la forma más práctica y económica de utilizar Firebird 2 con dbExpress? Con 1.5 es fácil, utilizando el controlador de InterBase que viene integrado en Delphi (aunque estoy conciente de que tendré que abandonar el uso de ese controlador en los desarrollos donde comience a usar Firebird 2).

Espero haya quedado más claro y que Carlos opte por la versión que más le convenza y mejor se ajuste a sus circunstancias actuales. Y si es la 2, que mejor para los que seguimos el camino de ese buen producto nacido en Borland. :)

Un abrazo a la medida.

Al González. :)

jachguate
26-12-2007, 20:17:00
Hola Al.

Un gusto saludarte. :)

Tratándose de Carlos, que viene saliendo de MS Access y apenas está dando sus primeros pasos en Firebird (según se desprende de algunos de sus hilos), creo que todavía le daría vigencia a este consejo:


Personalmente, creo que esa es una razón mas para que use Firebird 2.0, que no es mas difícil de aprender que el 1.5 y de hecho, podría ahorrarle algunas vueltas (tablas derivadas o como yo les digo, inline views, por ejemplo).

Pero en términos generales, cuando hablo de consolidación de un producto de software para desarrollo de aplicaciones, considero en el escenario no sólo las mejoras y la estabilidad del mismo, sino además la cantidad de información que puede encontrarse en la Red, la experiencia que muchos otros desarrolladores han adquirido en su uso, la disponibilidad de valiosos recursos como componentes, manuales de soporte, blogs, respuestas en los foros, alojamiento en servidores, etc.
Entiendo tu punto, sin embargo en el caso particular de estas versiones de firebird, prácticamente toda la base de conocimiento existente para la versión 1.5 es aplicable para la versión 2.0, y el equipo de desarrollo se ha cuidado muy bien de mantener compatibilidad hacia atrás, al menos hasta la mencionada versión 1.5. Por tanto, podrías tener clientes 1.5 conectados a un servidor 2.0.

Esto incluye componentes de acceso (que de hecho, en su mayoría existen y están "adaptados" para la versión 1.0). Con ellos, podrás utilizar el cliente de la versión 2 para conectarte a un servidor 2.x, sin problemas.

Tengo dos proyectos medianos a mitad de desarrollo, usando Firebird 1.5.x. Obviamente no cambiaría en este momento la base de datos. Pero si al día de hoy comenzara un proyecto nuevo pequeñito, digamos de unas 20 tablas, seguramente emplearía Firebird 2.x.
He cambiado mis aplicaciones a firebird 2.0 sin cambiar una línea de código. Lo he hecho principalmente, porque puedo aprovechar las nuevas características dejando lo que ya existía (de aplicaciones) tal como estaba. A medida que surgen cambios o mejoras en lo ya existente, voy aprovechando las nuevas características allí también.

Por cierto, ¿alguien conoce cuál es actualmente la forma más práctica y económica de utilizar Firebird 2 con dbExpress? Con 1.5 es fácil, utilizando el controlador de InterBase que viene integrado en Delphi (aunque estoy conciente de que tendré que abandonar el uso de ese controlador en los desarrollos donde comience a usar Firebird 2).
No uso dbExpres... pero yo diría que lo que he dicho antes en este post es válido también para DBExpress.

Hasta luego.

;)

egostar
26-12-2007, 23:48:24
Pues mi experiencia (inexperiencia, seria mas correcto) con firebird 2 y delphi es que no he tenido ningún problema al usarlo con la paleta de componentes interbase, me gustaría saber en que se basan para decir que en dicha versión no es recomendable usar los componentes IBX (Interbase en TurboDelphi) y en que casos concretos tiene sus fallas. ;)

Salud OS

jachguate
27-12-2007, 00:21:20
Que tal egostar!

me gustaría saber en que se basan para decir que en dicha versión no es recomendable usar los componentes IBX (Interbase en TurboDelphi) y en que casos concretos tiene sus fallas. ;)


En mi experiencia, no hay fallo alguno.

No es recomendable usar IBX (paleta Interbase) en desarrollo contra firebird, de cara al futuro, pues las IBX (al ser un producto propietario de CodeGear) se fijarán solamente en el soporte para Interbase, ignorando completamente a Firebird.

Por ahora, las bibliotecas son compatibles (trabajo de los chicos de FB), pero en el futuro podrían dejar de serlo. (y seguramente así será).

Hasta luego.

;)

egostar
27-12-2007, 00:26:46
Que tal egostar!

En mi experiencia, no hay fallo alguno.

No es recomendable usar IBX (paleta Interbase) en desarrollo contra firebird, de cara al futuro, pues las IBX (al ser un producto propietario de CodeGear) se fijarán solamente en el soporte para Interbase, ignorando completamente a Firebird.

Por ahora, las bibliotecas son compatibles (trabajo de los chicos de FB), pero en el futuro podrían dejar de serlo. (y seguramente así será).

Hasta luego.

;)

Ok, pero nada tiene que ver la versión de Firebird que uses para no utilizar IBX, entiendo bien?

Salud OS

jachguate
27-12-2007, 00:32:46
Ok, pero nada tiene que ver la versión de Firebird que uses para no utilizar IBX, entiendo bien?

Salud OS

Hasta ahora, firebird ha mantenido la compatibilidad con las bibliotecas de Interbase. Yo espero que esa compatiblidad se mantenga... pero Firebird también podría romperla, y digamos que es probable que Firebird 2.5 o Firebird 3 ya no sea accesible con las IBX.

De la misma manera, puede ser que la biblioteca IBX de Delphi 2008 ya no sea compatible ni con Firebird 1.x

Cualquier cosa podría pasar.

Por otro lado.. ahora que estoy iniciando un nuevo desarrollo... he estado viendo con que mas puedo conectarme a Firebird, pues hasta ahora sigo usando BDE en los programas viejos e IBX en los mas nuevos....

Estuve evaluando IBO, pero me parecen muy enredados... :(

Cómo ya tenía que iniciar el desarrollo... estoy usando IBX, con la esperanza que MDO madure y pueda migrarlo a ellos.

Hasta luego.

;)

egostar
27-12-2007, 00:40:22
Hasta ahora, firebird ha mantenido la compatibilidad con las bibliotecas de Interbase. Yo espero que esa compatiblidad se mantenga... pero Firebird también podría romperla, y digamos que es probable que Firebird 2.5 o Firebird 3 ya no sea accesible con las IBX.

De la misma manera, puede ser que la biblioteca IBX de Delphi 2008 ya no sea compatible ni con Firebird 1.x

Cualquier cosa podría pasar.

Por otro lado.. ahora que estoy iniciando un nuevo desarrollo... he estado viendo con que mas puedo conectarme a Firebird, pues hasta ahora sigo usando BDE en los programas viejos e IBX en los mas nuevos....

Estuve evaluando IBO, pero me parecen muy enredados... :(

Cómo ya tenía que iniciar el desarrollo... estoy usando IBX, con la esperanza que MDO madure y pueda migrarlo a ellos.

Hasta luego.

;)

Si, eso lo entiendo perfectamente, sin uno no camina el otro, pero entonces, a donde volteo ya que aún estoy comenzando a migrar a Firebird. MDO donde se consigue?

Salud OS

jachguate
27-12-2007, 00:52:45
pero entonces, a donde volteo ya que aún estoy comenzando a migrar a Firebird. MDO donde se consigue?

MDO tiene sus ficheros alojados en sourceforge: http://sourceforge.net/project/showfiles.php?group_id=65944. Lo que no me gusta es que está en Release Candidate desde hace casi dos años. Eso significa que no hay un equipo activo de desarrollo... al menos no visiblemente... y con lo que viene, pues me da cheles confiarle un proyecto completo y luego quedarme tirado.

Cómo ya he mencionado antes, también está IBObjects: http://www.ibobjects.com/

Finalmente, entiendo que hay un driver (de pago, creo) para dbExpress... pero es algo que no he probado.

Hasta luego.

;)