Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-11-2012
Avatar de naty_prog
naty_prog naty_prog is offline
Miembro
 
Registrado: sep 2010
Ubicación: los condores,calamuchita
Posts: 25
Poder: 0
naty_prog Va por buen camino
problema con consultas

Hola amigos, tengo un problema con una consulta. A grandes rasgos, lo que realiza el bitbtn (botón de vista previa) de mi consulta, es seleccionar de 4 tablas distintas información, las cuales son carreras, planes de estudio, materias y docentes. Pues bien, la tabla docentes se relaciona solamente con la tabla materias (una relación de 1 a N : 1 docente dicta n cantidad de materias), y a la vez, materias con plan de estudio (N a 1 : 1 plan de estudio tiene n materias) y por ultimo plan de estudio con carreras (N a 1 : 1 carrera tiene n cantidad de planes de estudio).
La consulta comienza por seleccionar el área (Cs. Exactas, Cs Económicas, etc) a la cual pertenece esa carrera. En un combobox me aparecen las carreras del area que seleccione, al seleccionar una carrera, me aparecen los planes de estudio en otro combobos, y por ultimo, al seleccionar un plan, me aparecen todas sus materias.
El resultado que debe arrojar el bitbtn de la consulta son los docentes, que a medida que selecciono los combobox de carrera, plan y materia, los va filtrando. He aquí el problema, no logro hacer que funcione.
A continuación les dejo el código del bitbtn para realizar dicha consulta:


Código Delphi [-]
procedure TForm_docente.BitBtn1Click(Sender: TObject);
var
  consulta: string;
 puse_where: Boolean;
  begin
 inherited;

  consulta:='select distinct docente.nombre_apellido, docente.direccion, docente.tel_fijo, docente.tel_cel, docente.e_mail, '+
  ' docente.id_localidad, docente.fec_nac, docente.nacionalidad, docente.tip_doc, docente.sexo, docente.edad, docente.id_docente, '+
  ' docente.estado, docente.n_doc from docente, carrera, pe, materia'+
  ' where docente.id_docente=materia.id_docente and materia.plan_estudio=pe.id_pe and pe.carrera=carrera.id_carrera order by id_docente';

 case ComboBox_plan.ItemIndex of
    0:;//todas
    else
       begin
          consulta:= consulta + ' select * from pe where pe.id_pe=idpl';
        end
    end;

  case ComboBox_carrera.ItemIndex of
    0:;//todas
    else
        begin
          consulta:= consulta + ' select * from carrera where carrera.id_carrera=:car';
        end
    end;


   case ComboBox_materia.ItemIndex of
    0:;
     else
       begin
         dm.IBDataSet_materia.Locate('nombre',ComboBox_materia.Text,[]);
         dm.IBDataSet_profesor.Locate('id_docente',dm.IBDataSet_materiaID_DOCENTE.Value,[]);
          consulta:= consulta + ' select * from materia where materia.id_docente=:mat';
        end
     end;

   with(DM.IBQuery_profesor)do
    begin
      SQL.Clear;
      SQL.Add(consulta);
      open;

    if(ComboBox_materia.ItemIndex<>0)then
      begin
      ParamByName('mat').AsInteger:=DM.IBDataSet_profesorID_DOCENTE.Value;
      end;

    if (ComboBox_carrera.ItemIndex<>0) then
         begin
           if(DM.IBDataSet_carrera.Locate('nombre', ComboBox_carrera.Text, []))then
           ParamByName('car').AsInteger:=DM.IBDataSet_carreraID_CARRERA.Value;
         end;

       if (ComboBox_plan.ItemIndex<>0) then
         begin
           IF DM.IBDataSet_plan_estudio.Locate('nombre', ComboBox_plan.Text, []) THEN
           ParamByName('idpl').AsInteger:=DM.IBDataSet_plan_estudioID_PE.Value;
         end;
      
       if (IsEmpty) then
         begin
            ShowMessage('No se han encontrado resultados')
         end
      else
      begin
         Application.CreateForm(TQuickReport_Docentes,QuickReport_Docentes);
       QuickReport_Docentes.PreviewModal;
        QuickReport_Docentes.Free;
     end;

end;

 end;


Cuando selecciono algun combobox y quiero consultar, el programa me arroja un mensaje diciendo que algo anda mal con el "select", he probado con reemplazar los "select" por "and" y "where" pero me larga el mismo error diciendo que estan mal. Espero me puedan ayudar con este problema,ya que estoy en las ultimas instancias de mi tesis para recibirme.
Muchas gracias y saludos a todos!!!!
Responder Con Cita
  #2  
Antiguo 29-11-2012
donpedro donpedro is offline
Miembro
 
Registrado: nov 2009
Posts: 102
Poder: 0
donpedro cantidad desconocida en este momento
hola naty_prog

es una gran consulta... la estuve verificando y quiero que pruebes algo

cuando pones order by id_docente........ese campo no estas especificando de que tabla es.......si es de materia.id_docente o docente.id_docente

trata de especificarle la tabla a ese campo....a ver que sucede....suerte
Responder Con Cita
  #3  
Antiguo 29-11-2012
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
naty_prog,

Estas repitiendo la palabra clave Select:
Código SQL [-]
consulta:='select distinct docente.nombre_apellido...'
consulta:= consulta + ' select * from pe where pe.id_pe=idpl';
consulta:= consulta + ' select * from carrera where carrera.id_carrera=:car';
consulta:= consulta + ' select * from materia where materia.id_docente=:mat';
Nota: Para depurar la consulta prueba ejecutarla por partes, de lo más general a lo más específico, y así podrás depurar el Select con mayor facilidad.

Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 29-11-2012 a las 22:35:34.
Responder Con Cita
Respuesta



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
consultas con between odrack SQL 6 23-04-2008 23:11:20
Problema con consultas usando ADO Garry Tablas planas 5 23-01-2008 10:07:08
Problema de Actualizacion de Consultas UREÑA Conexión con bases de datos 6 12-12-2007 21:54:22
Problema con consultas DateDiff enecumene MySQL 1 07-12-2007 18:35:03
Consultas SQL V.S. Consultas Clipper AGAG4 SQL 7 20-12-2005 15:59:31


La franja horaria es GMT +2. Ahora son las 01:16:23.


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
Copyright 1996-2007 Club Delphi