PDA

Ver la Versión Completa : problema con inner


UREÑA
30-10-2007, 16:43:36
hola amigos tengo el siguiente problema

me marca un error en el inner lo he ejecutado en ibexpert y si funciona:confused:


frm_DataModule.qry_listDocentes.Close;
frm_DataModule.qry_listDocentes.SQL.Clear;
frm_DataModule.qry_listDocentes.SQL.Add('SELECT ALUMNO.MATRICULA, CALIFICACION.ID_PERIODO, ALUMNO.NOMBRE_ALUM, ALUMNO.APELLIDOP, ALUMNO.APELLIDOM,'+' AREA_ACADEMICA.ID_AREA, AREA_ACADEMICA.NOMBRE_AREA, CALIFICACION.M01, MATERIA.ID_MATERIA, MATERIA.NOMBRE_MATERIA, CT.ID_CT, CT.NOMBRE_CT, DOCENTES.NOMBRE_MA, DOCENTES.APELLIDOP_MA, DOCENTES.APELLIDOM_MA');
frm_DataModule.qry_listDocentes.SQL.Add('AREA_ACADEMICA, CT, ALU_MAT INNER JOIN ALUMNO ON ALU_MAT.MATRICULA = ALUMNO.MATRICULA INNER JOIN CALIFICACION ON ALU_MAT.MATRICULA = CALIFICACION.MATRICULA, MATERIA INNER JOIN DOCENTES ON MATERIA.ID_MATERIA = DOCENTES.ID_MATERIA');
frm_DataModule.qry_listDocentes.SQL.Add('WHERE CALIFICACION.ID_PERIODO = '+QuotedStr(VarToStr(cmb_periodo.KeyValue))+' AND AREA_ACADEMICA.ID_AREA = '+QuotedStr(VarToStr(cmb_aA.KeyValue))+' AND MATERIA.ID_MATERIA = '+QuotedStr(VarToStr(cmb_materia.KeyValue))+' AND DOCENTES.ID_MATERIA = '+QuotedStr(VarToStr(cmb_materia.KeyValue))+'');
frm_DataModule.qry_listDocentes.Open;
frm_DataModule.qry_listDocentes.FetchAll;


gracias de antemano!!:rolleyes:

enecumene
30-10-2007, 16:47:20
Hola Ureña, por favor trata de usar las etiquetas delphi para mejor entendimiento, no se ve mejor asi?:


frm_DataModule.qry_listDocentes.Close;
frm_DataModule.qry_listDocentes.SQL.Clear;
frm_DataModule.qry_listDocentes.SQL.Add('SELECT ALUMNO.MATRICULA, CALIFICACION.ID_PERIODO, ALUMNO.NOMBRE_ALUM, ALUMNO.APELLIDOP, ALUMNO.APELLIDOM,'+' AREA_ACADEMICA.ID_AREA, AREA_ACADEMICA.NOMBRE_AREA, CALIFICACION.M01, MATERIA.ID_MATERIA, MATERIA.NOMBRE_MATERIA, CT.ID_CT, CT.NOMBRE_CT, DOCENTES.NOMBRE_MA, DOCENTES.APELLIDOP_MA, DOCENTES.APELLIDOM_MA');
frm_DataModule.qry_listDocentes.SQL.Add('AREA_ACADEMICA, CT, ALU_MAT INNER JOIN ALUMNO ON ALU_MAT.MATRICULA = ALUMNO.MATRICULA INNER JOIN CALIFICACION ON ALU_MAT.MATRICULA = CALIFICACION.MATRICULA, MATERIA INNER JOIN DOCENTES ON MATERIA.ID_MATERIA = DOCENTES.ID_MATERIA');
frm_DataModule.qry_listDocentes.SQL.Add('WHERE CALIFICACION.ID_PERIODO = '+QuotedStr(VarToStr(cmb_periodo.KeyValue))+' AND AREA_ACADEMICA.ID_AREA = '+QuotedStr(VarToStr(cmb_aA.KeyValue))+' AND MATERIA.ID_MATERIA = '+QuotedStr(VarToStr(cmb_materia.KeyValue))+' AND DOCENTES.ID_MATERIA = '+QuotedStr(VarToStr(cmb_materia.KeyValue))+'');
frm_DataModule.qry_listDocentes.Open;
frm_DataModule.qry_listDocentes.FetchAll


por lo que he visto hay varios inner join y creo yo que eso no es premitido a menos que hagas sub querys, creo yo, no se.

Saludos.

ContraVeneno
30-10-2007, 17:48:47
Para empezar, no tenías la cláusula "FROM" y tienes un laberinto con los joins que no logro entender perfectamente.


with frm_DataModule.qry_listDocentes do begin
Close;
SQL.Clear;
SQL.Add('SELECT A.MATRICULA, C.ID_PERIODO, A.NOMBRE_ALUM, A.APELLIDOP, A.APELLIDOM,');
SQL.Add('ACA.ID_AREA, ACA.NOMBRE_AREA, C.M01, M.ID_MATERIA, M.NOMBRE_MATERIA, ');
SQL.Add('CT.ID_CT, CT.NOMBRE_CT, D.NOMBRE_MA, D.APELLIDOP_MA, D.APELLIDOM_MA');
SQL.Add('FROM AREA_ACADEMICA ACA, CT, ');
SQL.Add('ALU_MAT INNER JOIN ALUMNO A ON ALU_MAT.MATRICULA = A.MATRICULA ');
SQL.Add('INNER JOIN CALIFICACION C ON ALU_MAT.MATRICULA = C.MATRICULA, ');
SQL:Add('MATERIA M INNER JOIN DOCENTES D ON M.ID_MATERIA = D.ID_MATERIA');
SQL.Add('WHERE C.ID_PERIODO ='+QuotedStr(VarToStr(cmb_periodo.KeyValue)));
SQL.Add('AND ACA.ID_AREA ='+QuotedStr(VarToStr(cmb_aA.KeyValue)));
SQL.Add('AND M.ID_MATERIA ='+QuotedStr(VarToStr(cmb_materia.KeyValue))
SQL.Add('AND D.ID_MATERIA ='+QuotedStr(VarToStr(cmb_materia.KeyValue)));
Open;
FetchAll;
end; //with

UREÑA
30-10-2007, 20:59:17
maldicion solo era el form:mad:
los inner estaban bien

gracias contra te debo otra
:o

ColdFusion
27-03-2009, 16:25:02
Hola yo tengo un error en esta linea
if Solve(Mid(VarToStr(InsideLoop.Items[InsideLoop.Count-1]), InStr(1, InsideLoop.Items[InsideLoop.Count-1], ':') + 1)) then

El debug me dice:
Undeclared indentier VarToStr, que puede ser

ContraVeneno
27-03-2009, 16:51:58
te falta agregar la unidad "Variants" en el "uses" de tu código.

ColdFusion
27-03-2009, 17:00:08
Gracias!! ya me sirvio, te lo agradexco:)