PDA

Ver la Versión Completa : Problema con FireDAC y DB2


probles2
19-11-2014, 09:37:33
Hola:
He preparado un programa con XE7 que tiene unos componentes FireDAC para acceder a bases de datos de IBM DB2 (FDPhysDB2DriverLink, FDConnection, FDQuery...) Compila bien y accedo a los datos sin ningún problema desde mi ordenador, pero si este mismo programa lo llevo a otros ordenadores me muestra el siguiente error al intentar ejecutarlo:
- [FireDAC][Phys][ODBC][Microsoft][Administrador de controladores ODBC] No se encuentra el nombre del origen de datos y no se especificó ningún controlador predeterminado.

En mi ordenador tengo instalado el Client Access de IBM, y en los ordenadores que lo tienen también funciona, pero en los que no tienen el Client Access no consigo que funcione. Creo que el problema es que no tienen la DLL necesaria. Lo he intentado poniéndoles cwbodbc.dll en Windows/System32, pero no funciona y tampoco me deja registrar esa DLL.

Mi duda es: Si FireDAC ofrece acceso nativo a DB2 no debería ser necesario instalar Client Access de IBM ¿no?.

Gracias por su atención.
Saludos:
Pablo.

Neftali [Germán.Estévez]
19-11-2014, 10:39:22
Mi duda es: Si FireDAC ofrece acceso nativo a DB2 no debería ser necesario instalar Client Access de IBM ¿no?.


Creo que "ofrecer" acceso nativo significa que utiliza las librerías nativas de cada sistema al que accede y no acceso por ODBC (por ejemplo).
Pero no significa que FIREDAC deba acceder a cualquier sistema sin necesidad de ningún fichero. Cosa que sería imposible prácticamente porque la mayoría son sistema propietarios y cerrados, por lo tanto el acceso sería prácticamente imposible.

Es una "reflexión". Si no es así que alguien me corrija.

probles2
19-11-2014, 11:39:23
Gracias Neftali por tu respuesta. Yo tenía una idea equivocada de lo que significa "acceso nativo".

Mi problema es que no sé que es exactamente lo que necesito para hacer que funcione mi programa en ordenadores que no tengan instalado el Client Access de IBM, y no tenemos posibilidad de instalarselo ya que no son ordenadores propios.

¿Alguien tiene alguna experiencia con programas que utilicen FireDAC contra DB2 en ordenadores sin Client Access?.

Gracias por vuestra atención...

Saludos:

Pablo.

Neftali [Germán.Estévez]
19-11-2014, 12:16:01
Creo que aquí tienes la explicación completa (http://docwiki.embarcadero.com/RADStudio/XE6/en/Connect_to_IBM_DB2_Server_(FireDAC)).
Revisa esa documentación.

probles2
19-11-2014, 12:56:32
Gracias de nuevo por tu aportación Neftali, pero ya había visitado esa página y había hecho pruebas bajándome los drivers que aconseja IBM (ibm_data_server_driver_for_odbc_cli_win32_v10.5.zip).

Después de descomprimir se queda todo en un directorio "clidriver", y dentro hay un directorio "bin" donde se encuentra el ejecutable db2oreg1.exe, que es el que indica en esa página que hay que ejecutar para instalar los drivers ODBC, que yo supongo que sirve para registrar los DLL necesarios, pero despues de ejecutarlo no sale nada, y al intentar ejecutar de nuevo mi programa me sigue saliendo: [FireDAC][Phys][ODBC][Microsoft][Administrador de controladores ODBC] No se encuentra el nombre del origen de datos y no se especificó ningún controlador predeterminado.


Supongo que algo no estoy haciendo bien, pero es que creo que me falta copiar o registrar algún DLL que no lo está haciendo el ejecutable que me bajé de esa pagina.

Gracias de nuevo Neftali.
Saludos:
Pablo.

orodriguezca
19-11-2014, 16:22:41
Si tu base de datos es DB2/400 requieres Client Access en los equipos clientes, no hay de otra, a menos que hagas un desarrollo de tres capas y utilices datasnap o algo similar.

probles2
19-11-2014, 18:06:33
Gracias orodriguezca, me lo temía, va a resultar que el "acceso nativo" no es tan maravilloso como me las prometía...

Saludos:
Pablo.

AgustinOrtu
19-11-2014, 19:17:54
No hay que agregar el driver en Deployment? Proyect -> Deployment -> Add featured files (la carpetita con el signo +) y tildarle el driver de DB2??

Neftali [Germán.Estévez]
19-11-2014, 20:54:52
En la página que te he pasado dice que el driver nativo es sólo para algunas versiones. Para el resto (más antiguas) hay que utilizar ODBC.

probles2
20-11-2014, 09:38:23
Hola:
He probado la solución que aportaba AgustinOrtu, pero al acceder a la opción "Add featured files" solo aparecen drivers de dbExpress, en concreto el DBExpress DB2 Driver (dbxdb2.dll), y no aparece ninguno de FireDAC. No obstante he probado añadiendo esta dll pero no ha funcionado. Gracias de todas formas AgustinOrtu.

En cuanto a lo que me apunta Neftali sobre las versiones anteriores que deben utilizar ODBC en lugar del driver nativo, no es mi caso, ya que yo utilizo la versión XE7 que si que tiene este driver nativo. Gracias Netftali.

Saludos:
Pablo.

Neftali [Germán.Estévez]
20-11-2014, 15:50:43
En cuanto a lo que me apunta Neftali sobre las versiones anteriores que deben utilizar ODBC en lugar del driver nativo, no es mi caso, ya que yo utilizo la versión XE7 que si que tiene este driver nativo. Gracias Netftali.


Me refería a la versión del SGBD no de Delphi.



The FireDAC native driver supports IBM DB2 Enterprise, Workgroup, or Express editions version 8 and later. We recommend v 8.2 at least. You can also work with other IBM database products using FireDAC ODBC or DBX Bridge drivers.

probles2
20-11-2014, 18:08:27
Perdona Neftali, no me había dado cuenta de a qué te referías, ya me extrañaba que volvieses a mencionar la versión de Delphi, que ya la había comentado en el primer post.

En cuanto a las versiones que citas del DB2, entiendo que son las de Windows (Enterprise, Workgroup, Express), y nosotros estamos accediendo a bases de datos DB2 de equipos IBM As400 (que vienen con el sistema), asi que no creo que se pueda aplicar esa restricción.

Gracias de todas formas Neftali, era una restricción que se me había pasado por alto, aunque no se aplique.

Saludos:
Pablo.

orodriguezca
20-11-2014, 22:31:58
Gracias orodriguezca, me lo temía, va a resultar que el "acceso nativo" no es tan maravilloso como me las prometía...

La ventaja del acceso nativo, cuando está disponible, es que nuestra aplicación no va a necesitar de intermediarios como ODBC y OLE DB para interactuar con las librerías clientes del SGBD. FireDAC tiene soporte nativo para los SGDB más populares y db2/400 (diferente a db2 para Windows/Linux) no es muy popular que digamos.

probles2
21-11-2014, 08:54:27
La conclusión a la que llegas, orodriguezca, me parece muy acertada. Parece que el acceso nativo solo está disponible para DB2 de Windows/Linux, y no para el DB2 de As400 para el que hay que seguir usando ODBC.
No veo otra solución que instalar Client Access de IBM en cada ordenador, a no ser a que a alguien se le ocurra algo más.
Gracias a todos por vuestras aportaciones.
Saludos:
Pablo.