Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-01-2008
Yun-i Yun-i is offline
Miembro
 
Registrado: ene 2008
Posts: 125
Poder: 17
Yun-i Va por buen camino
Cannot perform this operation on a ON A CLOSED DATASET

Perdon por el titulo si querer aplaste enter.

El caso es el siguiente miren tengo una aplicacion que me manda este el error de can not perform this operation on a closed dataset, yo pensaba que era un error del codigo, pero en esta liga http://www.clubdelphi.com/foros/showthread.php?t=19379 vi que no que es de la base de datos asi que me fije cual la tabla ala que apunta cuando me manda el error y fui ala base de datos, me di ceunta que solo hay un registro pero no se si beda borrarlo o que debo hacer?? si kieren ver algo de el codigo solo diganme que parte, la aplicacion no la codifique pero la debocorregir yo el manejador de base de datos es ms sql server gracias espero susrespuestas

Última edición por Yun-i fecha: 16-01-2008 a las 18:15:39. Razón: no lo complete
Responder Con Cita
  #2  
Antiguo 16-01-2008
Avatar de kuan-yiu
[kuan-yiu] kuan-yiu is offline
Miembro Premium
 
Registrado: jun 2006
Ubicación: Galicia. España.
Posts: 1.017
Poder: 19
kuan-yiu Va camino a la fama
Tienes que explicar cuando te da el error, si es posible el trozo de código en el que falla indicando la línea, la base de datos que usas, los componentes con los que te conectas a ella...
Responder Con Cita
  #3  
Antiguo 16-01-2008
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
Hola, concuerdo con Kuan-yiu, especifica, especifica, porque estoy seguro que debe ser que el componente que usas para conectarte a la tabla no esta Active o Open:

Cita:
ADOTable1.Active := True;

ADOTable1.Open;
Saludos.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #4  
Antiguo 16-01-2008
Yun-i Yun-i is offline
Miembro
 
Registrado: ene 2008
Posts: 125
Poder: 17
Yun-i Va por buen camino
Delphi 6, base de datos MS SQL Server, la conecion es ADO y el componentes es un TADOdataset que ase referencia a una tabla

Application.CreateForm(TFRBusquedaCliente,FRBusquedaCliente);
if FRBusquedaCliente.ShowModal = mrOk then
begin
ADODSFact.Edit;
ADODSFactID_CLIENTE.Value:=FRBusquedaCliente.intCliente;
end;
FRBusquedaCliente.Free;
end;

La aplicacion no la codifique yo por eso no entiendo muy bien el codigo si es otra parte la que necesito poner solo decime cual y la pongo es un programa que abarca muchas cosas y no las se espero que estedes si gracias
Responder Con Cita
  #5  
Antiguo 16-01-2008
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
he aqui el problema:

Código Delphi [-]
Application.CreateForm(TFRBusquedaCliente,FRBusquedaCliente);
if FRBusquedaCliente.ShowModal = mrOk then
   begin
      ADODSFact.Open; --> esto es lo que faltaba
      ADODSFact.Edit;
      ADODSFactID_CLIENTE.Value:=FRBusquedaCliente.intCliente;
   end;
FRBusquedaCliente.Free;
end;

Saludos.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #6  
Antiguo 16-01-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Ya te lo dijeron pero para insistir.
No se puede editar una tabla, query si esta cerrada, donde se abre en el codigo que pusiste, no lo veo.
Tal vez asi:
Código Delphi [-]
Application.CreateForm(TFRBusquedaCliente,FRBusquedaCliente);
if FRBusquedaCliente.ShowModal = mrOk then
begin
ADODSFact.Open;// esta seria la diferencia
ADODSFact.Edit;
ADODSFactID_CLIENTE.Value:=FRBusquedaCliente.intCliente;
end;
FRBusquedaCliente.Free;
end;
Saludos
Responder Con Cita
  #7  
Antiguo 16-01-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Me ganaron por 37 segundos
Saludos
Responder Con Cita
  #8  
Antiguo 16-01-2008
Yun-i Yun-i is offline
Miembro
 
Registrado: ene 2008
Posts: 125
Poder: 17
Yun-i Va por buen camino
Talking Graciassssss!!!!!!

Esa era la solucionnn muchas gracias soy un novato pero ustedes si que saben gracias a los dosss jejeje me prestan su cerebro unos meses jajajaj
graciasssss
Responder Con Cita
  #9  
Antiguo 16-01-2008
Yun-i Yun-i is offline
Miembro
 
Registrado: ene 2008
Posts: 125
Poder: 17
Yun-i Va por buen camino
Unhappy

Ese Problema ya esta solucionado pero ahora estoy en otro identico marca el mismo error solo que en un dbgirddetafact


procedure TFPrincipal.actFactDireExecute(Sender: TObject);
begin
Application.CreateForm(TFFacturacionDirecta,FFacturacionDirecta);
FFacturacionDirecta.ShowModal;
FFacturacionDirecta.Free;// aqui me marca el error
end;



que sera ??
Responder Con Cita
  #10  
Antiguo 16-01-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
El error lo marca ahí por que es el principio del programa, osea que en el oncreate del from tienes el problema.
Aparte:
Código Delphi [-]
procedure TFPrincipal.actFactDireExecute(Sender: TObject);
begin
Application.CreateForm(TFFacturacionDirecta,FFacturacionDirecta);
try
FFacturacionDirecta.ShowModal;
finally
FFacturacionDirecta.Free;// aqui me marca el error
end;
end;
Para mi no lo puedes enseñar y liberar enseguida.
Saludos
Responder Con Cita
  #11  
Antiguo 16-01-2008
Yun-i Yun-i is offline
Miembro
 
Registrado: ene 2008
Posts: 125
Poder: 17
Yun-i Va por buen camino
Código Delphi [-]
procedure TFPrincipal.actFactDireExecute(Sender: TObject);
begin
Application.CreateForm(TFFacturacionDirecta,FFacturacionDirecta);
try
FFacturacionDirecta.ShowModal;//ahora el error es aqui
finally
FFacturacionDirecta.Free;
end;
end;


el error ahora lo marca ahi mm weno hgracias por tu apoyoo gracioas
Responder Con Cita
  #12  
Antiguo 16-01-2008
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 25
eduarcol Va por buen camino
trata de mostrar el evento onshow, y on create del formulario, a su ves escribe el error que te da, si en verdad es el mismo es porq te falto abrir la tabla
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita
  #13  
Antiguo 16-01-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Coloca el codigo del from FFacturacionDirecta completo.
Si dices que el error es el mismo solo que en dbgirddetafact, pues ahi esta el error, ahi es donde hay que buscar.
Tambien puedes presionar f8 o f7 creo.
Saludos
Responder Con Cita
  #14  
Antiguo 16-01-2008
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 23
maeyanes Va por buen camino
Hola...

Si indicas cual es el error que obtienes, te podremos ayudar mejor...



Saludos...
Responder Con Cita
  #15  
Antiguo 16-01-2008
Yun-i Yun-i is offline
Miembro
 
Registrado: ene 2008
Posts: 125
Poder: 17
Yun-i Va por buen camino
Unhappy

Esta prte del codigo es la que ejecuta cuando le doy click al grid me di cuanta que tampoco tenia el ADODSFact.open se lo puese pero esta vez el error sigue siendo el mismo


procedure TFFacturacionDirecta.actBusqEvenExecute(Sender: TObject);
begin
Application.CreateForm(TFRBusquedaEventos,FRBusquedaEventos);
if FRBusquedaEventos.ShowModal = mrOk then
begin
ADODSFact.Edit;
ADODSFactNUM_EVENTO.Value:=FRBusquedaEventos.intEvento;
end;
FRBusquedaEventos.Free;
end;
Responder Con Cita
  #16  
Antiguo 16-01-2008
Yun-i Yun-i is offline
Miembro
 
Registrado: ene 2008
Posts: 125
Poder: 17
Yun-i Va por buen camino
todo el codigo

procedure TFFacturacionDirecta.FormCreate(Sender: TObject);
begin
New(Permiso);
Permiso:=FDMPrincipal.leerPermiso('FFACTURACIONMESA');
ADODSServ.Open;
ADODSClie.Open;
ADODSRfc.Open;
ADODSEven.Open;
end;
procedure TFFacturacionDirecta.actNuevoExecute(Sender: TObject);
begin
ADODSFact.Open;
ADODSDetaFact.Open;
ADODSFact.Last;
if ADODSFactNUM_FACTURA.IsNull then
intFactura:=1
else
intFactura:=ADODSFactNUM_FACTURA.Value+1;
try
ADODSFact.Append;
ADODSFact.Post;
ADODSFact.Edit
except
FDMPrincipal.capturarExcepcion;
end;
end;
procedure TFFacturacionDirecta.ADODSFactBeforeInsert(DataSet: TDataSet);
begin
if Permiso^.Insertar=False then
Raise Exception.Create('No Posee Privilegios Para Ingresar Registros En Este Módulo');
end;
procedure TFFacturacionDirecta.ADODSFactNewRecord(DataSet: TDataSet);
begin
intIDFactura:=FDMPrincipal.obtenerMaxID('ID_FACTURA','SIE_FACTURACIONMESA');
ADODSFactID_FACTURA.Value:=intIDFactura;
ADODSFactNUM_FACTURA.Value:=intFactura;
ADODSFactID_CLIENTE.Value:=0;
ADODSFactSUBTOTAL.Value:=0;
ADODSFactIVA.Value:=0;
ADODSFactTOTAL.Value:=0;
ADODSFactNUM_EVENTO.Value:=0;
ADODSFactFECHA_FACTURACION.Value:=Date;
ADODSFactTASA_IMPUESTO.Value:=currIVA;
end;
procedure TFFacturacionDirecta.ADODSFactID_CLIENTEValidate(Sender: TField);
begin
if not ADODSClie.Locate('ID_CLIENTE',ADODSFactID_CLIENTE.Value,[]) then
Raise Exception.Create('El cliente especificado no existe. Seleccione otro');
end;
procedure TFFacturacionDirecta.actBusqClieExecute(Sender: TObject);
begin
Application.CreateForm(TFRBusquedaCliente,FRBusquedaCliente);
if FRBusquedaCliente.ShowModal = mrOk then
begin
ADODSFact.Edit;
ADODSFactID_CLIENTE.Value:=FRBusquedaCliente.intCliente;
end;
FRBusquedaCliente.Free;
end;
procedure TFFacturacionDirecta.dbEdtClieKeyUp(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
if Key=VK_F2 then
actBusqClie.Execute;
end;
procedure TFFacturacionDirecta.ADODSClieAfterScroll(DataSet: TDataSet);
begin
intCliente:=ADODSClieID_CLIENTE.Value;
ADODSRFC.Close;
ADODSRFC.Parameters.ParamByName('IDCLIE1').Value:=intCliente;
ADODSRFC.Parameters.ParamByName('IDCLIE2').Value:=intCliente;
ADODSRFC.Open;
DBCBoxRFC.KeyValue:=ADODSRFCRFC.Value;
end;
procedure TFFacturacionDirecta.actBusqEvenExecute(Sender: TObject);
begin
Application.CreateForm(TFRBusquedaEventos,FRBusquedaEventos);
if FRBusquedaEventos.ShowModal = mrOk then
begin
ADODSFact.Edit;
ADODSFactNUM_EVENTO.Value:=FRBusquedaEventos.intEvento;
end;
FRBusquedaEventos.Free;
end;
procedure TFFacturacionDirecta.ADODSFactNUM_EVENTOValidate(Sender: TField);
begin
if ADODSFactNUM_EVENTO.Value<>0 then
begin
if not ADODSEven.Locate('ID_EVENTO',ADODSFactNUM_EVENTO.Value,[]) then
Raise Exception.Create('El evento especificado no existe. Seleccione otro')
else
ADODSFactEVENTO.Value:=ADODSEvenCONCEPTO.Value;
end
else
ADODSFactEVENTO.Value:=EVENTO_DEFAULT;
end;
procedure TFFacturacionDirecta.dbEdtEvenKeyUp(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
if Key=VK_F2 then
actBusqEven.Execute;
end;
procedure TFFacturacionDirecta.ADODSDetaFactNewRecord(DataSet: TDataSet);
begin
ADODSDetaFactID_EMPRESA.Value:=intEmpresa;
ADODSDetaFactID_USUARIO.Value:=intUsuario;
ADODSDetaFactID_FACTURA.Value:=intIDFactura;
ADODSDetaFactNUM_FACTURA.Value:=0;
ADODSDetaFactPER_DESCTO.Value:=0;
ADODSDetaFactDESCUENTO.Value:=0;
ADODSDetaFactFECHA_REGISTRO.Value:=Date;
ADODSDetaFactCANTIDAD.Value:=1;
end;
procedure TFFacturacionDirecta.actBusqServExecute(Sender: TObject);
begin
Application.CreateForm(TFRBusquedaServicios,FRBusquedaServicios);
if FRBusquedaServicios.ShowModal = mrOk then
begin
ADODSDetaFact.Edit;
ADODSDetaFactCLAVE_SERVICIO.Value:=FRBusquedaServicios.cveServicio;
end;
FRBusquedaServicios.Free;
end;
procedure TFFacturacionDirecta.ADODSDetaFactCLAVE_SERVICIOValidate(
Sender: TField);
begin
if not ADODSServ.Locate('CLAVE',ADODSDetaFactCLAVE_SERVICIO.Value,[]) then
Raise Exception.Create('El servicio especificado no existe. Seleccione otro')
else
begin
ADODSDetaFactPRECIO_VENTA.Value:=ADODSServPRECIO_VENTA.Value;
ADODSDetaFactID_SERVICIO.Value:=ADODSServID_SERVICIO.Value;
end;
end;

procedure TFFacturacionDirecta.dbGridDetaFactDblClick(Sender: TObject);
begin
if dbGridDetaFact.SelectedField.FieldName='CLAVE_SERVICIO' then
actBusqServ.Execute;
end;
procedure TFFacturacionDirecta.dbGridDetaFactKeyUp(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
if KEY=VK_F2 then
begin
if dbGridDetaFact.SelectedField.FieldName='CLAVE_SERVICIO' then
actBusqServ.Execute;
end;
end;
procedure TFFacturacionDirecta.ADODSDetaFactCANTIDADValidate(
Sender: TField);
begin
if ADODSDetaFactCANTIDAD.Value<1 then
Raise Exception.Create('La cantidad del servicio debe ser mayor o igual a 1 (uno)');
end;
procedure TFFacturacionDirecta.ADODSDetaFactCANTIDAD_UNIDADValidate(
Sender: TField);
begin
if ADODSDetaFactCANTIDAD_UNIDAD.Value<1 then
Raise Exception.Create('El número de unidades debe ser mayor o igual a 1 (uno)');
end;
procedure TFFacturacionDirecta.dbGridDetaFactKeyPress(Sender: TObject;
var Key: Char);
begin
if dbGridDetaFact.SelectedField.FieldName='PRECIO_VENTA' then
begin
if bolModiPrecServicioMesa then
begin
if ADODSDetaFactMOD.Value=False then
key:=#0;
end
else
Key:=#0;
end;
end;
procedure TFFacturacionDirecta.ADODSDetaFactCalcFields(DataSet: TDataSet);
var
Sub:Currency;
begin
Sub:=ADODSDetaFactPRECIO_VENTA.Value*ADODSDetaFactCANTIDAD.Value*ADODSDetaFactCANTIDAD_UNIDAD.Value;
ADODSDetaFactIMPORTEC.Value:=Sub;
end;
procedure TFFacturacionDirecta.ADODSDetaFactBeforePost(DataSet: TDataSet);
begin
if ADODSDetaFactID_SERVICIO.IsNull then
begin
Raise Exception.Create('Especifíque la Clave del Producto');
Exit;
end;
ADODSDetaFactIMPORTE.Value:=ADODSDetaFactIMPORTEC.AsCurrency;
end;
end.
Responder Con Cita
  #17  
Antiguo 16-01-2008
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
Código Delphi [-]
 procedure TFFacturacionDirecta.actBusqEvenExecute(Sender: TObject);
begin
Application.CreateForm(TFRBusquedaEventos,FRBusquedaEventos);
if FRBusquedaEventos.ShowModal = mrOk then
   begin
      ADODSFact.Open;
      ADODSFact.Edit;
      ADODSFactNUM_EVENTO.Value:=FRBusquedaEventos.intEvento;
   end;
FRBusquedaEventos.Free;
end;

Yun-i, publica el error que te sale no el codigo, asi te ayudamos mejor.

saludos.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #18  
Antiguo 16-01-2008
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 23
maeyanes Va por buen camino
Y por favor, usa las etiquetas [ delphi ] [ /delphi ] (sin los espacios en blanco) cuando publiques código en Delphi...


Saludos...
Responder Con Cita
  #19  
Antiguo 16-01-2008
Yun-i Yun-i is offline
Miembro
 
Registrado: ene 2008
Posts: 125
Poder: 17
Yun-i Va por buen camino
Red face

Ok perdon no saba eso gracas soy nuevo nunka habia pegado codigo pero gracias

encuanto al error sigue marcando lo mismo aun agregando lo que me dicen :/
Responder Con Cita
  #20  
Antiguo 16-01-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Me lo explican?, por que esto:
Código Delphi [-]
try
ADODSFact.Append;
ADODSFact.Post;
ADODSFact.Edit
except
Nunca lo he visto.
Saludos
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Copiar el contenido de un DataSet a otro DataSet Javi2 Varios 82 22-11-2022 09:26:16
funcion Perform chorrito Lazarus, FreePascal, Kylix, etc. 2 25-07-2007 21:54:29
Firebird - Delphi (Cannot perform operation...) papulo Conexión con bases de datos 5 26-10-2005 18:43:22
Closed dataset srobles Conexión con bases de datos 3 14-03-2005 21:10:24
FB+IBX error: IBSQL closed apicito Conexión con bases de datos 0 29-05-2003 12:39:57


La franja horaria es GMT +2. Ahora son las 07:06:13.


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
Copyright 1996-2007 Club Delphi