Ver Mensaje Individual
  #1  
Antiguo 23-03-2017
yuyidt yuyidt is offline
Miembro
NULL
 
Registrado: oct 2016
Posts: 40
Reputación: 0
yuyidt Va por buen camino
Question mostrar solo un registro cuyo id y cédula sean las mismas

Hola amigos buenos días. Tengo una pequeña duda, estoy haciendo un proyecto tipo moodle pero en delphi. Tengo el modulo de calificaciones donde se muestra un grid con el id del examen, cédula de los que participaron en dicho examen, nombre y apellido y la suma de la nota total.

- Tengo un form con un dbgrid, y un combobox,
el dbgrid conectado a 1 query con 2 tablas relacionadas, pero solo muestra en el dgbrid los campos, id:exa-cedula-nombre-apellido-nota
Código SQL [-]
SELECT
resp_calif.id_exad,eva_maestro.nombre_examen,resp_calif.cedula,resp_calif.pregunta,resp_calif.respue  sta,datos_personales.nombre,datos_personales.apellido,resp_calif.nota 
FROM
resp_calif
INNER JOIN datos_personales ON datos_personales.cedula = resp_calif.cedula
INNER JOIN eva_maestro ON eva_maestro.id_exa = resp_calif.id_exad

- las tablas son las siguientes:
resp_calif cuyos campos son (cedula-id_exad-pregunta-respuesta-puntos-nota), en esta tabla se encuentran todas las preguntas y respuestas de todos los usuarios, con los puntos que saco en la pregunta y el id del examen al que pertenece la pregunta (ejemplo, la cedula 123 respondió 5 preguntas del examen 1, lo que quiere decir que aparecerán 5 registros de esa cédula)

- en el combobox se muestran los id_exa(examenes), cuando selecciono el examen me muestra todos los usuarios que participaron en ese examen, lo que quiero que aparezca aquí es: la cédula 123 tiene 5 preguntas en el examen 1 pero que me aparezca un solo registro(es decir que solo me diga que esa cédula participo en ese examen y su nota es 20 por ejemplo).

- en el evento onchange del combobox tengo el siguiente código:
Código Delphi [-]
procedure TForm4.ComboBox1Change(Sender: TObject);
begin
with datamodule2.FDQuery10 do
begin
Close;
SQL.Clear;
SQL.Add('SELECT resp_calif.id_exad,resp_calif.cedula,datos_personales.nombre,datos_personales.apellido,resp_calif.no  ta,eva_maestro.nombre_examen');
SQL.Add('FROM datos_personales, resp_calif, eva_maestro');
SQL.Add('WHERE datos_personales.cedula = resp_calif.cedula');
SQL.Add('AND eva_maestro.id_exa = resp_calif.id_exad');
SQL.Add('AND resp_calif.id_exad = :idexd');
ParamByName('idexd').AsString:= ComboBox1.Text;
Open;
end;
end;

pero eso me muestra la misma cédula con el mismo id varias veces(depende de la cantidad de preguntas que haya respondido en ese examen, si fueron 5, me aparecen 5 registros). Solo quiero que me diga 1 registro(para saber que la cédula participo en el examen)) Como puedo hacerlo? me ayudan por favor?

Última edición por Casimiro Notevi fecha: 23-03-2017 a las 17:48:39.
Responder Con Cita