Ver Mensaje Individual
  #8  
Antiguo 14-08-2014
Avatar de lmpadron
lmpadron lmpadron is offline
Miembro
 
Registrado: feb 2009
Ubicación: Habana, Cuba
Posts: 204
Reputación: 16
lmpadron Va por buen camino
Cita:
Empezado por Yugo Ver Mensaje
(...)y me salta la siguiente excepción: 'Invalid field name.BSIC'
Hola Yugo ... por lo que veo, me imagino el error este en que no haces referencia a la tabla2 para abrirla, por lo que al llamarla en el WHERE te dice q el campo BSIC no existe.

Prueba lo siguiente

Código SQL [-]
Query1->Close();
  Query1->SQL->Clear();

  Query1->SQL->Add("SELECT * ");
  Query1->SQL->Add("FROM tabla1, tabla2 "); // AKI AGREGAMOS LA TABLA2 !!!
  Query1->SQL->Add("WHERE tabla1.BSIC = tabla2.BSIC ");  
  //He renombrado el campo Id1 de la tabla1 a BSIC y el campo Id2.1 de la tabla2 tambien a BSIC por simple comodidad.
  //Los campos BSIC de ambas tablas son del mismo tipo (A) y mismo tamaño (6). 
  Query1->SQL->Add("AND tabla1.Frec1 = tabla2.Frec2.1 ");
  Query1->SQL->Add("ORDER BY Nombre1");

  Query1->Open();

Tambien puedes probar con un JOIN

Código SQL [-]
Query1->Close();
  Query1->SQL->Clear();

  Query1->SQL->Add("SELECT tabla1.* ");
  Query1->SQL->Add("FROM tabla1 ");
  Query1->SQL->Add("INNER JOIN tabla2 ON tabla2.BSIC = tabla1.BSIC ");  
  //He renombrado el campo Id1 de la tabla1 a BSIC y el campo Id2.1 de la tabla2 tambien a BSIC por simple comodidad.
  //Los campos BSIC de ambas tablas son del mismo tipo (A) y mismo tamaño (6). 
  Query1->SQL->Add("AND tabla1.Frec1 = tabla2.Frec2.1 ");
  Query1->SQL->Add("ORDER BY Nombre1");

  Query1->Open();

... Claro esto también podrías hacerlo así

Código SQL [-]
  Query1->Close();
  Query1->SQL->Clear();
  Query1->SQL->Add("SELECT tabla1.* FROM tabla1, tabla2"
                                  " WHERE tabla1.BSIC = tabla2.BSIC"
                                  " AND tabla1.Frec1 = tabla2.Frec2.1 "
                                  " ORDER BY tabla1.Nombre1");
   Query1->Open();

... o
Código SQL [-]
  Query1->Close();
  Query1->SQL->Clear();
  Query1->SQL->Add("SELECT * FROM tabla1"
                                  " INNER JOIN tabla2 ON tabla2.BSIC = tabla1.BSIC"
                                  " AND tabla1.Frec1 = tabla2.Frec2.1 "
                                  " ORDER BY tabla1.Nombre1");
   Query1->Open();

... o incluso una mejor

Código SQL [-]
  Query1->Close();
  Query1->SQL->Clear();
  Query1->SQL->Add("SELECT t1.* FROM tabla1 t1, tabla2 t2"
                                  " WHERE t1.BSIC = t2.BSIC"
                                  " AND t1.Frec1 = t2.Frec2.1 "
                                  " ORDER BY t1.Nombre1");
   Query1->Open();

... o
Código SQL [-]
  Query1->Close();
  Query1->SQL->Clear();
  Query1->SQL->Add("SELECT * FROM tabla1 t1"
                                  " INNER JOIN tabla2 t2 ON t2.BSIC = t1.BSIC"
                                  " AND t1.Frec1 = t2.Frec2.1 "
                                  " ORDER BY t1.Nombre1");
   Query1->Open();

un poco mas limpio verdad !!!
__________________
Nunca esta de más volver a ver la "Guia de Estilo" o "La Otra Guia de Estilo". Recuerda siempre usar los "Tags" para una mejor legibilidad de tu código.


Cuando miras fijamente al abismo, este te devuelve la mirada


oo______ooo_____ooo_ooooooo_____ooo____oooooo____ooooooo______oooo____ooo____oo_
oo______oooo___oooo_oo____oo__oo___oo__oo____oo__oo____oo___oo____oo__oooo___oo_
oo______oo_oo_oo_oo_oo____oo_oo_____oo_oo_____oo_oo____oo__oo______oo_oo_oo__oo_
oo______oo__ooo__oo_oooooo___ooooooooo_oo_____oo_ooooooo___oo______oo_oo__oo_oo_
oo______oo_______oo_oo_______oo_____oo_oo____oo__oo____oo___oo____oo__oo___oooo_
ooooooo_oo_______oo_oo_______oo_____oo_oooooo____oo_____oo____oooo____oo____ooo_
________________________________________________________________________________

Última edición por lmpadron fecha: 14-08-2014 a las 22:49:09.
Responder Con Cita