Ver Mensaje Individual
  #6  
Antiguo 11-02-2010
_CALI _CALI is offline
Miembro
 
Registrado: mar 2008
Posts: 99
Reputación: 17
_CALI Va por buen camino
.

Cita:
Empezado por Caro Ver Mensaje
Hola de nuevo Cali, si ingresas directamente los datos en el DBGrid, tienes que hacer muchos controles. El evento que debes utilizar es el OnBeforePost del CLientDataSet, que se da antes de hacer el Post, pero si pones el Locate o el recorrido de la tabla sobre ese ClientDataSet dentro de ese evento, vas a tener problemas, como no se ha hecho el Post todavía va entrar en un ciclo hasta que te de un mensaje de Stack Overflow. Lo que se me ocurre para solucionar eso, es que hagas un clon de tu ClientDataset y hacer la busqueda ahí, tu codigo quedaría así:


Código Delphi [-]
procedure TForm1.ClientDataSet1BeforePost(DataSet: TDataSet);
var
ClientDataSetAux : TClientDataSet;
begin
Try
ClientDataSetAux := TClientDataSet.Create(Nil);
//Clonamos el ClientDataSet
ClientDataSetAux.CloneCursor(ClientDataSet1, True);

if dataSet.State = dsInsert then
if ClientDataSetAux.Locate('campo', DataSet.fieldbyname('campo').AsString, [loCaseInsensitive]) then
begin
//En este ejemplo estamos cancelando el insert
DataSet.Cancel;
Abort;
end;
Finally
FreeAndNil(ClientDataSetAux);
end;
end;





Para que insertes al final utiliza ClientDataSet1.Append

Saluditos




algo me parecia, Perfecto amigo muchas grcias!!!
Responder Con Cita