La Web del Programador: Comunidad de Programadores
 
    Pregunta:  56321 - PROBLEMA CON LAS CONSULTAS EN UN DBGRID
Autor:  beto soulfly
Hola, resulta que estoy realizando un pequeño sistema en la que muestro los resultados de una consulta SQL en un dbgrid pero al realizar me muestra todos los datos de una de las tablas a las que estoy consultando(tabla alumno) cuando yo solo necesito 2 datos de esta tabla y 1 mas de la tabla(ER). Trate de realizar una consulta SQl mas simple, pero me sigue arrojando todos los campos de la tabla alumno: //sql :='SELECT Matricula,Nombre FROM alumno';
Este es mi codigo:

procedure TFconsulAlumno.Button1Click(Sender: TObject);
var
sql:string;
begin
ModuloDatos.ADOconnection1.connected:=true;
ModuloDatos.Tabla1.Active:=true;
ModuloDatos.TrabajoRecepcional.Active:=true;
Consultas.DataSource:=ModuloDatos.DataSource1;
if CheckBox1.Checked then
Begin

ModuloDatos.Query1.sql.Clear;
//sql :='SELECT Matricula,Nombre FROM alumno';
sql :='select Matricula,Nombre,Tema from alumno,trabajorecepcional where alumno.ID_T=trabajorecepcional.ID_T';
ModuloDatos.Query1.sql.add(sql);
ModuloDatos.Query1.Open;
end;
end;

  Respuesta:  nelson
ModuloDatos.Query1.sql.Clear;
//sql :='SELECT Matricula,Nombre FROM alumno where alumno.maticula=:matricula and alumno.nombre=:nombre';
sql :='select Matricula,Nombre,Tema from alumno,trabajorecepcional where alumno.ID_T=trabajorecepcional.ID_T';
ModuloDatos.Query1.sql.add(sql);
ModuloDatos.Query1.Open;
end;
esto es suponiendo
me supongo que lo haces mediante un edit de texto
lo que hice con la clausa where es comparar los valores que tu query a buscar con el valor del edit

  Respuesta:  Luis Felipe García Gutiérrez
Según alcanzo a apreciar faltan los join entre las tablas que se cruzan para ejecutar la consulta; es necesario que en la sentencia SQL se hagan las relaciones entre los campos comunes que permiten las asociaciones.

Mucha suerte y espero haber sido de ayuda con el aporte.