PDA

Ver la Versión Completa : Error en ejecución pero no con Debugger


gluglu
12-12-2005, 16:32:50
Hola Amigos !

Por qué puede ser que un código me de error en ejecución algunas veces sí, otras no, y si lo ejecuto por el Debugger, nunca.

El código es:DM1.IBQuery9CATEGORYNO.OnValidate := nil;
DM1.IBQuery9SUBCATEGORYNO.OnValidate := nil;
DM1.IBQuery9DATEARRIVAL.OnValidate := nil;
DM1.IBQuery9DATEDEPARTURE.OnValidate := nil;
DM1.IBQuery9SURNAME1.OnGetText := nil;
DM1.IBQuery9STATUS.OnGetText := nil;
For I := 1 to DM1.IBQueryCheck.FieldByName('SUM').Value - DM1.IBQueryCheck2.FieldByName('COUNT').Value do begin
DM1.IBQuery9.Append;
DM1.IBQuery9BOOKINGNO.Value := DM1.IBQuery1BOOKINGNO.Value;
DM1.IBQuery9DATEARRIVAL.Value := DM1.IBQuery1DATEARRIVAL.Value;
DM1.IBQuery9DATEDEPARTURE.Value := DM1.IBQuery1DATEDEPARTURE.Value;
DM1.IBQuery9STATUS.Value := DM1.IBQuery1STATUS.Value;
DM1.IBQuery9CATEGORYNO.Value := DM1.IBQueryCheck.FieldByName('CATEGORYNO').Value;
DM1.IBQuery9SUBCATEGORYNO.Value := DM1.IBQueryCheck.FieldByName('SUBCATEGORYNO').Value;
DM1.IBQuery9PAXQUANTITY.Value := DM1.IBQueryCheck.FieldByName('PAXNO').Value;
DM1.IBQuery9SURNAME1.Value := DM1.IBQueryCheck.FieldByName('CODEN').Value;
end;
DM1.IBQuery9CATEGORYNO.OnValidate := DM1.IBQuery2CATEGORYNOValidate;
DM1.IBQuery9SUBCATEGORYNO.OnValidate := DM1.IBQuery9SUBCATEGORYNOValidate;
DM1.IBQuery9DATEARRIVAL.OnValidate := DM1.IBQuery9DATEARRIVALValidate;
DM1.IBQuery9DATEDEPARTURE.OnValidate := DM1.IBQuery9DATEDEPARTUREValidate;
DM1.IBQuery9SURNAME1.OnGetText := DM1.IBQuery9SURNAME1GetText;
DM1.IBQUery9STATUS.OnGetText := DM1.IBQuery9STATUSGetText;La línea que en concreto dá el error esDM1.IBQuery9SURNAME1.Value := DM1.IBQueryCheck.FieldByName('CODEN').Value;He creado todos los componentes afectados de nuevo, he comprobado todos los campos, propiedades y eventos.

Cuando entro por primera vez al programa, y lo ejecuto, normalmente no suele dar error. Si lo ejecuto la siguiente vez, probable que sí, a las pocas veces de reiterar el bucle; y si ejecuto el código (el bucle detallado) varias veces, entonces el error aparece prácticamente cada vez, inmediatamente al principio de la ejecución del bucle. Indico que el IBQueryCheck se borra y se añade texto nuevo cada vez en tiempo de ejecución, y después "prepare" y "open" por lo que por ese lado no debe ser.

El error es de nuevo "Object Reference not set to an instance of an object". Sólo en ese campo concreto me da el error.

He probado de todo. Si le asigno al campo sólo una cadena de caracteres normal, no falla nunca.

Otra curiosidad: Si añado una línea anterior tal comoLabel1.Caption := DM1.IBQueryCheck.FieldByName('CODEN').Valueesta línea también me la ejecuta SIEMPRE de manera correcta. Pero en cambio en la línea inmediatamente siguiente si intento pasarle el mismo valor al campo susodicho, pues de nuevo error.

Inlcuse he probado conDM1.IBQuery9SURNAME1.Value := Label1.Caption;dejando incluida la línea adicional arriba indicada. Pues de nuevo me dá el error en esta línea.

Y lo más raro, por lo que no se trata entiendo yo de un error de programación, es que con el Debug paso a paso NUNCA, pero NUNCA, me sale el error.

Gracias una vez más por vuestra ayuda y un saludo a todos.