Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Cannot perform this operation on a ON A CLOSED DATASET (https://www.clubdelphi.com/foros/showthread.php?t=52296)

Yun-i 21-01-2008 20:09:21

Cita:

Empezado por Caral (Mensaje 258659)
Hola
Me lo explican?, por que esto:

Código Delphi [-]
try
ADODSFact.Append;
ADODSFact.Post;
ADODSFact.Edit
except



Saludos


Yo tampoco se que es el codigo no lo hice yo pero seria bueno que alguien pudirea explikarnos :)
saludos

Lepe 22-01-2008 00:09:08

Quizás en el evento OnNewRecord se asigne el número de factura, como sabemos ese número debe ser correlativo sin huecos en la numeración. Si el programa está en red, dos usuarios pueden pulsar el botón de "Insertar nuevo registro" y tener el mismo número de factura.

En Paradox y otras hierbas, se suele agregar un registro en blanco (que provoca el evento OnNewRecord entre otros) y acto seguido se graba para que nadie más en la red pueda tomar ese número de factura.

(Obviamente no tiene que ser por motivo de factura, pero si es la filosofía).

Después se deja en Edición para que el usuario no note nada raro y pueda seguir introduciendo los demás datos del registro.

Saludos

Lepe 22-01-2008 13:50:34

En cuanto al error original del hilo:
Código Delphi [-]
 procedure TFFacturacionDirecta.actBusqEvenExecute(Sender: TObject);
begin
Application.CreateForm(TFRBusquedaEventos,FRBusquedaEventos);
if FRBusquedaEventos.ShowModal = mrOk then
   begin
      if not ADODSFact.Active then
         ADODSFact.Open;
      ADODSFact.Edit;
      ADODSFactNUM_EVENTO.Value:=FRBusquedaEventos.intEvento;

// No haces el Post de la modificación ???


   end;
FRBusquedaEventos.Free;
end;

El error lo dice claramente: No se puede realizar la operación en un Dataset Cerrado. Está claro que al ejecutar la acción "actBusqEvenExecute" en alguna ocasión, el adodsFact no está abierto. Deberías encontrar esa situación para manejarla mejor. Yo solo he parcheado el asunto, pero sabe dios que registro editará, lo más normal es que edite el que no necesitas.

Saludos

Yun-i 22-01-2008 18:35:19

lepe como siempre
 
Bueno miren, gracias a los comentarios de lepe y carol me cayo el 20(entendi) ya quedo bueno esa parte, lo que hice para evitarme problemas es abrir en el oncreate de la forma todos los TADODataset y ya no marca el error, pero como bien dijeron ustedes el errror era pk estaba cerrado el dataset.


Código Delphi [-]
procedure TFFacturacionDirecta.FormCreate(Sender: TObject);
begin
New(Permiso);
Permiso:=FDMPrincipal.leerPermiso('FFACTURACIONMESA');
ADODSDetaFact.Open;//Esto fue lo que puese
ADODSFact.Open;
ADODSServ.Open;
ADODSClie.Open;
ADODSRfc.Open;
ADODSEven.Open;//hasta aki por que son los dataset que se referencian en la forma
end;

sale pues asi quedo el codigo las otras funciones las estoy analizando esas ya estaban

bueno esa parte ya esta pero pues hay muchas cosas que no se del sistema son 140 formas aprox. ya con reportes y pantallas chicas de consulta puero pues si hay algunas con mayor complejidad bueno almenos para mi asi es ya que el sistema manda correos de forma automatica al realizar algun proceso, crea, modifica abre, adjunta archivos de ofice exporta a excel algunos reportes de quik report etc etc pero bueno conforme me vaya saliendo dudas ire habriendo hilos creo que es mas recomendable no??

bueno ante todo muchas gracias por su apoyo :)
Saluods


La franja horaria es GMT +2. Ahora son las 20:02:37.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi