Ver Mensaje Individual
  #1  
Antiguo 17-06-2003
Giniromero Giniromero is offline
Miembro
 
Registrado: may 2003
Ubicación: Madrid
Posts: 296
Reputación: 22
Giniromero Va por buen camino
para no dejar duplicar registros en InterBase

Hola a todos,

Con interbase7 y delphi 6.

Tengo una ventana en mi aplicación que me sirve para agregar registros a una tabla. Esta tabla de interbase, tiene dos campos que son NO NULL y que juntos, son mi manera de direfenciar los registros de esa tabla.

Tengo un TDBNavigator para insertar, editar y gestionar en general esta tabla tbMaterial1.

El caso es que necesito poner una condición para que, si intenta alguien insertar un registro que ya esté, me muestre un mensaje de error, y no me deje guardar, me cancele la inserción.

El código que tengo es el siguiente:

procedure TFrmChangeMaterial.DBNavigator1BeforeAction(Sender: TObject;
Button: TNavigateBtn);
begin

If (FrmMainCenta.TbMaterial1.State = dsEdit) Or (FrmMainCenta.TbMaterial1.State = dsInsert) Then Begin
//si ya hay un material en la tabla material con los datos que estamos insertando nuevo
IF FrmMainCenta.TbMaterial.Locate ('ISBN;Copia', VarArrayOf([FrmMainCenta.TbMaterial1ISBN.AsVariant, FrmMainCenta.TbMaterial1Copia.AsVariant]), [locaseInsensitive]) THEN BEGIN
//If (FrmMainCenta.TbMaterial1.State = dsEdit) Or (FrmMainCenta.TbMaterial1.State = dsInsert) Then Begin
//mostramos mensaje aviso
showmessage ('¡¡CUIDADO!! El ISBN y COPIA insertados están asignados a otro material de la biblioteca. Su Operación no se puede llevar a cabo');
FrmMainCenta.IBTransCenta.Rollback;

END;
End;


end;


Donde TbMaterial1 y Tbmaterial funcionan como tablas independientes.

Me funciona, aparentemente todo bien hasta que muestra el mensaje, pero si después del mensaje pongo :
FrmMainCenta.IBTransCenta.Rollback; me dice que la tabla tbMaterial1 no esta en "edit o insert mode"

Si pongo
DBNavigator1.BtnClick(nbCancel); directamente no hace nada, me da el mismo error que cuando no le pongo código para controlar esto.



¿puede ayudarme alguien?

gracias

Virginia
__________________
Sonrie al mundo, y el mundo te sonreirá :)

Última edición por Giniromero fecha: 17-06-2003 a las 12:43:00.
Responder Con Cita