Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Validar ingreso de datos en TClientDataSet? (https://www.clubdelphi.com/foros/showthread.php?t=76169)

ezequiel913 13-10-2011 21:14:21

Validar ingreso de datos en TClientDataSet?
 
Hola Gente!!!

el problema que tengo es que no puedo validar el ingreso de datos en una tabla creada con un TClientDataSet, osea por que quiero hacer esto, en esta tabla voy ingresando datos en tiempo de ejecución, y tiene un campo Código que vendría ser la clave primaria y no se puede repetir, entonces quiero hacer una validación que no deje entrar 2 códigos iguales.

Mas detalles:
En la tabla que cree con el TClientDataSet tiene los Campos CODIGO, DESCRIPCION, UND_MEDIDAS, PRECIO_UNITARIO Y CANTIDAD, esta tabla la cargo con datos que saco de otro DBGrid, por ejemplo, el DBGrid tiene 9 campos, entre estos 9 campos estan los que yo necesito que son CODIGO, DESCRIPCION, UND_MEDIDAS, PRECIO_UNITARIO y para llenar el campo CANTIDAD lo saco de un EditText que lo carga el usuario a su gusto, entonces cuando cargo una fila en la tabla del TClientDataSet tiene que haber una validación antes que controle si ya existe ese codigo en la tabla, de ser verdadero tiene que avisar que ya existe ese codigo y me tiene que dar la posibilidad de sumar esa cantidad en la que ya tiene.

yo tengo este codigo para validar eso, pero no me anda, por que me tira False en el EOF de ClientDataSet, cuando en realidad me tiene que tirar True.

Código Delphi [-]
procedure TOrdenCompra.AgregarClick(Sender: TObject);
Var Cod: String;
begin

  Cod:= DBG.Columns[0].Field.AsString;


  ClientDS.Close;
  ClientDS.CommandText:= 'Select Codigo from ClientDS Where Codigo = ' + Cod;
  ClientDS.Open;
   If (ClientDS.Bof = False) or (ClientDS.Eof = False) Then Begin 
    If Application.MessageBox('El codigo ingresado ya existe, desea sumar la cantidad?','Error', MB_YESNO) = IDNO then begin
     Exit
    End Else Begin
         ClientDS.CommandText:= 'Select Codigo from ClientDS Where Codigo = ' + Cod;
         ClientDS.Edit;
         ClientDSCantidad.AsInteger:= ClientDSCantidad.AsInteger + StrToInt (Cant.Text);
    End;
    End Else Begin
        ClientDS.Append;
        ClientDSCodigo.AsInteger:= DBG.Columns[0].Field.AsInteger;
        ClientDSDescripcion.AsString:= DBG.Columns[1].Field.AsString;
        ClientDSUnd_Medidas.AsString:= DBG.Columns[5].Field.AsString;
        ClientDSPrecio_Unitario.AsInteger:= DBG.Columns[7].Field.AsInteger;
        ClientDSCantidad.AsInteger:= StrToInt (Cant.Text);
        ClientDS.Post;

   End;


La franja horaria es GMT +2. Ahora son las 16:15:06.

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