Usando AnyDAC con Delphi Tokyo
Hola amigos,
Bajé la versión de Delphi Tokyo Community Edition, pero quiero conectarme con bases de datos remota. Desde ya no puedo usar FireDAC, porque para esta versión está restringida a bases de datos locales, y además mi código es bastante viejo ya, y tengo una licencia de AnyDAC antes que los comprara Embarcadero. El asunto es que hice compilar mi aplicación, y también pude compilar AnyDAC; pero como algunos ya sabrán, Data.DB cambió mucho desde el tiempo de Delphi XE hasta ahora, y en resumen, AnyDAC no me trae valores desde la base de datos. ¿Alguien sabe qué es lo que cambió en Data.DB que hace que las librerías viejas de conexión a bases de datos no funcionen? Ví algo con UniDAC en otro hilo y también hice la pregunta, pero pregunto por acá para ver si alguien comparte su sapiencia. Saludos desde Chile |
Estaría bien saber a qué base de datos te estás conectando, para valorar otras alternativas.
Una opción es que mires de actualizar la versión de UniDAC (si puedes). La otra (si la anterior no es viable) es que utilices otros componentes de conexión, como pueden ser ZeosLib. Pero para "afinar" esto último habría que saber a qué te estás conectando. |
No uso UniDAC, sino AnyDAC (que ahora es FireDAC).
Cambiar estos componentes no es viable, es un proyecto viejo con harto código que usa funcionalidades específicas de AnyDAC. Lo que me interesa saber es qué cambió entre XE y XE3 en esta área. Recuerdo que en un momento FireDAC sólo soportó las versiones desde XE3 hacia adelante, lo que me hace sospechar que hubo cambios importantes en Data.DB en esa versión. Depurando ví que AnyDAC lo único que hace en un momento es un "fetch" a una estructura interna llamada FRow, pero haciendo muchos malabares con buffers internos. Luego Data.DB trata de acceder a su propio buffer interno pero AnyDAC nunca lo asignó, por lo tanto convierte el buffer sin inicializar a 0. Y ahí estoy aún, AnyDAC parece tener tentáculos por todos lados. |
Cita:
|
Bueh, es un poco complicado - tuve una empresa, vendí un software, pero ahora la empresa está, hm, "inactiva" (y yo estoy trabajando en otra parte). Pero los clientes siguen usando el software y yo, que tiendo a valorar mi nombre, les sigo dando soporte como un gil.
Mi filosofía respecto del soporte es intentar evitar dar soporte - para eso, sigo manteniendo el software. A veces me paso días desarrollando cosas que me evitarán una hora de soporte :-) En eso estoy ahora. Estoy intentando actualizar mi software porque quiero compilarlo en Tokyo. No quiero tener que usar máquinas virtuales para tener Delphi XE en un lado y Tokyo en otro... prefiero usar un solo IDE. En fin, sigo investigando, y veo que hubo cambios en XE3 en la manera que los TField obtienen sus datos. Pero no tengo el diff - alguien puede ser tan amable de hacer una comparación entre DB.pas de Delphi XE y Data.DB.pas de Delphi Tokyo? |
Suena razonable lo que comentas, leus (dejé algo acá).
Bien, hay dos maneras de resolverlo: Aprovecho que estoy desempleado para analizar esto con detalle, me das acceso por TeamViewer (no tengo esos componentes) y, divirtiéndome mucho, intento diagnosticar por qué ya no te funciona igual el componente proponiendo alguna solución que compartamos con todos. Tal vez un par de semanas basten. La otra opción es invertir en tu nombre. Saludos. :-) |
Al, eso sería genial. A ver si nos podemos coordinar por mensaje interno.
Sí, si me entra un dinero extra probablemente compre una licencia Enterprise. (¡Pero es equivalente a un mes de sueldo!) |
Ah, creo que encontré el problema, y de momento parece que todo funciona ok.
Las declaraciones de algunos overrides de AnyDAC no eran correctas, por lo que se estaba llamando a las funciones base de TDataset (que no hacen nada). Estos son los cambios necesarios, en caso de que alguien se encuentre con este problema: Código:
Source/uADCompDataSet.pas | 10 +++++----- |
Excelente. Qué bueno que pudiste resolverlo ajustando las directivas condicionales. :)
|
Cita:
|
Cita:
|
Cita:
|
Mes y medio :(
|
¿De qué habláis?
|
En caso de que alguien a futuro se encuentre con este problema, he seguido parchando AnyDAC para que funcione con las versiones recientes de Delphi (faltaban otros overrides por ahí). Obviamente no puedo publicar los fuentes, pero sí podría pasar los cambios necesarios por interno.
¡Saludos! |
La franja horaria es GMT +2. Ahora son las 02:08:39. |
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