Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   problemas con select distinct en acces y adoquery (https://www.clubdelphi.com/foros/showthread.php?t=49578)

JESUSNET 24-10-2007 21:56:19

problemas con select distinct en acces y adoquery
 
hola a todos estoy tratando de hacer una consulta a varias tablas en access usando adoquery pero no me funciona me ignora el select disctinct ya que me arroja los datos repetidos, no se cual será el problema, este es el codigo que uso:
Código Delphi [-]
datamodule2.ADOQueryrepresultados.Close;
   datamodule2.ADOQueryrepresultados.SQL.Clear;
   datamodule2.ADOQueryrepresultados.SQL.Add('Select DISTINCTROW detalles_resultados_emitidos.codigo_clasificacion,detalles_resultados_emitidos.codresultado,detalles  _resultados_emitidos.codigo_subclasificacion,');
   datamodule2.ADOQueryrepresultados.SQL.Add('resultados_emitidos.codresultado,resultados_emitidos.codr  esultado2,resultados_emitidos.fecha_emision,');
   datamodule2.ADOQueryrepresultados.SQL.Add('resultados_emitidos.cedula_paciente,resultados_emitidos.c  odigo_convenio,resultados_emitidos.observaciones,resultados_emitidos.anulado,resultados_emitidos.imp  reso,');
   //datamodule2.ADOQueryrepresultados.SQL.Add('DISTINCTROW(detalles_resultados_emitidos.codresultado),de  talles_resultados_emitidos.codigo_clasificacion,detalles_resultados_emitidos.codigo_subclasificacion  ,');
   datamodule2.ADOQueryrepresultados.SQL.Add('pacientes.cedula,pacientes.nombres,pacientes.direccion,pa  cientes.telefono,convenios.codigo,convenios.razon_social,convenios.rif,convenios.direccion,convenios  .telefono');
   datamodule2.ADOQueryrepresultados.SQL.Add('from resultados_emitidos,detalles_resultados_emitidos,pacientes,convenios');
   datamodule2.ADOQueryrepresultados.SQL.Add('where resultados_emitidos.cedula_paciente=pacientes.cedula');
   datamodule2.ADOQueryrepresultados.SQL.Add('and resultados_emitidos.codresultado = detalles_resultados_emitidos.codresultado');
   datamodule2.ADOQueryrepresultados.SQL.Add('and detalles_resultados_emitidos.codresultado = resultados_emitidos.codresultado');
   datamodule2.ADOQueryrepresultados.SQL.Add('and resultados_emitidos.codigo_convenio = convenios.codigo');
   datamodule2.ADOQueryrepresultados.SQL.Add('and resultados_emitidos.fecha_emision >= :fecha1');
   datamodule2.ADOQueryrepresultados.SQL.Add('and resultados_emitidos.fecha_emision <= :fecha2');
   datamodule2.ADOQueryrepresultados.SQL.Add('and resultados_emitidos.impreso = :impreso');
   datamodule2.ADOQueryrepresultados.SQL.Add('and detalles_resultados_emitidos.codigo_clasificacion = :codigo_clasificacion');
   datamodule2.ADOQueryrepresultados.SQL.Add('and resultados_emitidos.anulado = :anulado');
   codigo_clasificacion:=strtoint(dbecodigoclasificacion.text);
   datamodule2.ADOQueryrepresultados.Parameters.ParamByName('fecha1').value := datetostr(represultadosemitidos.DateTimePicker1.Date);
   datamodule2.ADOQueryrepresultados.Parameters.ParamByName('fecha2').value := datetostr(represultadosemitidos.DateTimePicker2.Date);
   datamodule2.ADOQueryrepresultados.Parameters.ParamByName('impreso').value := impreso;  //si
   datamodule2.ADOQueryrepresultados.Parameters.ParamByName('codigo_clasificacion').Value :=codigo_clasificacion;
   datamodule2.ADOQueryrepresultados.Parameters.ParamByName('anulado').value := anulado;//no
   datamodule2.ADOQueryrepresultados.Open;

lo que quiero es hacer lo siguiente:

si en la tabla resultados_emitidos tengo:
codresultado paciente
1 17988645
2 15485655

y en la tabla detalles_resultados_emitidos tengo
codresultado codigo_clasificacioon codigo_subclasificacion
1 1 1
1 1 2
1 1 3
2 2 4
2 3 7
2 1 5

lo que necesito es saber el resultado_emitido donde contenga la clasificacion especificada en el parametro por ejemplo si le digo que me arroje los resultados con codigo_clasificacion=1 me dija:

codresultado paciente
1 17988645
2 15485655

si le digo que solo los de clasificacion=3
codresultado paciente
2 15485655

pero me bota varias veces el mismo resultado_emitido cuantas veces halla el codigo_clasificacion por ejemplo me los bota así si le digo clasificacion=1:
codresultado paciente
1 17988645
1 17988645
1 17988645
2 15485655

lo he intentado asi distinct(detalles_resultados_emitidos.codigo_clasificacion)
distinctrow(detalles_resultados_emitidos.codigo_clasificacion)
y de otras foarmas y nada, sigue igual, si alguien puede ayudarme a ver donde esta el problema se lo agradeceria.

Caral 24-10-2007 22:32:38

Hola
Tal vez usando last en la consulta, haz una consulta directamente en access y busca que te muestre el ultimo, define la como la necesites y la copias y pegas en delphi.
Saludos


La franja horaria es GMT +2. Ahora son las 00:01:57.

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