PDA

Ver la Versión Completa : Validar ingreso de datos en TClientDataSet?


ezequiel913
13-10-2011, 21:14:21
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.

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;