Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   recorrer tabla (https://www.clubdelphi.com/foros/showthread.php?t=9576)

acrophet 27-04-2004 11:07:22

recorrer tabla
 
Hola, tengo una duda a la hora de hacer un bucle.
Si tengo 2 tablas y quiero juntar datos de las 2 en una 3a tabla. Cómo me puedo recorrer cada tabla?
Lo que me interesa es ir recorriendo cada tabla y juntar todos los datos de las 2 en la tabla temporal. Cómo se cuando empieza y acaba la tabla?

Un saludo.

Lepe 27-04-2004 11:26:09

Bueno, quizás te pueda servir hacer una consulta (Tquery) uniendo (join) entre las dos tablas por el código que las une, hay muchos ejemplos sobre join en el foro.

La respuesta a tu pregunta es :
tabla1.bof // Beginning Of Table
tabla1.eof // End Of
Código:

tabla1.First;
while not tabla1.eof do  // End of Table
begin
  ...
  tabla1.Next;

Saludos

acrophet 27-04-2004 12:36:49

Muchas gracias Lepe, lo que me has dicho ha funcionado a las mil maravillas.
Lo que sucede es que ahora tengo otra pequeña duda :D
Ya he conseguido meter todo lo que me interesa en mi tabla temporal (que es un rxmemorydata, para mas señas). Lo que pasa es que ahora no se como hacerle una consulta sql a esta tabla temporal, ya que creo que nombre de tabla no tiene (creo, ya que me da error al hacerle la consulta sql). El componente en si, tiene el nombre RxMemoryData1 y tiene un DataSource asociado.
Esta claro que con un 'select * from rxmemorydata1' no funciona. Como puedo hacer esto que me propongo?
Un saludo.

marto 27-04-2004 13:31:29

Wop!

Pues me parece que lo tienes complicado. Tu "tabla temporal" en es una tabla real en el sentido que no forma parte de ninguna base de datos. Tal y como lo planteas creo que no lo vas a poder hacer.
Yo veo dos soluciones. Si el sistema de base de datos soporta tablas temporales como SQLServer o MySql (creo que IB también), puedes crear tu tabla como temporal en el servidor y entonces efectuar tu consulta sobre ella. Otra opción mucho más sencilla es, si lo que quieres hacer con la consulta es solamente obtener algunos registros dada una condición, filtrar tu MemoryTable con esa condición:

Código:

  MiTabla.Filter := 'MiCampo=MiValor';
  MiTabla.Filtered := true;


acrophet 27-04-2004 13:40:00

Realmente lo unico que quiero es ordenar los datos de la tabla, no filtrar...
Se puede?

marto 27-04-2004 13:44:02

Bueno, eso lo tendrías que mirar en la documentación del componente... es posible que tenga alguna opción para ordenar por algún campo.

Si lo que quieres es ordenarlo solamente una vez (no que el usuario cambie el orden a su antojo) puedes poner una clausula ORDER BY en la consulta inicial

jachguate 29-04-2004 23:59:16

Pero esto mismo no podias obtenerlo directamente con una sentencia SQL en el servidor de base de datos???

No tengo idea de como "juntas" los datos de las dos tablas, pero o es un join o es un union en el server, con lo que en la misma consulta SQL podes añadir una clausula Order by para que los datos vengan de una vez ordenados... no??

Si te interesa, pero no sabes como hacerlo, te recomiendo la lectura de un buen libro o manual de SQL, y luego podrias venir aqui con tus dudas.

Hasta luego.

;)

jachguate 30-04-2004 00:03:06

Pero que no te habia respondido ya lo mismo en este otro hilo. Me parece que solo le has cambiado sabor a la misma pregunta, para la que de todas formas ya te habia dado la solución. Tan solo has intentado aplicarla??

:confused: :confused: :confused:


La franja horaria es GMT +2. Ahora son las 22:16:36.

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