Cita:
Empezado por Yugo
(...)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_
________________________________________________________________________________