Ver Mensaje Individual
  #3  
Antiguo 17-10-2012
MartinS MartinS is offline
Miembro
NULL
 
Registrado: nov 2011
Ubicación: Villa Cacique - Argentina
Posts: 283
Reputación: 13
MartinS Va por buen camino
Hola: Muy bien no entiendo el problema pero si lo que necesitas es hacerlo solo una vez puedes hacerlo a través de un bucle, por ejemplo un Query (Le pongo Afiliados) que contenga

Código SQL [-]
Select Afiliados_id,Min(Id) as indice from AfiliadosControl
Group by Afiliados_Id

Esto te evitada mostrara solo el "menor" en id y sin duplicados ya que estas agrupando los afiliados, luego:

Código Delphi [-]
With TuComponenteSql do
Begin
   Close;
   Sql.Clear;
   Sql.Add('Uptade AfiliadosControl');
   Sql.Add('Set');
   Sql.Add('Principal = 1');
   Sql.Add('Where Id = :Codigo');
   While not Afiliados.Eof d
   Begin
       ParamByName('Codigo').AsInteger := Afiliandos.FieldByName('Indice').Asinteger;
       ExecQuery;
       Afiliados.Next;
   end;
end;


Nota: Nuevamente no se si lo haces una sola vez y ya o lo deseas hacer seguido, es decir, que es parte del sistema que lo haga habitualmente. En ese caso deberias probar algo como esto donde el bloque select muestra aquellos que se estan repitiendo pero no lo he probado y lo arme medio de memoria y por aproximacion

Código SQL [-]
Update afiliadosControl
Set
 Principal = 1
Where Id <> (Select id,Afiliados_id from AfiliadosControl a1
inner join AfiliadosControl a2
on a1.afiliados_id = a2.afiliados_id 
and a1.id < a2.id)



(Obviamente mucho no entiendo el problemilla)



Saludos
Responder Con Cita