![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Cita:
Cita:
¿¿¿No recordarás con qué tipo de problemas te encontraste??? Eso me ayudaría muchísimo Cita:
Lo que no he indicado es que mi empresa tiene exclusivamente 1 aplicación, que nos da de comer desde hace 30 años (Turbo Pascal->Borland Pascal->Delphi 3->Delphi 5->Delphi 2007), y se desarrolla en ella todos los días, por lo que no se puede hacer una "parada técnica" de, p.ej., un mes |
#2
|
||||
|
||||
Javierus, por lo que conozco de tu caso, te diría que no le tengas miedo a cambiar a Firebird+IBX, por ejemplo, ya que pasando a SQL estarías abierto a usar otros en cualquer momento que decidas cambiar.
Conozco también el caso del compañero newtron y no es que sea mala su elección, es bastante buena (salvo que no es software libre y no se tiene acceso al fuente), pero son elecciones tomadas por diversos motivos en momentos determinados y también influenciados por motivos externos como clientes que se deben continuar asistiendo, continuidad con el código, etc. El tema de las "TTable" es fácilmente solucionable limitando los registros cuando se conectan a ellas a ninguno o a un número determinado. Está el código fuente del mismo, por lo que no hay problema, se cambia el predeterminado "select * from tabla" por "select * from tabla limit 1" o "select * from tabla where codigo=0", etc. De todas formas, tomes la solución que sea, aquí estaremos para intentar ayudarte. Y, obviamente, es necesario desarrollar los cambios sin tocar lo que está funcionando, para poder seguir asistiendo a tus clientes, así que sería una "nueva rama" (o copia/pega ![]()
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#3
|
||||
|
||||
Cita:
Ya lo he comentado. El principal problema es que el código del programa estaba diseñado para trabajar con objetos Ttable y ese código no funciona con bases de datos SQL. Me hice de unos componentes "Ttable" para firebird (no recuerdo el nombre) que eran totalmente compatibles con el código que tenía pero cuando hacía el "open" de la tabla para después poder operar con ella lo que internamente realmente hacía es un "SELECT * FROM..." para cargarla en memoria y después poder hacer "findkey", "edit", etc... y eso se volvía totalmente inoperativo con tablas grandes tuviendo que desechar esa vía. Mi consejo es que si quieres conservar el código migrando a una base de datos SQL eches un vistazo a la web de ElevateDB que te puede resolver el problema, no lo vas a hacer en un "pispas" pero es factible y te permitirá migrar a una base de datos bastante robusta y cambiando el código fuente lo mínimo. Si es cierto que tiene un coste pero, a mi forma de entender, asumible para las contrapartidas que da. Cualquier duda me comentas. Saludos Edito: Se me olvidaba comentar que el costo que tiene esta base de datos no es por cada instalación de la misma, lo que se pagan son los componentes que instalas en tu Delphi siendo gratuita la instalación en los clientes del motor de base de datos.
__________________
Be water my friend. Última edición por newtron fecha: 17-04-2019 a las 14:03:01. |
#4
|
||||
|
||||
Puede que tenga la memoria desactualizada, pero el problema de la velocidad con ttables no era tan desastroso:
http://edn.embarcadero.com/article/27790 En el caso de ADO, es posible optimizar muy fácilmente la cosa. Como te digo, he usado tantos motores y lenguajes, que no veo como puedes realmente estar en un problema que haga que valga la pena seguir con BDE. En general, si usas una solución y optienes un desempeño ABISMAL, entonces algo esta faltando. Yo use mucho ADO en Delphi y no recuerdo haber tenido problemas de desempeño. Hay algunos parámetros que hay que setear para que el componente funcione al estilo TTable... Pero no tengo Delphi a la mano pa chequear...
__________________
El malabarista. |
#5
|
||||
|
||||
Me ha extrañado mucho lo de los problemas comentados con el componente "Table" y yo no recuerdo que fuese tan malo, aunque la última vez que lo usé hace tantos años que ni me acuerdo, así que he hecho una prueba muy simple, apenas he tardado 5 minutos en escribir el proyecto y grabarlo en video.
Solamente quería comprobarme a mí mismo y de paso recordar cómo iba, porque no me gusta contar algo que esté equivocado, quería estar seguro, así que esto es lo que he hecho: He abierto una vieja máquina virtual con windows XP y delphi 2007, he creado un nuevo proyecto. De la pestaña Interbase (son los componentes IBX) he añadido un ibdatabase, un ibtransaction y un ibTable. Lo he conectado a una base de datos firebird 2.5 de una gestión contable que hice hace unos años. He puesto un dbgrid, un dbnavigator y unos botones para conectar y otro para hacer una búsqueda. No hay nada de código SQL, ni Query, ni nada de nada, solamente el componente "table". He añadido (con ibexpert) a una de las tablas 110.000 registros que más los que tenía, suman un total 110.053 registros. Son poquitos, pero para hacer una prueba creo que valen, y el test lo he grabado en video. Botón conectar es instantáneo, desconectar igualmente, vuelta a conectar al instante. Voy al final de la tabla, casi instantáneo. Voy de nuevo al principio, instantáneo. En el registro 100.000 la descripción es "HOLA", le doy a buscar, que usa un simple locate y se puede ver que es instantáneo. Avanzo hacia arriba (retrocedo) un poco y edito un registro cambiando su descripción también por "HOLA", es instantáneo, la edición de cualquier registro no tarda absolutamente nada. Voy de nuevo al principio y le doy a buscar, encuentra el registro editado también instantáneamente. Desconectar y salir. Aquí está el video de prueba. Y aquí está el código fuente, nada de SQL, ni nada de nada.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#6
|
|||
|
|||
Gracias por la ayuda, Casimiro
Volveré a probarlo, porque que esa prueba la hice hará tres años, y no debo de recordar bien dónde estaba el problema. En mi caso las pruebas no deberían ser difíciles, dado que nunca utilizo el TTable directamente; usuarios uno propio heredado de TTable, por lo que bastará con encapsular en él el IBXTable. Ya tenía previsto probar el ElevateDB que me recomendó Newtron, así que probaré ambos Gracias de nuevo a todos; ya informaré de mi experiencia |
#7
|
||||
|
||||
Sí, prueba el elevatedb, creo que te gustará, va bastante bien también.
Lo único, que no es libre.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#8
|
|||
|
|||
Comprobado: se puede instalar el paquete del BDE y funciona perfectamente
El único problema es que te tienes que buscar la vida para conseguir el paquete del BDE, porque no está en descarga libre |
#9
|
||||
|
||||
Cita:
![]() De una forma o de otra estoy bastante contento con ElevateDB, hay alguna cosa que creo que con Firebird no podría hacer y que me resulta muy cómoda como el poder usar la base de datos embebida para entornos pequeños de red. En fin..... estas cosas modernas....
__________________
Be water my friend. Última edición por Casimiro Notevi fecha: 20-04-2019 a las 10:37:15. |
#10
|
||||
|
||||
Cita:
El "truco" con el componente Table es tener indexado el campo que se va a usar, y no olvidar traer solo los registros que se necesiten, aunque esto último también vale para cualquier consulta, sea del tipo que sea. Firebird también va perfecto para entornos pequeños de red, e incluso tiene una versión "embebida" para sistemas locales. Aparte de eso, elevateDB también está muy bien, es muy completo.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#11
|
|||
|
|||
Otra opción es MYSQL o MariaDB (gratuitos) con MYDAC https://www.devart.com/mydac/ de pago, que trae todos los componentes equivalentes de la paleta BDE, yo lo he hecho y funciona perfectamente, naturalmente hay que retocar el codigo pero sin demasiadas complicaciones. Eso si, si abres una tabla de un millon de registros los lleva todos a memoria, pero creo que es asi con cualquier componente que funcione como el TTable.
Devart tambien ha desarrollado https://www.devart.com/dac.html para multiples BD, pero estos no lo he probado. |
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Delphi Community Edition | WHILENOTEOF | Noticias | 92 | 26-03-2024 17:31:02 |
Delphi Community Edition Bootcamp | WHILENOTEOF | Noticias | 4 | 31-08-2018 22:22:16 |
Resurgimiento Delphi (Community) Componentes | brakaman | Varios | 2 | 23-07-2018 19:43:59 |
Consulta sobre Delphi XE10 o Delphi 10 Seattle Edition | rmendoza83 | Varios | 1 | 11-12-2016 06:44:14 |
Delphi 7 second edition | Willo | Varios | 6 | 22-05-2007 00:55:24 |
![]() |
|