FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Manipular datos de distintas base de datos
Saludos a la comunidad,,,
Quiero que me puedan orientar como lograr juntar un select de 4 bases de datos MySQL distintas, en distintos host, en un dbgrid Estuve investigando, leyendo por la web, en este foro, soluciones para mi consulta, lo que tengo claro que es muy complicado hacer un join para las 4 base de datos ya que están en distintos servidores, por lo que quiero hacer las consultas por separado, guardar el resultado en una variable y luego procesarlas por algún campo en común, hacer unas sumatorias y esas cosas,,, Tengo instalado el complemento ZEOS en delphi7 sobre windows 7 y puedo conectarme sin problemas a las 4 bases de datos, la tabla a consultar tiene los mismos campos para las 4 bd, entonces quiero poder juntarlas en un solo dbgrid y ordenarlas por el campo en común,,, Haber si alguien me da luces para poder realizar esta programación Saludos desde chile |
#2
|
||||
|
||||
Tengo un programa que hace algo similar, incluso utilizando datos de diferentes motores de bbdd.
Para ello, utilizo un TClientDataset. Abro la primera consulta y su resultado se carga en el tclientdataset. Las siguientes consultas las abro y las cargo posteriormente en el mismo TClientDataset. El resultado se ve perfectamente en el TDBGrid. Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
#3
|
||||
|
||||
Hola fjcg02
Muchas gracias por tu ayuda, Dime una cosa como le agrego los demás resultados?? :/, ahora lo voy a intentar agregando al MasterSource algo así (DataSource1, DataSource2, DataSource3, DataSource4), Pero no me tinca, y por codigo como tengo que hacerlo, disculpa es que estoy recien iniciando en delphi, le estoy dando todos los dias 3 a 4 horas, como no voy aprender Saludos desde chile |
#4
|
||||
|
||||
Estimados,
Me lo he pasado horas tratando de cargar una sola tabla al ClientDataSet y no he tenido éxito, algo hago mal y no se que es, esta es la secuencia que estoy realizando Hago la Conexión con ZConection --> cargo una tabla con ZTable --> la cargo en un DataSource --> y agrego el componente ClientDataSet y no sé como cargar los datos, no se que propiedad usar, lo que hago es que en la propiedad MasterSource me sale la opción para vincular el DataSource que hice con anterioridad, así que la agrego, pero al darle doble click al componente ClientDataSet, me abre un form1.ClientDataSet, le doy click derecho y le doy a add all fields y me da el siguiente error
Al parecer me pide un nuevo componente que es el DataSetProvider, y ahí si que me pierdo ,,, Necesito un ejemplo en código, o como se configuran bien sus propiedades, este complemento es de mucha utilidad para mí proyecto y en sí para la programación en Delphi Saludos desde chile |
#5
|
||||
|
||||
hay alguien que pueda ayudar??
|
#6
|
||||
|
||||
Haz lo que te ha comentado fjcg02, consultas una base de datos y guardas el resultado en un clientdataset. Consultas otra base de datos y adicionas el resultado en el mismo clientdataset... y así con todas. Al final tienes en un clientdataset el resultado de las consultas a las distintas bases de datos.
|
#7
|
||||
|
||||
Ok si entiendo la idea, pero no sé como hacerlo por eso pido un empujón porque ni siquiera he podido agregar una tabla al clientdataset,
como le agrego el resultado??? |
#8
|
||||
|
||||
Aquí tienes la solución.
|
#9
|
||||
|
||||
Buenas.
Te falta un DataSetProvider entre la tabla y el clientdataset. Echa un ojo al libro http://terawiki.clubdelphi.com/Delph...phi_6_pdf_.rar . Espero que te sirva.
__________________
http://www.gestionportable.com |
#10
|
||||
|
||||
No había visto la respuesta de Casimiro, aún más directa. De todas formas, un vistazo a ese libro nunca viene mal.
__________________
http://www.gestionportable.com |
#11
|
||||
|
||||
Hola,
No tengo el código aquí, pero el clientdataset tiene un método algo así como tclientdadset.appendData() que te permite añadir datos. Mientras no hagas ApplyUpdates() no tienes problemas de que se inserten los registros, ya que no se hace ningún update. Así qué te recorres el dataset que quieres añadir y por cada registro haces un appenddata() en el tclientdataset "consolidado" y enchufas tus nuevos datos. Echa un vistazo a ver qué tal y postes tus dudas. No te voy a escribir el código, pero escribe con tus propuestas hasta que hagamos que te salga bien. Un saludo
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
#12
|
||||
|
||||
elistraus,
Cita:
Revisa este código: El código anterior en Delphi 7 bajo Windows 7 Professional x32, permite cargar en un TDBGrid por medio de un TClientDataset la información de tres Tablas contenidas cada una en tres Bases de Datos SQLite diferentes, usando los componentes de acceso de datos ZEOSLib, como se muestra en la siguiente imagen: Nota: Para el ejemplo se utilizo SQLite como Motor de BD, en tu caso particular debes sustituir la propiedad Protocol de TZConnection por la adecuada a tu versión de MySQL. Revisa este información Cita:
Nelson. Última edición por nlsgarcia fecha: 24-09-2014 a las 09:53:56. |
#13
|
||||
|
||||
muchas gracias revisando informacion, ahí les comento
Saludos desde chile |
#14
|
||||
|
||||
Hola,
Siendo CDSOrigen el DataSet que contiene los datos que quieres añadir y CDSDestino el TClientDataset donde quieres añadir los datos... Nota: EL Origen no tiene porqué ser un TClientDataset, puede ser cualquier tipo deDataSet. COmo te han indicado el resto de compañeros, necesitas un dataset ( ya lo tienes) un TDataSetProvider y un TClientDataSet conectados. DataSetProvider.Dataset -> el dataset que ya tienes. ClientDataSet.Provider-> el DataSetProvider. Con esto debería funcionar. Si añades un DataSource con la propiedad Dataset = ClientDataSet, y un DBGrid , haciendo ClientDataSet.Open, debería funcionar. Ten en cuenta que lógicamente, las querys que quieres "fusionar" tendrán que tener el mismo número de campos. Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
#15
|
||||
|
||||
Saludos a todos y doy las mil gracias por su cooperación he estado leyendo el libro recomendado "el lado oculto de Delphi" y entrando mas a fondo con esta programación,,,
Quisiera preguntar a Nelson, ya que he seguido el código enviado y tengo la siguiente pregunta, que sospecho su respuesta, pero quiero salir de la duda En el arreglo ADatabases, sus elementos son nombres de archivos??,,, y es así, dentro de ellos van los parámetros de conexión a las bases de datos?? Aquí es donde mi imagino se arma completamente los archivos de conexión a las bases de datos,,, Si esto fuera así, como debería ir el archivo *.DB??? Como me estoy recién iniciando con Delphi podrán ser preguntas muy básicas para Uds, como expertos que son con esta herramienta y lenguaje Espero tengan paciencia aprendo muy rápido, pero igual necesito una mano para esto Saludos desde chile |
#16
|
||||
|
||||
elistraus,
Cita:
Cita:
Cita:
Te comento: 1- Son nombres de BD SQLite que internamente tienen las tablas que se cargan en el TClientDataset, la conexión a cada BD se hace a través del siguiente código: 2- No se pueden usar metacarácteres para llamar cada BD SQLite, es por ello que se utilizo un arreglo con el nombre de cada BD a utilizar: 3- Te sugiero revisar la siguiente información: Espero sea útil Nelson. |
#17
|
||||
|
||||
Ok muchas gracias, de verdad estoy leyendo para nivelarme más,,
muchas gracias Nelson, iré narrando como me va Saludos desde chile |
#18
|
||||
|
||||
Saludos
Sigo con mis pruebas y errores y leyendo los manuales básicos, pero entrenando con este mismo problema,,, He seguido el código de nelson y lo he modificado a mi necesidad y ya he descubierto varias cosas, pero me falta mucho todabia Este es mi código
Pero me da error, lo compilo y todo le doy al boton para hacer la query y me da este error en esta línea Como que falla el Eof, no sé Haber si alguien me dice en que estoy mal, de momento tratare de ver si lo puedo arreglar,,, Otra cosa, hay manera de debuggear las variables si vienen con datos o que me imprima lo que viene, para ver como vienen los datos, así como un print $variable, algo así??? Saludos desde chile |
#19
|
||||
|
||||
elistraus,
Cita:
Revisa este código: Pregunto : ¿Ves el ámbito de la sentencia with ZQuery1 do?, es decir : ¿Ves la cobertura del begin-end de dicha sentencia?, compárala con el código del Msg #18, ¿ves la relación con el I/O error?. Te comento: 1- Usa adecuadamente la identación (Espacios y línea en blanco), esto aumenta notablemente la legibilidad del código. 2- La simplicidad es fundamental en programación. 3- Lee este documento : Debugging Delphi Programs - Marco Cantu Para finalizar: Cita:
Nelson. Última edición por nlsgarcia fecha: 24-09-2014 a las 10:31:31. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Conectar base de datos Firebird con base de datos Oscommerce 2.3.3 | Adriadob | Firebird e Interbase | 11 | 31-10-2012 11:28:46 |
manipular la misma base de datos en la misma pc | DELFIN2000 | Conexión con bases de datos | 10 | 23-07-2010 18:34:28 |
Guardar en 1 base de datos SQL, datos procedentes de 2 tablas distintas | adaypr | C++ Builder | 1 | 05-09-2006 11:56:33 |
Manipular datos de una base de datos | Javi2 | Conexión con bases de datos | 1 | 18-02-2005 20:16:58 |
Manipular datos de una base de datos | Javi2 | Varios | 2 | 14-02-2005 18:22:23 |
|