Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   State dsbrowse en un evento calcfields (https://www.clubdelphi.com/foros/showthread.php?t=1818)

fcobanda 28-06-2003 19:48:01

State dsbrowse en un evento calcfields
 
les agradeceria mucho si alguien puede ayudarme, sucede que hace tiempo desarrolle una aplicacion con delphi 5 enterprise, pero al hacer modificaciones al mismo en algunos modulos en el evento "OnCalcFields" entra con el state = dwBrowse y me marca el error "(DataSet) not in Mode edit o insert" donde DataSet es el Tquery que estoy usando....no cambia el state a DsCalcFields y por esta razon me genera el error....el codigo que estoy usando es el siguiente y como podran ver se esta comprobando al entrar como entra.

SHOWMESSAGE('EN CALCFIELDS');
SHOWMESSAGE(VER_STATE(DmDatos3.PFactura));
SHOWMESSAGE('ORDEN ' + DmDatos3.PFacturaNO_ORDEN.AsString);

DmDatos3.PFacturasTelefonos.Value :=
DmDatos3.PFacturalTelefono.Value + ' ,' +
DmDatos3.PFacturasTelTrab.Value + ' ,' +
Dmdatos3.pfacturalcelular.value;

como podran darse cuenta lo unico que intento es concatenar los telefonos que pudiera tener un cliente en un solo campo calculado que es "sTelefonos"

Tambien me esta pasando en otro modulo que en el evento OnNewRecord entra con state dsBrowse

les agradeceria si alguien me puede ayudar, por que ya le busque y le dedique bastante tiempo a algo tan sencillo que ya he hecho muchas veces y no encuentro el error.

andres1569 28-06-2003 20:40:29

Hola:

Ten en cuenta que Delphi sólo dispara el evento OnCalcFields tras asignar el estado dsCalcFields, otra cosa que puede suceder es que por equivocación compartas el manejador del OnCalcFields con otro evento diferente, de ahí que entre a ese código con dsBrowse. Lo mismo con el evento OnNewRecord. Otra razón es que se acceda desde otra tabla al mismo manejador de evento.

Revísalo a ver si es eso, que parece lo más probable.

SoftMakerMex 02-07-2003 21:58:35

Quihubo...

Por lo regular el error:

"(DataSet) not in Mode edit o insert"

es el resultado de querer guardar datos en uno o varios campos de una tabla que no pusimos en modo de edición o a la cual no le agregamos un nuevo registro...

te sugiero probar lo siguiente en el código que se debe ejecutar en el evento OnCalcFields, antes de guardar los datos, indica a la tabla que se ponga en modo de edición...

Tabla.Edit;

y al finalizar de guardar los datos salva los cambios...

tabla.post;


Ejemplo:

DmDatos3.Edit;
DmDatos3.PFacturasTelefonos.Value :=
DmDatos3.PFacturalTelefono.Value + ' ,' +
DmDatos3.PFacturasTelTrab.Value + ' ,' +
Dmdatos3.pfacturalcelular.value;
DmDatos3.Post;

Espero que te sea de utilidad esta sugerencia...

hasta pronto...

andres1569 02-07-2003 22:14:05

Hola:

No se debe llamar a Edit ni a Post dentro de un evento OnCalcFields, ya que esas mismas instrucciones, Edit y Post, disparan ese mismo evento, si AutoCalcFields es TRUE, por lo que entraríamos en un bucle recursivo.

El evento OnCalcFields es disparado por Delphi tras poner el estado del Dataset a dsCalcFields, que permite asignar valores a campos calculados.

Sigo pensando que se está compartiendo el manejador del OnCalcFields con otro evento que por supuesto no se lanza bajo un estado que permita asignar valores, o bien está siendo compartido por otro evento OnCalcFields de otra tabla, por ello al dispararse se estaría tratando de asignar valores no editables en ese momento.

Revisa también que no estés asignando valores a campos NO calculados.


La franja horaria es GMT +2. Ahora son las 18:08:52.

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