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)
-   -   problema con inner (https://www.clubdelphi.com/foros/showthread.php?t=49792)

UREÑA 30-10-2007 16:43:36

problema con inner
 
hola amigos tengo el siguiente problema

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

Código Delphi [-]
  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?:

Código Delphi [-]
  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.

Código Delphi [-]
  
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:)


La franja horaria es GMT +2. Ahora son las 14:23:00.

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