Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Providers
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-03-2013
Avatar de StartKill
StartKill StartKill is offline
Miembro
 
Registrado: ene 2004
Posts: 299
Poder: 21
StartKill Va por buen camino
Question Obtener error con applyUpdates

Buenas con el foro.

Trabajo con SQLServer 2008
Delphi XE

Tengo un mantenimiento de una tabla y para que el ejemplo sea mas práctico lo eh reducido así:

Estoy utilizando adoQuery, DataSetProvider y ClientDataSet.

Código Delphi [-]
//ADOQUERY
adoQuery1.sql.text := 'select codigo, familia, flag from familias ';
Para la Columna código(PK).
ProviderFlags[pfInUpadate], [pfInWhere], [pfInKey]  = true;
//------
DataSetProvider1.DataSet:= adoQuery1;
DataSetProvider1.Optios[poIncFieldProps]:= true;

DataSetProvider1.ResolveToDataSet:=false;
DataSetProvider1.UpdateMode:=pWhereKeyOnly;

ClientDataSet1.ProviderName:=DataSetProvider1.

Para actualizar a mi base de datos empleo la siguiente rutina

Código Delphi [-]
procedure TfrmFichaCenso.SpeedBtnNuevoClick(Sender: TObject);
begin
   try
      if ClientDataSet1.ApplyUpdates(0)<>0 then begin
         ShowMessage('Error al grabar');
      end
      else begin
         //otro codigo....
        close;
      end;
   Except
      on e: Exception do
      begin
         ShowMessage(e.ClassName + ', <-(Ficha familia)->, ' + e.Message);
         ClientDataSet1.edit;
      end;
   end;
end;

ESTA ES LA PRUEBA QUE HAGO
cuando se digita una clave duplicada, la excepción que envía no es descriptiva:

Cita:
EOleException, <-(Ficha familia)->, -214721789 is not valid value for field 'ERROR_CODE'. The allowed range is 0 to 4294967295
Pero si doy true a la propiedad....
Cita:
DataSetProvider1.ResolveToDataSet:=true;
El mensaje es...:
Cita:
Error al grabar
Y si implemento el metodo ReconcileError para el clientDataset:
Código Delphi [-]
procedure TfrmFichas.ClientDatset1ReconcileError(DataSet: TCustomClientDataSet; E: EReconcileError;
 UpdateKind: TUpdateKind; var Action: TReconcileAction);
begin
   ShowMessage('Reconcile Error: ' + E.Message);
end;

El error es mas descriptivo:
Cita:
Reconcilie Error: Infracción de la restricción UNIQUE KEY 'codigo_uq'. No se puede insertar una clave duplicada...
Pero el método ReconcileError solo se lanza si la propiedad <DataSetProvider1.ResolveToDataSet> es true. Muchas veces eh leido que este siempre debería estar en false,...

Entonces como hago para poder enviar un mensaje de error mas decente...
- Podría hacer un búsqueda previa, por que este el mensaje también podría ser por otro motivo y deseo visualizar un mensaje mas descriptivo.

A la espera de sus experiencias.

Your friend

StartKill
Lima-Perú
//----
Responder Con Cita
  #2  
Antiguo 11-03-2013
Avatar de StartKill
StartKill StartKill is offline
Miembro
 
Registrado: ene 2004
Posts: 299
Poder: 21
StartKill Va por buen camino
Al menos esto ayudó para saber como emitir mensajes de error.....

Ss.

Startkill
Lima-Perú
//--------
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
error numeric overflow con applyupdates nugame Conexión con bases de datos 3 15-12-2008 21:15:22
Error con ApplyUpdates, dbexpress, informix, problema de transaccion? CrystalBlood Conexión con bases de datos 0 01-10-2008 20:25:38
obtener valor de un campo despues de un insert + applyupdates(0) wonder boy Conexión con bases de datos 1 10-06-2004 23:05:39
Error en Applyupdates() de ClientDataSet con TIbQuery y Delphi 7 jmoran Conexión con bases de datos 1 16-07-2003 18:47:03
Error ApplyUpdates(0); raulparraco Conexión con bases de datos 4 27-05-2003 22:43:44


La franja horaria es GMT +2. Ahora son las 17:34:58.


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
Copyright 1996-2007 Club Delphi