Ver Mensaje Individual
  #5  
Antiguo 11-02-2010
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Reputación: 24
Caro Va por buen camino
Cita:
Empezado por _CALI Ver Mensaje
gracias por responder!!!

me refiero a los item al nro de linea que voy ingresando al detalle
ejm:
01
02
03
---
nLinea

//************

por otro lado yo quiero ingrsar los datos directamente en la grilla,
en que evento del campo coloco el locate o hago el rrecorrido????



Gracias denuevo
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
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita