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)
-   -   Error al leer datos de Sql Server con ADO (https://www.clubdelphi.com/foros/showthread.php?t=91705)

kes 04-04-2017 20:00:19

Error al leer datos de Sql Server con ADO
 
Hola a todos.

He migrado una aplicación de Delphi 6 a RAD Studio 10.1 Berlín y me encontrado con un problema que no consigo solucionar. Para realizar consultas a la base de datos utilizo componentes ADO (AdoQuery, Datasetprovider y ClientDataset) y me funciona sin problemas desde mi equipo. Sin embargo, cuando intento hacer la misma consulta desde otro ordenador sin el RAD Studio instalado me devuelve un error de "Access violation" al ejecutar la consulta (al abrir la conexión no hay ningún problema), siendo la misma base de datos que consultaba desde mi equipo. ¿Necesito instalar o registrar algún componente en el cliente para que las consultas a la base de datos funcionen en un entorno de producción?

Muchas gracias.

Casimiro Notevi 04-04-2017 20:41:03

Sin más información es muy difícil ayudarte, pero comprueba que la conexión a la base de datos está cerrada cuando compilas el programa.

Neftali [Germán.Estévez] 05-04-2017 09:17:32

Cita:

Empezado por kes (Mensaje 515157)
...siendo la misma base de datos que consultaba desde mi equipo. ¿Necesito instalar o registrar algún componente en el cliente para que las consultas a la base de datos funcionen en un entorno de producción?

¿Y la Base de Datos es....?

kes 05-04-2017 11:07:31

La base de datos está un servidor SQL Server 2008, pero lo extraño es que el error no aparece en el momento de la conexión, sino en el momento de abrir la consulta. También comprobé que no haya ninguna conexión abierta en tiempo de diseño, pero están todas cerradas hasta abrirlas en tiempo de ejecución.

No se si para la aplicaciones creadas en RAD Studio es necesario instalar algunos componentes en el equipo que vaya a utilizar el programa para que se pueda consultar la BD, por que haciendo exactamente lo mismo en Delphi 6 no me daba ningún problema.

Neftali [Germán.Estévez] 05-04-2017 11:33:59

Cita:

Empezado por kes (Mensaje 515190)
No se si para la aplicaciones creadas en RAD Studio es necesario instalar algunos componentes en el equipo que vaya a utilizar el programa para que se pueda consultar la BD, por que haciendo exactamente lo mismo en Delphi 6 no me daba ningún problema.

Si has compilado la aplicación igual no debería ser necesario.

Si estás utilizando ADO tampoco para eso es es necesario instalar nada, porque los sistemas nuevos ya traen todo los necesario.
Es más, si estás realizando la conexión es que los componentes son correctos y están presentes.

¿Estás seguro de que las Bases de Datos son idénticas?
Estoy pensando es que algún campo sea diferente.

De todas formas es dar palos de ciego. En estos casos debes añadir Log o Debug (a un fichero o utilizando OutputDebugString) para tener una idea de lo que está pasando.

kes 06-04-2017 18:14:05

La base de datos és la misma. Si me conecto a ella desde mi ordenador me funciona sin problemas, pero desde cualquier otro (incluso desde el propio servidor) me falla al abrir el ClientDataSet.

Solo tengo tres componentes (un AdoQuery, un DataSetProvider y un ClientDataSet, todos relacionados entre sí) y una línea de código: ClientDataSet1.Open;

Al abrir el ClientDataSet es cuando salta el error de "Access violation" sin dar tampoco mas información. Curiosamente, si no abro el ClientDataSet y abro únicamente el AdoQuery, funciona sin problemas y me devuelve la consulta, por lo que queda claro que no es un problema de la conexión a la base de datos.

kes 06-04-2017 19:51:57

Ya he encontrado la solución!

Resulta que existe un problema de incompatibilidad en la librería midas.dll con la nueva versión de RAD Studio y algunos equipos. Para solucionarlo, basta con agregar la referencia MidasLib en la cláusula uses del programa. Con esto se ha resuelto el problema.


La franja horaria es GMT +2. Ahora son las 02:27:59.

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