Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-09-2003
mosorio mosorio is offline
Miembro
 
Registrado: may 2003
Posts: 159
Poder: 22
mosorio Va por buen camino
Captura de errores

Hola Compañeros!

Continuando con el desarrollo del utilitario que hago, se me ha presentado un pequeño inconveniente.
Cuando estoy haciendo la migración de los datos de un fichero texto a la tabla, quiero capturar cualquier tipo de error que se pueda presentar al hacer las inserciones.
Estoy utilizando un ClienteDataset, Provider, y un SQLTable, claro que pienso cambiarlo por un SQLDataset.
He colocado al hacerl el applyupdate del cds en -1, 0, 1 y no he podido capturar los errores. Capturarlos en el sentido que si se presenta un error, hacer la inserción del mensaje en un memo y que continue con el siguiente registro.
Si se presenta un error, sigue haciendo al inserción, pero cuando miro en la BD en la tabla solo ha insertado uno o dos hasta el error y en el memo sigue como si nada.

Agradecería la ayuda de antemano.
Responder Con Cita
  #2  
Antiguo 12-09-2003
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Hola.

¿ Haces un ApplyUpdates para cada registro ?. Yo te lo aconsejaría.

Código:
  while not ..... do begin
    ...... leemos la proxima linea a importar
    cdsDatos.Insert;
    cdsDatos.FieldValues['Campo1'] := .....;
    cdsDatos.FieldValues['Campo2'] := .....;
    cdsDatos.Post;
    try
      cdsDatos.ApplyUpdates(0);
    except
      txtMemo.Lines.Add('Error en Linea ' + .......);
    end;
  end;
Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #3  
Antiguo 12-09-2003
mosorio mosorio is offline
Miembro
 
Registrado: may 2003
Posts: 159
Poder: 22
mosorio Va por buen camino
Hola Marc!

En efecto estoy haciendo casi igual al consejo, solo que el applyupdate lo coloco en el beforepost del cds y las instrucciones de inserción en el bloque try, indicando o insertando en el memo la linea insertada y en el except la linea de error, solo que al ocurrir un error con el applyupdate(0), no sigue insertando en la tabla pero en el memo sigue visualizando la inserción.
Influye el colocar el apply en el beforepost??

Gracias nuevamente
Responder Con Cita
  #4  
Antiguo 12-09-2003
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Hola.

La verdad es que el evento BeforePost no es el más adecuado. Puesto que como el nombre indica, se dispara antes del Post. Por eso sería mucho más adecuado el evento AfterPost, que se dispara después del Post.

Al hacer un ApplyUpdates antes del Post, lo que me parece curioso es que llegue a insertar algún registro (el registro aún no ha sido insertado en el ClientDataSet). En todo caso me parece normal que tenga un comportamiento extraño.

NOTA : El evento BeforePost, es para hacer validaciones antes de insertar el registro. Y en el caso de que no se cumplan todas las condiciones, poder cancelar la inserción / modificación.

Yo te aconsejaría que puesieras el ApplyUpdates a continuación del Post (no hay ninguna necesidad de que se dispare en un evento), aunque si quieres utilizar un evento, prueba con el AfterPost.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #5  
Antiguo 12-09-2003
mosorio mosorio is offline
Miembro
 
Registrado: may 2003
Posts: 159
Poder: 22
mosorio Va por buen camino
Hola Marc!

He cometido un error, mejor dicho un orror, me he equivocado al escibir, el evento es el Afterpost, creo que tengo pegado el beforepost y por eso lo he escrito, de todas formas si creo que tienes razón en cuanto al hacer al applyupdate después del post sin necesidad del evento.

Gracias nuevmante.
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


La franja horaria es GMT +2. Ahora son las 06:43:28.


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