Hola
No se si entiendo bien.
Archivo1: muestra lo que contiene el dbgrid, osea, lo que muestra la consulta sql actualmente.
Usuarios: es como pretendes que se muestre en el dbgrid, osea, que la consulta sql genere.
Me da la impresión que quieres que el usuario no se repita, solo lo necesario.
Código SQL
[-]
select DISTINCT u.usr as usuario, u.id,
u.nom+' '+ u.ape_pat+' '+ u.ape_mat as 'Nombre Completo',
CASE u.estado
when 1 then 'Activo'
when 2 then 'Suspendido'
end as 'Estado',
p.descr,
tp.descr ,
ua.dir_cliente,
ua.ult_act
from fusu_usr_per up
inner join fusu_per p on up.id_per=p.id
inner join fusu_usr u on up.id_usr=u.id
inner join fusu_tper tp on p.id_tper=tp.id
inner join fusu_usr_acc ua on up.id_usr=ua.id_usr
where ua.id=(Select Top 1 id from fusu_usr_acc where id_usr=ua.id_usr order by ult_act desc)
order by u.id
O podría ser:
Código SQL
[-]
select LAST(u.usr) as usuario, u.id,
u.nom+' '+ u.ape_pat+' '+ u.ape_mat as 'Nombre Completo',
CASE u.estado
when 1 then 'Activo'
when 2 then 'Suspendido'
end as 'Estado',
p.descr,
tp.descr ,
ua.dir_cliente,
ua.ult_act
from fusu_usr_per up
inner join fusu_per p on up.id_per=p.id
inner join fusu_usr u on up.id_usr=u.id
inner join fusu_tper tp on p.id_tper=tp.id
inner join fusu_usr_acc ua on up.id_usr=ua.id_usr
where ua.id=(Select Top 1 id from fusu_usr_acc where id_usr=ua.id_usr order by ult_act desc)
order by u.id
No llevo el hilo del asunto, solo es una apreciación.
Saludos