Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Extraño comportamiento de Firebird 2.0 (https://www.clubdelphi.com/foros/showthread.php?t=38968)

TrUnkS 06-01-2007 04:48:42

Extraño comportamiento de Firebird 2.0
 
Hola amigos. Quisiera comunicar un comportamiento extraño de este servidor, o no se si es por Delphi u otra cosa pero hace poco tiempo que estoy con Firebird y de pronto cambio su comportamiento. Uso Delphi 7 Second Edition Professional, componentes IBExpress (IBDataSet), IBExpert Personal Edition y Firebird 2.0.
Resulta que tengo solo 2 formas de que se provoque una excepción en el servidor, una por clave duplicada y otra cuando hay campos nulos en tablas Maestro/Detalle. Resulta que cuando trato de insertar un registro en el detalle y me faltan datos para el maestro en una misma transacción, en el momento de hacer Post en el maestro deberia producirse una excepcion por campo nulo ya que faltan datos de la tabla maestra que me impiden ingresar un nuevo registro en el detalle. En el evento OnPostError de la tabla maestra capturo la excepción para que cuando sea clave duplicada me aparezca un mensaje, y cuando falten campos por ingresar me aparezca otro mensaje. Es decir:
Código Delphi [-]
procedure TFDM.IBDataSetPostError(DataSet: TDataSet; E: EDatabaseError;
  var Action: TDataAction);
begin
case EIBError(E).IBErrorCode of
  ISC_UNIQUE_KEY_VIOLATION:
   begin
    ShowMessage('EL CLIENTE YA EXISTE EN LA BASE DE DATOS');
    Action:=daAbort;
   end
  else
   begin
    ShowMessage('DEBE LLENAR TODOS LOS CAMPOS');
    Action:=daAbort;
   end;
 end;
end;

Incluyo en el DataModulo las librerias IB, IBErrorCodes.

El problema es que anteriormente me funcionaba de maravilla, me aparecian los mensajes y el cursor se quedaba en el campo que faltaba por rellenar, pero ahora aparece este mensaje:
' Cannot focus a disabled or invisible windows' y el sistema se bloquea. Ahora al parecer ya no captura la excepción o no se que pasa. Pero cuando inicio de nuevo la aplicacion y lleno todos los campos de la maestra todo esta normal y me deja insertar registros en el detalle. Agradecería algún comentario si alguien me pudiera ayudar gracias.

ArdiIIa 06-01-2007 07:10:47

Cannot focus a disabled or invisible windows Este error, no tiene nada que ver con Firebird, sino con alguna ventana o control que está desactivado o no visible, y por lo tanto no puede obtener el foco...

Cita:

El problema es que anteriormente me funcionaba de maravilla
Debemos entender que antes utilizabas una versión anterior de Firebird... ??

Yo estoy también con la versión DOS, y hasta el momento lo único que he encontrado han sido gratas sorpresas, tales como las extensiones que incorpora....

Saludos

TrUnkS 06-01-2007 07:40:24

Tengo mis dudas
 
Hola. Gracias por tu comentario Ardilla. He buscado en el foro todo referente a este mensaje y no he solucionado mi problema, pero lo que si he comprobado es que ni siquiera llega al evento OnPostError del DataSet. Lo cierto es que SI estuve utilizando la version 1.5.3 de Firebird, pero bien tu haz dicho que no tiene nada que ver con firebird pero cuando estuve trabajando con él no tenia problemas, ahora con firebird 2.0 tengo ese problema. Lo que me parece extraño es que cree una nueva aplicacion con Firebird 2.0 a modo de prueba y funciona todo bien com quiero y con la misma configuración, ya no se que hacer.

ArdiIIa 06-01-2007 16:41:23

Bueno pues a la vista de lo que comentas, también hemos de suponer que no se a producido ningún cambio en tu programa, sino que unicamente cambiaste de versión de Firebird

TrUnkS 06-01-2007 23:05:57

Ya lo solucioné
 
Ya he solucionado el problema formateando mi pc e instalando todo de nuevo solo con Firebird 2.0. Además reconstruí la base de datos por completo con IBExpert. Creo que el problema se radica en el cambio de versiones de Firebird 1.5.3 a Firebird 2.0, pues al registrar y conectar de nuevo la base de datos con 2.0 no me dio confianza. En realidad no se exactamente que es lo que pasó pero una vez reconstruido todo me volvio a la normalidad y sin cambiar una sola linea de codigo. Gracias por la intención Ardilla :p


La franja horaria es GMT +2. Ahora son las 01:17:50.

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