PDA

Ver la Versión Completa : Conectar FireDAC en Delphi XE8 con Postgres


elaguna
07-08-2015, 18:16:39
Qué tal, saludos.

Pues volviendo al consumismo con Embarcadero, adquirimos la fabulosa nueva versión de RAD, XE8, wow :)!!!

Y aprovechando que nos acaban de solicitar que una de nuestras aplicaciones sea multiplataforma/multidispositivos, pues queremos utilizar la nueva versión. Lo último que utilizamos es XE.

En la aplicación utilizamos PostgreSQL y Zeos, sin ningún problema, pero al tratar de migrar a la nueva versión, todavía no hay una versión de Zeos para XE8, entonces como sugieren en este hilo http://www.clubdelphi.com/foros/showthread.php?t=85795&highlight=firedac+postgres (http://http://www.clubdelphi.com/foros/showthread.php?t=85795&highlight=firedac+postgres), queremos usar FireDAC.

Es ahí en donde tenemos el problema, nos pide la librería libpq.dll y demás librerías (hasta ahí todo normal), Postgres está instalado y funciona correctamente, buscamos en la ayuda de Embarcadero para este tema y seguimos las indicaciones: http://docwiki.embarcadero.com/RADStudio/XE8/en/Connect_to_PostgreSQL_%28FireDAC%29. (http://docwiki.embarcadero.com/RADStudio/XE8/en/Connect_to_PostgreSQL_%28FireDAC%29)

Solicitamos el apoyo de Embarcadero y nos mandaron exactamente la misma información.

El error que nos manda es

[FireDAC][Phys][PGSQL]-314. Cannot load vendor library [libpq.dll]. No se puede encontrar el módulo especificado. Hint: check it is in the PATH directories or application EXE directories, and has x86 bitness.Siguiendo las indicaciones y modificando el archivo FDDrivers.ini agrego las líneas

[PG]
VendorLib=C:\Program Files (x86)\PostgreSQL\9.4\lib\libpq.dllPero el error es el mismo:

[FireDAC][Phys][PGSQL]-314. Cannot load vendor library [C:\Program Files (x86)\PostgreSQL\9.4\lib\libpq.dll]. No se puede encontrar el módulo especificado. Hint: check it is in the PATH directories or application EXE directories, and has x86 bitness.Todo es x86 (DB, XE8, y dll).

¿Alguien ha tratado de utilizar FireDAC con esta DB y cómo lo han solucionado?

Gracias a todos.

elaguna
12-08-2015, 07:15:48
Pues ya pude establecer la conexión, no sé si era el procedimiento correcto, pero funcionó.

La librería de cliente que por default trae Postgres, no funciona y no hubo forma de hacer que delphi la reconociera, lo intenté en un proyecto nuevo y lo mismo. La solución fué utilizar la librería libpq74.dll de los componentes Zeos que habíamos estado utilizando, pero no en el archivo de configuración (sigue mostrando el error), sino por medio del componente TFDPhysPgDriverLink.

Espero que le sirva a alguien que se encuentre con el mismo problema.

Saludos a todos.

gatosoft
13-08-2015, 16:22:44
Hola elaguna,

Pues si han podido invertir en el XE8, no estaría de mas que hicieran un esfuerzo mas y le apostaran a UniDAC (https://www.devart.com/unidac/) de la empresa DevArt.

En mi concepto son muy buenos componentes y se comunican diretamente con PostgreSQL. sin los enredos tipicos que tiene la famosa Libpq.dll

De hecho yo los adquirí para poder trabajar con postgreSQL, y poder utilizar multiples motores en mis aplicaciones.

La verdad no tienen nada que envidiarle a FireDAC y son muy estables.

Cabe decir que adquirí UniDac antes que Embarcadero adquiriera FireDAC, pero aun asi no los cambio. Te los recomiendo.

elaguna
20-08-2015, 18:58:38
Qué tal gatosoft.

Estoy revisando la información en la página de DevArt y parece prometedor, ojalá no nos pase lo mismo que con los TMS component después de adquirirlos, resulta que en el soporte nos vamos enterando que algunos componentes y/o características no son completamente multidispositivos, eso pasa por no leer las letras pequeñas.

Aunque los UniDAC no son realmente caros, lo vamos a considerar antes de que se siga disparando el precio del dólar aquí en México. :(

Gracias por tu sugerencia, ahí les comento cómo nos va.

gatosoft
21-08-2015, 02:30:15
Pues Devart me ha parecido muy buena empresa. Con respecto a TMS, te cuento que también los adquirí y tabién he sentido que no todo es lo que parece... hay componentes en los que he comenzado a trabajar para despues tener que abandonar. En general, creo que a la empresa le hace falta enfocarse en mejorar muchos aspectos de sus productos.... pero no se, tal vez sea un poco apresurado, y me haga falta explorarlos mas.

Saludos

elaguna
25-08-2015, 20:27:48
Completamente de acuerdo.

Estoy probando los UniDAC y son una maravilla :D, nada de andar correteando dll's, cambié mi conexión y los querys; y todo bien sin teclear nada.

Como los parámetros de configuración los pusimos por código, no hubo más que quitar "éstos" y poner "aquellos" y todo funcionó perfecto. ^\||/. Creo que sí los vamos a adquirir.

Aunque soy partidario del software libre (mi corazón está partido entre Fedora y Ubuntu), mi estómago (y el de mis hijos) me hace trabajar en Windows y recientemente en OSX, éste último genial hasta el momento.

Referente a TMS, lo que me llama la atención es que desarrollan componentes que, en mi opinión, deberían de ser mejores, con esto me refiero a ampliar y en cierto modo mejorar, las características de los componentes ancestros. Sin embargo, lo que he notado, es que le quitan propiedades o métodos fundamentales, para agregarle otros, que si bien hace que se vea todo muy bonito, en ocasiones te hacen dar muchas vueltas para llegar a algo que anteriormente se hacía en 4 teclazos :confused: y al final acabas por abandonarlos, ya que si alguno te da trabajo y lo tienes que quitar, y si el resto deben de mantener el mismo aspecto visual, tienes que cambiar todos y, en el mejor de los casos, cambiar algunas decenas de líneas de código. :(

Pero eso es otra historia.

Muchas gracias por tus sugerencias.

Saludos cordiales.

gatosoft
26-08-2015, 16:54:29
Yo he trabajado con PostgreSQL y Con Oracle estos componentes.. Con Oracle es aun mejor pues no requiere tener instalado el cliente oracle, que generalmente es bastante problemático(trabaja directamente por TCP/IP)

Del paquete Unidac, te recomiendo el componente TVirtualTable... es un sueño de componente, con este hago rápidamente implementaciones o demos con datos ficticios (sin apuntar a un motor de DB)

Tambien lo utilizo con DB temporal para guardar configuraciones de parámetros en memoria y para intercambiar información de via Datasnap...


Por otro lado, siendo justos, debo reconocer por el lado de TMS, que me ha ido bien con los componente TAdvFlexcel, el TPlaner el TAdvStringGrid.

Estoy probando el paquete de Plugins y creo que los voy a utilizar.

Estoy de acuerdo que manejarlos a veces implica un poco mas de esfuerzo, pero lo he resuelto creando clases basadas en estos componentes para agilizar las operaciones que utiulizo mas frecuentemente.

Hay otros componentes de TMS con los que estaba esperanzado, pero no los he podido desempantanar... como los TDBAdvGrid, El módulo de seguridad, Aurelius (Si los adquirí pero no los he podido poner en uso)

Saludo,

ccgiraldo2
26-08-2015, 21:26:44
Buenas tardes elaguna

Has tratando de instalar el Odbc de postgres?

Ya que utilizo FireDac con conexión a postgres y me funciona normal.

elaguna
04-09-2015, 05:35:58
Gracias por tu atención.

Buenas tardes elaguna

Has tratando de instalar el Odbc de postgres?

Si te refieres a instalar ODBC por la cuestión de las librerías, la respuesta es sí pero, como les comentaba, FireDac no se conecta y me manda los errores antes mencionados, sí se pudo conectar pero tuve que andar peregrinando con librerías de otro componente.

Si te refieres a utilizar ODBC para realizar la conexión, sí lo he utilizado hace ya varios años, la idea es ya no utilizar capas intermedias o las menos posibles, por esa misma razón anteriormente trabajábamos con Zeos.

Ya que utilizo FireDac con conexión a postgres y me funciona normal.

Esa es la cosa, ojalá me puedas dar un poco de orientación, en cómo lo solucionaste-configuraste.

Gracias

Al González
04-09-2015, 07:44:03
Del paquete Unidac, te recomiendo el componente TVirtualTable... es un sueño de componente, con este hago rápidamente implementaciones o demos con datos ficticios (sin apuntar a un motor de DB)

Tambien lo utilizo con DB temporal para guardar configuraciones de parámetros en memoria y para intercambiar información de via Datasnap...
Hola gatosoft, un gusto como siempre. Me saltó una duda sobre esta parte de tu discurso. Desconozco el alcance de ese componente, pero te preguntaría ¿qué ventajas tiene sobre el estándar TClientDataSet?

Perdón por desviar un poco el tema. Un saludo.

Al González.