PDA

Ver la Versión Completa : Validar campo requerido en clientdataset


diegofhernando
31-08-2007, 03:56:26
Hola gente, bien en esta ocasion revisando algo de codigo q tengo por ahi, me di cuenta q aun no logro personalizar el mensaje de error q genera el clientdataset cuando se van a salvar los datos y no se ingresa la informacion para un campo requerido, me gustaria poner mi propio mensaje en esa excepcion, si alguien lo ha logrado agradeceria su ayuda.

Como siempre muchas gracias por su tiempo.

Salu2 :cool:

diegofhernando
03-09-2007, 18:30:03
Bien... sigo sin solucionar esta situación, no pense q fuera tan complicado.

Sigo en espera de algun aporte, como siempre gracias por su tiempo.

Salu2:cool:

Chris
03-09-2007, 19:15:58
.... modificado ....

Chris
03-09-2007, 19:17:11
Deverías de poner el mensaje y el tipo de mensaje que normalmente aparece cuando los registros no cumplen las condiciones.
Creo que podrías validar tu los datos antes de llamar al Post. Esto sería mejor, ya que normalmente los mensajes de error de delphi, no identifican el error con un numero, sino solamente con un mensaje. (algo molesto por cierto).

diegofhernando
03-09-2007, 22:14:48
Primero... agradezco tu respuesta, y pues bien el mensaje de error que se genera en esta situacion es: "Field 'Nombre campo' must have a value", en la definicion de campos del clientdataset tengo establecidos cuales campos deben ser requeridos para terminar el registro y el mismo gestiona el mensaje de error, he probado con el evento OnReconcilleError, pero parece ser que este error de validacion no pasa por el.

Salu2:cool:

AzidRain
03-09-2007, 22:52:26
pon el post de tu tabla entre try..except..
captura la excepción y muestra tu mensaje personalizado


try
clientdataset.post;
except
ShowMessage('Aquí pon tu mensaje');
end;

Obviamente el código que te pongo captura CUALQUIER excepción solo tendrías que especificar en el except exactamente la excepción que quieres tratar.

Chris
03-09-2007, 23:42:46
Primero, debes comprender: Los campos pueden ser requeridos por la tabla subyacente o bien por medio de la propiedad "Required" del campo. Si tu situación es la primera, puedes utilizar el código puesto por el compañero AzidRain, en la excepción debes de manejar el error "EDatabaseError". Como te había dicho, la VCL no posee códigos de error, así que ten cuidado al manejar este error, porque un error de tipo EDatabaseError puede tener varias causas.

Si tu escenario es el segundo, en donde tú has marcado la propiedad Required a True, entonces utiliza el evento OnValidate del objeto TField asociado a cada campo.

diegofhernando
10-09-2007, 18:09:37
Q tal... gracias por sus respuestas, lamento haber tardado tanto en responder, efectivamente he encontrado la solucion a mi problema, lo he hecho a traves del evento beforepost del clientdataset de la siguiente manera:


for I := 0 to MDS.FieldCount - 1 do
begin
if (mds.Fields[i].Required) and (mds.Fields[i].AsVariant = null) then
begin
application.MessageBox(PChar('El campo ' + QuotedStr(mds.Fields[i].DisplayLabel) + ' es requerido.'),'Advertencia',mb_ok + mb_iconwarning);
Abort;
exit;
end;
end;



Salu2:cool: