FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
EAccessViolation
Hola a todos,
Tengo la siguiente dificultad al correr el siguiente procedimiento la aplicación me muestra un error de 'Access Violation at address 005B91C9 in module 'XXXXX.exe'. Read of address 00002F0'. Código:
procedure TFrmProductoEmpaque.DBEcicloKeyPress(Sender: TObject; var Key: Char); begin if key=#13 then begin Key := #0; cicloactual:=DBEciclo.Text; if cicloinicial<>cicloactual then begin swciclo:='1'; if swciclo='1' then begin Dmsip.Tblproductos['fechaciclop']:=now; Dmsip.TblProductos['usuariociclop'] := userw; end; swciclo:='0'; end; perform(wm_nextdlgctl,0,0); DmSip.Tblproductos.edit; DBEFechaCiclo.text:=datetimetostr(now); DBEUsuarioCiclo.Text:=userw; DmSip.TblProductos.post; end; end; Espero haberme hecho entender y sobre todo que me puedan ayudar. Gracias
__________________
Alejandrina |
#2
|
||||
|
||||
Cita:
Has intentado correr el programa con F7 o F8 para saber exactamente en qué linea te provoca el error ?... Creo que tiene que ver con la función perform que usas... Última edición por Fenareth fecha: 24-06-2008 a las 20:48:24. |
#3
|
||||
|
||||
Coincido con fenareth la asignación a swciclo no tiene sentido, pero eso no produce el error como tampoco lo hace el perform.
El único error que puedo suponer es que la tabla no esté en dsEdit cuando haces: Reproduje el código usando un ttable con el mínimo requisito para que funcione la procedure. No me dio el error 'Access violation' pero sólo uso lo que envias. Revisa los DataSource de los controles DataAware... también controla como llamas al Form y como lo cierras. Espero que te ayude en algo, suerte Última edición por ecfisa fecha: 03-07-2008 a las 15:20:50. |
#4
|
||||
|
||||
EAccessViolation
Despues de un largo tiempo....
Eh vuelto a retomar este error y aun continua efectivamente Fenareth tiene razón me sobra el swciclo, tambien sigo el consejo de ecfisa pero aún así el error continua. Corriendo el programa con F8 el error me sale en la siguiente lienea: Código Delphi [-] if (copy(FrmProductos.DBECodigo.Text,1,2)='43') or (copy(FrmProductos.DBECodigo.Text,1,2)='35') or (copy(FrmProductos.DBECodigo.Text,1,2)='44') or (copy(FrmProductos.DBECodigo.Text,1,2)='45') or (copy(FrmProductos.DBECodigo.Text,1,2)='42')then El procedimiento completo es el siguiente, espero me puedan dar algo de luces ya que no se que hacer. Gracias Código Delphi [-]procedure TDMsip.TblproductosBeforePost(DataSet: TDataSet); begin if (TblUsuarios['codigo_area']='002') or (userw = 'SYSDBA') or (userw = '001') then else //se vuelve a validar para que produccion pueda modificar el campo ciclo if (TblUsuarios['codigo_area']='001') or (userw = '001') then else begin ShowMessage('Usuario no autorizado para Insertar o Modificar'); abort; end; if TblProductos['referencia']='' then begin ShowMessage('Se requiere la referencia del producto'); abort; end; if DmSip1.TblCriticaProducto.locate('referencia',TblProductos['referencia'],[]) then begin DmSip1.TblCriticaProducto.edit; DmSip1.TblCriticaProducto['productos'] := 'X'; DmSip1.TblCriticaProducto.post; end; if DmSip1.TblCriticaProductoDecorado.locate('referencia',TblProductos['referencia'],[]) then begin DmSip1.TblCriticaProductoDecorado.edit; DmSip1.TblCriticaProductoDecorado['productos'] := 'X'; DmSip1.TblCriticaProductoDecorado.post; end; if TblProductos['plano'] = null then TblProductos['plano'] := ''; if TblProductos['plano_interno'] = null then TblProductos['plano_interno'] := ''; if (copy(FrmProductos.DBECodigo.Text,1,2)='43') or (copy(FrmProductos.DBECodigo.Text,1,2)='35') or (copy(FrmProductos.DBECodigo.Text,1,2)='44') or (copy(FrmProductos.DBECodigo.Text,1,2)='45') or (copy(FrmProductos.DBECodigo.Text,1,2)='42')then else if (TblProductos['plano']='') and (TblProductos['plano_interno']='') then begin ShowMessage('Debe digitar al menos un plano'); abort; end; //end; if TblProductos['plano']<> '' then begin if TblProductos['plano_interno']='' then else begin ShowMessage('Solo se debe digitar un plano'); abort; end; end; if ingresarp then TblProductos['listaprecios']:='N'; //OJO CAMBIO PARA PODER GRABAR FECHA MIRAR QUE PASA //OJO MIRAR QUE PASA PARA CAMBIA EL ESTADO EN REFERENCIA SALE ERROR if cambiapeso then begin TblColorProducto.locate('referencia',TblProductos['referencia'],[]); TblColorProducto.edit; TblColorProducto['fechamodificacion']:= now; TblColorProducto['usuario']:= userw; TblColorProducto.post; end; cambiapeso := false; end;
__________________
Alejandrina |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
EAccessViolation | elorza | Varios | 2 | 26-12-2007 11:07:32 |
Error EAccessViolation | chele | Firebird e Interbase | 0 | 09-11-2004 16:51:21 |
EAccessViolation | Ester | Varios | 16 | 10-09-2004 16:33:20 |
Error EAccessViolation.... | JorgeBec | Conexión con bases de datos | 5 | 18-02-2004 22:34:11 |
|