Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #8  
Antiguo 16-08-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por lmpadron Ver Mensaje
Ecfisa ... un gusto verte !!! Saludos
Hola Impadron, también me alegra mucho verte por aca


Hola Yugo, si no entendí todo mal, del modo que te pongo en este ejemplo hace lo que solicitas en el primer mensaje. Para probarlo agrega 3 Querys, 3 DataSources y 3 DBGrids
Código:
void __fastcall TForm1::FormCreate(TObject *Sender)
{
  // NOMBRE, RE1, ID1
  QueryTabla1->Close();
  QueryTabla1->SQL->Text = "SELECT * FROM TABLA1";
  QueryTabla1->Open();
  DataSource1->DataSet = QueryTabla1;

  // ID - RE1, ID1, RE2, ID2, RE3, ID3, ...
  QueryTabla2->Close();
  QueryTabla2->SQL->Text = "SELECT * FROM TABLA2";
  QueryTabla2->Open();
  DataSource2->DataSet = QueryTabla2;

  // Ocurrencia de nombres
  DataSource3->DataSet = QueryNames;
}
void __fastcall TForm1::DataSource2DataChange(TObject *Sender,TField *Field)
{
  QueryNames->Close();
  QueryNames->SQL->Clear();
  QueryNames->SQL->Add("SELECT T1.NOMBRE");
  QueryNames->SQL->Add("FROM TABLA1 T1 JOIN TABLA2 T2 ON T2.ID = :PID AND");
  QueryNames->SQL->Add("( (T1.ID1 = T2.ID1 AND T1.RE1 = T2.RE1) OR");
  QueryNames->SQL->Add("(T1.ID1 = T2.ID2 AND T1.RE1 = T2.RE2) OR");
  QueryNames->SQL->Add("(T1.ID1 = T2.ID3 AND T1.RE1 = T2.RE3) OR");
  QueryNames->SQL->Add("(T1.ID1 = T2.ID4 AND T1.RE1 = T2.RE4) OR");
  //
  //  Aquí irían las comprobaciones faltantes...
  //
  QueryNames->SQL->Add("(T1.ID1 = T2.ID26 AND T1.RE1 = T2.RE26) )");
  QueryNames->ParamByName("PID")->AsInteger = QueryTabla2->FieldByName("ID")->AsInteger;
  QueryNames->Open();
}
Pero si te fijas, en la Tabla2 agregué un campo ID (T2.ID) de tipo integer que no se repite (UNIQUE).
Esto es necesario para poder distinguir unívocamente en que registro estamos parados, ya que los nombres a mostrar, corresponden a las comparaciones entre los pares de columnas (REx / IDx) de Tabla1 y las columnas (RE1/ID1 - RE26/ID26) de ese registro de Tabla2 y no otro.

Probé la Tabla2 con un ID y cuatro pares de valores (8 columnas) y funciona correcto, se me hacía pesado escribir las 22 comprobaciones restantes...

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Migrar version BCB6 Toni C++ Builder 6 20-10-2014 14:44:32
TurboPower Systool bcb6 eldonfsr C++ Builder 0 15-01-2008 04:11:35
Coincidencia?? vtdeleon Debates 2 28-04-2006 13:43:17
Exportación de datos de Excel a Tablas Paradox Mone Conexión con bases de datos 1 31-10-2005 21:15:40
Como buscar en una tabla Paradox ? gregorio Tablas planas 2 25-04-2005 18:54:29


La franja horaria es GMT +2. Ahora son las 12:21:54.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi