FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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 |
#2
|
||||
|
||||
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...
|
#3
|
||||
|
||||
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:
__________________
Mi BLOG - ¡Joder, leanse la guia de estilo! Las Palabras son enanas, los ejemplos gigantes. |
#4
|
|||
|
|||
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 |
#5
|
||||
|
||||
he aqui el problema:
Saludos.
__________________
Mi BLOG - ¡Joder, leanse la guia de estilo! Las Palabras son enanas, los ejemplos gigantes. |
#6
|
||||
|
||||
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: Saludos |
#7
|
||||
|
||||
Hola
Me ganaron por 37 segundos Saludos |
#8
|
|||
|
|||
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 |
#9
|
|||
|
|||
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 ?? |
#10
|
||||
|
||||
Hola
El error lo marca ahí por que es el principio del programa, osea que en el oncreate del from tienes el problema. Aparte: Para mi no lo puedes enseñar y liberar enseguida. Saludos |
#11
|
|||
|
|||
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 |
#12
|
||||
|
||||
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 |
#13
|
||||
|
||||
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 |
#14
|
|||
|
|||
Hola...
Si indicas cual es el error que obtienes, te podremos ayudar mejor... Saludos... |
#15
|
|||
|
|||
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; |
#16
|
|||
|
|||
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. |
#17
|
||||
|
||||
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. |
#18
|
|||
|
|||
Y por favor, usa las etiquetas [ delphi ] [ /delphi ] (sin los espacios en blanco) cuando publiques código en Delphi...
Saludos... |
#19
|
|||
|
|||
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 :/ |
|
|
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 |
|