FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Tomar datos de dos bases en insertarlos en una nueva
Buenas gente, voy a intentar explicar lo que quiero hacer con un ejemplo, creo que seria lo mejor. Planteo una situacion hipotetica.
Tengo dos bases de datos que corresponden a dos locales comerciales; digamos que tienen la siguiente forma: Local1 Codigo Nombre Precio 00001 Pantalon 60 00002 Remera 30 00003 Media 5 00004 Campera 90 Local2 Codigo Nombre Precio 00001 Pantalon 65 00002 Remera 35 00003 Media 5 00005 Zapatilla 85 Las dos bases son iguales (en forma); lo que quiero hacer con delphi es tomar esos datos de la primer tabla y de la segunda y volcarlos a una nueva tabla para despues mostrarlos en un DBGrid. El tema es que la tabla buena va a ser diferente a esa, tendria la forma siguiente: Codigo Nombre Local1 Local2 00001 Pantalon 60 65 00002 Remera 30 35 00003 Media 5 5 00004 Campera 90 - 00005 Zapatilla - 85 Se entiende? Las columnas de "codigo" y "nombre" siempre son iguales en las dos tablas, la que varia es la de precio. Lo que tiene es que a veces un codigo esta en una base y no en otra, de ahi lo de juntar los datos de las dos y generar una nueva completa. Refiriendome a una tabla sola, en delphi tengo dos edit, uno que es para poner el codigo inicial, y otro el final; con eso yo hago un select "desde" y "hasta" tal codigo para que lo muestre (seria select * from tabla1 where codigo >= edit1 and codigo <= edit2 (eso lo tengo funcionando). Me gustaria hascer lo mismo, pero tomando los datos de las dos bases y volcarlos en una nueva. Mi idea era, hacer un select de cada tabla desde y hasta lo que figure en los edit; que esos datos generen un archivo de texto con cada linea siendo un INSERT y luego un UPDATE; genero dos archivos; despues hago que delphi los corra en la base nueva y asi obtengo una que es la combinacion de las dos. Me podrian plantear, por que cuando arranca tu aplicacion no haces un select de las dos tablas completas en cada base y los cargas en la base nueva y de ahi trabajas con los edit y el grid?. Si, lo pensé, el tema es que aca simplifique para ejemplificar, yo en realidad estoy laburando con 5 bases y cada tabla tiene aprox. 6000 registros, o sea que si intentara hacer eso la aplicacion tardaria bastante en iniciar, y mas allá de eso, deberia inventar el mismo sistema; un select que me lleve a un script toda la tabla, corra INSERT; un select de la segunda tabla que genere otro script, este que corra un INSERT (para los codigos que no estaban) y un UPDATE para poner los precios en los que si estaban. Se entendio algo de lo que explique? porque a veces divago y no termino resumiendo nada. Lo que si, no tengo la menor idea de como hacer todo lo que dije, :P me surgio la idea despues de ver como hacian algo parecido. Desde ya, gracias al que leyo todo esto! PD: Es firebird 1.5 Última edición por pnikkosis fecha: 30-11-2009 a las 18:39:06. |
#2
|
||||
|
||||
Lo que pretendes más o menos se puede conseguir con una sentencia SQL; No comentas la Base de Datos que utilizas, as´ñi que puede variar la sentencia, pero sería algo así:
Esto es en la teoría. Luego hay que saber el caso concreto en que te encuentras. A veces, tal y como tú comentas, una solución que en teoría funciona, puede no ser viable a loa hora de la verdad por muchísimas razones (falta de velocidad, volumen de datos,...) Tal vez si nos explicaras el caso real y lo que necesitas hacer, te podamos dar una solución más adecuada. O tal vez orientarte por otro camino para llegar a conseguir lo mismo que necesitas.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. Última edición por Neftali [Germán.Estévez] fecha: 30-11-2009 a las 15:50:30. |
#3
|
||||
|
||||
como explique arriba, no es una sola base de datos; asi que eso no se puede hacer; no son dos tablas en una base, son multiples bases con la misma tabla, creo que eso quedo bien explicado.
un select normal no me puede comprender mas de una base ya que con un componente de delphi no se pueden hacer multiples conexiones, de ahi a que tengo que hacer un select de cada tabla, crear un script y correrlo en la base nueva. te agradezco la ayuda igualmente ^_^ |
#4
|
||||
|
||||
Cita:
Pues, tranquilamente puedes hacer tu consulta SQL aunque sea de multiples base de datos por ejemplo;( siguiendo el ejemplo de Neftali): o si quieres mas cortita(usando alias) . Desde luego debes tener los privilegios adecuados para ambas base de datos y sus respectivas tablas. Nota: Probado con MySQL y los componentes Zeos (aunque no exactamente la misma consulta) Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
|
#5
|
||||
|
||||
Hay algo que yo no entiendo todavia, o evidentemente no lo aprendi.
Segun lo que estuve haciendo, para conectarme a una base firebird (lo puse al final de todo que la estoy usando) lo que hago es poner en delphi 3 componentes, un IBdatabase con los datos de la base, un IBquery linkeado a esa base y un DataSource linkeado al ibquery. Cuando quiero hacer una consulta, hago IBQuery1.SQL := 'select blablablablablabla'; para ver los resultados pongo un DBGrid linkeado al datasource. Yo en ese query no puedo hacer referencia a dos bases diferentes, porque ese query esta linkeado a una sola base; al igual que el DBgrid no puedo linkearlo a mas de un datasource. |
#6
|
||||
|
||||
Cita:
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
|
#7
|
||||
|
||||
Cita:
Sin ir más lejos en SQL Server puedes utilizar LINKED SERVERS para lanzar una consulta como la que necesitas (que involucre varias tablas de varios servidores). Desconozco si en otros SGBD's hay algo similar. AÑADO: Veo que rgstuamigo ya ha contestado.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Tomar datos del lector de código de barras | jam888 | OOP | 4 | 22-03-2010 17:53:03 |
Tomar datos de otra aplicacion | dblx | API de Windows | 4 | 23-12-2008 01:16:38 |
Tomar datos de excel | vinagre3ro | Internet | 2 | 04-10-2006 09:59:28 |
Hola soy muy nueva en esto de las bases de datos y deseo imprimir tablas | nuri | Impresión | 1 | 05-07-2005 19:49:31 |
Como mostrar los datos para luego insertarlos? | judoboy | OOP | 8 | 14-05-2003 09:51:51 |
|