Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Tablas planas (https://www.clubdelphi.com/foros/forumdisplay.php?f=20)
-   -   Consulta a varias bases de datos (https://www.clubdelphi.com/foros/showthread.php?t=96684)

trex2000 26-04-2024 07:55:39

Consulta a varias bases de datos
 
Saludos a todos.

Solicito su ayuda para poder realizar una consulta basada en un campo en común de diferentes bases de datos Access, el numero de bases de datos es variado dependiendo de la información solicitada.

Las bases de datos aumentan mes a mes ya que es información de créditos y se graban en bases de datos que se renombran dependiendo el mes y el año pero su estructura es la misma.

El programa actual nomas busca la información en un solo mes por lo tanto es una sola bases de datos y hay que estar cambiando la configuración cada vez y en ocasiones se debe buscar información de años y se hace muy tardado el procedo.

Es factible hacer algo así?

Espero haberme explicado bien.

De antemano muchas gracias.

chenech 26-04-2024 11:08:34

Hola, tuve que hacer algo parecido para importar datos de unas tablas de access y lo hice así, pido el Ejercicio en un Edit y el mes en otro y me monto la cadena de conexión con el campo ASBD21:
Código:

                        switch (EMes->Text.ToInt())
                        {
                                case 1: ASBD21 = ASDatos + "Historicoenero" + EEjercicio->Text + ".mdb"; break;
                                case 2: ASBD21 = ASDatos + "Historicofebrero" + EEjercicio->Text + ".mdb"; break;
                                case 3: ASBD21 = ASDatos + "Historicomarzo" + EEjercicio->Text + ".mdb"; break;
                                case 4: ASBD21 = ASDatos + "Historicoabril" + EEjercicio->Text + ".mdb"; break;
                                case 5: ASBD21 = ASDatos + "Historicomayo" + EEjercicio->Text + ".mdb"; break;
                                case 6: ASBD21 = ASDatos + "Historicojunio" + EEjercicio->Text + ".mdb"; break;
                                case 7: ASBD21 = ASDatos + "Historicojulio" + EEjercicio->Text + ".mdb"; break;
                                case 8: ASBD21 = ASDatos + "Historicoagosto" + EEjercicio->Text + ".mdb"; break;
                                case 9: ASBD21 = ASDatos + "Historicoseptiembre" + EEjercicio->Text + ".mdb"; break;
                                case 10: ASBD21 = ASDatos + "Historicooctubre" + EEjercicio->Text + ".mdb"; break;
                                case 11: ASBD21 = ASDatos + "Historiconoviembre" + EEjercicio->Text + ".mdb"; break;
                                case 12: ASBD21 = ASDatos + "Historicodiciembre" + EEjercicio->Text + ".mdb"; break;
                        }


Neftali [Germán.Estévez] 26-04-2024 11:43:17

Para mi la explicación es demasiado genérica como para darte una solución concreta.
Algunos SGBD's permiten en una misma consulta (SQL) interrogar a varias Bases de Datos, aunque no es nada eficiente.
Creo que MS Access no permite esta opción o al menos a mi no me suena.

Mi primera recomendación es cambiar este diseño:
Cita:

Empezado por trex2000 (Mensaje 555518)
...el numero de bases de datos es variado dependiendo de la información solicitada.
Las bases de datos aumentan mes a mes ya que es información de créditos y se graban en bases de datos que se renombran dependiendo el mes y el año pero su estructura es la misma.

Toda esa información debería estar organizada en una Base de Datos única organizada por meses. Y si la Base de Datos no lo soporta, la solución es cambiar de motor, pero no pasar a un "diseño" como este.

Neftali [Germán.Estévez] 26-04-2024 11:48:27

Cita:

Empezado por trex2000 (Mensaje 555518)
...y en ocasiones se debe buscar información de años y se hace muy tardado el procedo.

Cita:

Empezado por chenech (Mensaje 555520)
...pido el Ejercicio en un Edit y el mes en otro y me monto la cadena de conexión con el campo ASBD21:
[code]


La solución no pasa por cambiar la conexión y realizar muchas consultas. Es ineficiente de por si y tremendamente lento, por realizar N consultas y peor aun por realizar las N conexiones (que es muy lento).
La opción es "juntar" todos esos datos en una sólo Base de Datos y con una sola consulta y una única conexión, obtener los datos necesarios.


Usas hoy en día (aun con MS Access) una BD por meses o por años, es como a día de hoy unas "tablas planas" como Base de Datos (por poner un ejemplo).

Casimiro Notevi 26-04-2024 19:52:08

Totalmente de acuerdo con Neftali.
Ese sistema me ha hecho recordar algo similar que tuve que hacer con una "base de datos" que solamente admitía 65535 registros por tabla, tuve que crear una tabla para los clientes que empezaban por "A", otra para los que empezaban por "B", etc. y así para los artículos, para el histórico, etc.

Claro, eso fue en 1984 y eran otros tiempos :D


La franja horaria es GMT +2. Ahora son las 12:48:30.

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