Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   probla con consulta sql en dbgrid (https://www.clubdelphi.com/foros/showthread.php?t=51991)

bsoulfly 06-01-2008 20:29:48

probla con consulta sql en dbgrid
 
Hola que tal,soy nuevo en el foro,siempre que tenia una duda buscaba en este foro la respuesta, pero esta vez busque y no encontre, bueno tal vez sea porque estoy mas dormido que despierto(despues de un jarabe para la tos y varias pastillas antigripales). Bueno mi problema es este, resulta que necesito realizar una consulta en sql que me deberia arrojar datos de 2 campos de la tabla alumno y 1 mas de la tabla TrabajoRecepcional, pero me muestra todos los datos de la tabla alumno. Intente con una consulta mas sencilla pero me sigue mostrando todos los datos de la tabla alumno en el dbgrid.

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;


marcoszorrilla 06-01-2008 22:46:20

Código SQL [-]
         sql :='select Alumno.Id_T,Alumno.Matricula,Alumno.Nombre,Tema from alumno,trabajorecepcional where alumno.ID_T=trabajorecepcional.ID_T';
        ModuloDatos.Query1.sql.add(sql);
        ModuloDatos.Query1.Open;

Prueba así.

bsoulfly 08-01-2008 21:55:00

gracias pero no me funciona
 
Gracias por contestar pero no me funciono, cuando la ejecuto me sigue mostrando en la tabla todos los datos de alumno y yo solo quiero 2 campos.

jachguate 09-01-2008 03:04:41

Creo entonces que es momento que te busques un tutorial o introducción a SQL y ese pequeño problema lo resolvas vos.

Hasta luego.

;)

juanlaplata 09-01-2008 11:56:55

Echa un vistazo a la coneccion del DBGrid, creo que no enganchas el Query
Código Delphi [-]
ModuloDatos.DataSource1.DataSet:= ModuloDatos.Query1;
Creo

TheFlame 09-01-2008 15:59:50

Te recomiendo que en tus consultas en la que utilizas mas de una tabla lo hagas con las instrucciones INNER JOIN dado que es mas optimo que hacerlo con el WHERE. Tu consulta quedaría así:
Código SQL [-]
Select Alumno.ID_T,Alumno.Matricula,Alumno.Nombre,trabajorecepcional.Tema 
From alumno Inner Join trabajorecepcional On alumno.ID_T=trabajorecepcional.ID_T

Nota: En la tabla "trabajorecepcional" asumo que solo hay dos registros y que son los que quieres que se muestren, en caso contrario deberias hacer un where para obtener los dos registros que deseas.

Espero haberte sido de ayuda, Saludos.

bsoulfly 09-01-2008 22:43:25

help me
 
gracias TheFlame, por tomarte la molestia de responder pero creo que el problema no esta en la sentencia SQL, porque ya probe con consultas mas sencillas, ponga la consulta que ponga el resultado simpre es el mismo, no hace caso de la consulta sql y me muestra todo los registros de la tabla alumno. Juanlaplata creo que por ahi esta el error pero namas no doy y sobre el codigo que me diste lo puse y me marca un error: DataSource1:cirular datalinks no son permitidos. Tambien me dijeron que debia enlazar el DataSource en su propiedad DataSet al Query1,(pero este no me aparece)porque si lo enlazo a la tabla alumno siempre me mostraria todos los datos de alumno.

juanlaplata 10-01-2008 13:47:13

Ejecuta esta sentencia y veras que tabla o query tiene asociado el DBGrid
Código Delphi [-]
ShowMessage(DBGrid.Datasource.DataSet.Name);
Entonces sabras si esta asociado el query que experimentas o la tabla alumnos
Por eso era de poner
Código Delphi [-]
DBGrid.Datasource.DataSet:= Query1;
Suerte.

jachguate 10-01-2008 17:47:24

Cita:

Empezado por juanlaplata (Mensaje 257148)
Por eso era de poner

Por lo que ya se mencionó de la referencia circular, me temo que será:
Código Delphi [-]
  Query1.DataSource := nil;
  DBGrid.Datasource.DataSet:= Query1;

Hasta luego.

;)

bsoulfly 11-01-2008 19:22:23

problema resuelto
 
Gracias por la ayuda, ya resolvi el problema. Saludos:)

egostar 11-01-2008 19:54:50

Cita:

Empezado por bsoulfly (Mensaje 257531)
Gracias por la ayuda, ya resolvi el problema. Saludos:)

Seria bueno que colocaras la solución para que otros compañeros con el mismo problema tengan acceso a la solución.

Salud OS

bsoulfly 11-01-2008 21:13:09

Solucion
 
Esta es la solucion, lo que pasaba esque no enganchaba el query, me faltaba esa linea de codigo:

procedure TFconsulAlumno.Button1Click(Sender: TObject);
var
sql:string;

begin
ModuloDatos.ADOconnection1.connected:=true;
ModuloDatos.Tabla1.Active:=true;
ModuloDatos.TrabajoRecepcional.Active:=true;
if RadioButton1.Checked then
Begin
ModuloDatos.Query1.sql.Clear;
sql:='select alumno.Matricula,alumno.Nombre, trabajorecepcional.Tema from alumno,trabajorecepcional where alumno.ID_T=trabajorecepcional.ID_T';
ModuloDatos.Query1.sql.add(sql);
ModuloDatos.Query1.Active:=true;
Modulodatos.DataSource1.DataSet:=ModuloDatos.Query1;
Consultas.DataSource:=Modulodatos.DataSource1;

end;


La franja horaria es GMT +2. Ahora son las 07:41:12.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi