PDA

Ver la Versión Completa : Por que no funciona EOLEException


vicac
23-02-2007, 20:40:14
Hola. Soy novata en el manejo Delphi, estoy desarollando un a aplicacion (Delphi7) con una base de datos en MySql que debe ser accedida por varios clientes. Dentro de la aplicacion genero un Vale con numero de folio unico y lo manejo de la siguiente manera:

Cuando abre la forma muestra un numero de folio obtenido de "select max(folio) from vale". Obviamente si se conectan dos clientes al mismo tiempo les dara el mismo numero de folio. Es por esto que al guarda se generara una exception la cual quiero tomar e indicarle que recalcule el numero de folio.

Mi problema es que ese trozo de codigo, donde toma la excepcion, no me funciona, estoy utilizando myodbc el error es de llave duplicada de la class EOLEException.


Try
tablas.ADOQuery1.SQL.Clear;
tablas.ADOQuery1.SQL.Text:=cad;
tablas.ADOQuery1.ExecSQL;
application.MessageBox('Registro Agregado','Información',mb_ok+mb_iconinformation);

except
on E:EOLEException do begin
// Levantamos la excepción
MessageDlg('Se asignara un nuevo folio:' +E.Message, mtError, [mbOK], 0);
self.CalcularFolio;
end;

cad es la intruccion de insertar en mysql, y el error se produce en la linea de "tablas.ADOQuery1.ExecSQL;". y no tome el codigo de la exception.


¿Que estoy haciendo mal?

Gracias por su ayuda!

poliburro
23-02-2007, 20:54:43
Por que no pruebas con la clase

Try
tablas.ADOQuery1.SQL.Clear;
tablas.ADOQuery1.SQL.Text:=cad;
tablas.ADOQuery1.ExecSQL;
application.MessageBox('Registro Agregado','Información',mb_ok+mb_iconinformation);

except
on E:Exception do begin
// Levantamos la excepción
MessageDlg('Se asignara un nuevo folio:' +E.Message, mtError, [mbOK], 0);
self.CalcularFolio;
end;

vicac
24-02-2007, 19:39:42
Gracias por tu respuesta.

He intentado lo que me indicaste y tampoco me funciono. ¿Alguna otra idea?