![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Como corregir un error de access violation en delphi...
saludos a todos.
tengo una duda y no se que hacer, resulta que estoy llevando un proyecto en el cual tengo un relacion maestro-detalle en interbase, y llevo dos detalles, ahora que estoy realizando pruebas me da un error de access violation at address 0048AF8B y no me graba los registros en los detalles ni siquiera. Anteriormente en otra forma me dio un error parecido, y tenia que buscar en Searh/find error y se iba directo al error, y era de esperar que llamaba a otra tabla, me equivoque. bueno, me sucedio lo mismo con un error de access violation y ahora sabiendo que hacer corri el programa pero me da una pantalla con el titulo CPU y divididos con varias pantallas por decirlo asi en donde tiene numero y letras de memoria algo por el estilo, reinie la maquina y sigue en lo mismo. este error me da cuando escribo en la dbgrid algun numero que esta referenciado a otra tabla (ID.) y me muevo de registro para actualizarlo. Uso los Ibdataset y estan llenos las sentencias sql. La verdad no se que hacer por que no me habia pasado algo asi, que puedo hacer estoy desesperado les agradesco, gracias. |
#2
|
||||
|
||||
Ese error es típico de estar refiriéndose a un componente que aún no se ha creado, o que ya se ha destruido. Tendrás que ir mirando paso a paso hasta dar con él, por ejemplo puedes desactivar momentaneamente los controles o componentes sospechosos del error y puede ser que en momento dado logres que te funcione al tener cierto control desactivado.
También puedes probar con una ejecución paso a paso, así sabras en que línea se produce el error. Si lo sospechoso son líneas de código coméntalas momentaneamente para desactivarlas, puedes utilizar //ShowMessage('Desactivada'); o si son varias líneas las colocas entre llaves {desactivado} Bueno a ver si hay suerte, ya nos dirás donde estaba el gazapo. Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
![]() |
#3
|
||||
|
||||
Resp
Como te dicen anteriormente es un acceso a una zona d emoria que no existe.
Osea estas accediendo a un objeto que no existe. Como vreificar. En cada lugar donde hagaas llamad ala componente Y si no tienes ni la mas puta idea de quien te da el error activa el las excepciones. En el menu Tools/debug option/Languaje exception y chequea stop on delphi exception. Y luego cuando te de la violacion de memoria vas al menu seach/find error y escribes la direccion d ememoria que te dice el mensaje de vilolacion y esta se ubicara en la line ecaxta dond eocurrio la violacion. Y si esto no te sirve entonces tendras que correr copn F7 paso a paso para ver donde se viola la memoria. Pero si esto no te sirve ve a la iglesia y pidele un milagro a algunos de los antos.
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa. |
#4
|
|||
|
|||
ok, lo que hice es quitar de nuevo los dos BDgrid que son mis detalles y ponerlos de nuevo y como en una celda doy F3 o tengo seleccionada la opcion cbsEllipsis para abrir la forma y traer el ID cambie la forma de pasar el valor al detalle y ya no me salio el error,
ahora comienzo a capturar en la dbgrid los datos y me arroja por decirlo el resultado que es precio, descripcion y no me graba los cambios, luego me cambio a la otra dbgrid y comienzo a capturar los datos me arroja los datos de precio y elemento_descripcion y tampoco me los graba en la base de datos. cuando se capturan en la dbgrid me muevo al siguiente registro para que acepte los cambios. Por que no me acepta los cambios, es evidente que desde el Ibadmin3 donde creo mis tablas y todo eso.. si me graba los registro y los cambio que haga, es comun que pase esto en programa ? Que puedo hacer ya grite de desesperacion. gracias. |
#5
|
||||
|
||||
Resp
Perdon el problema es una exception o es un grind o es un problema de insert o de edit o de un commit o de que es por fin.
Haber si te entiendo.
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa. |
#6
|
||||
|
||||
El problema es que no sabe cuál es el problema, está un poco perdido y no sabe qué hacer.
Me temo que tendrás que ir despacio, poco a poco, simplificando las cosas, comentando y así ir descartando cosas hasta encontrar el causante. Tómate una buena jarra de tila y coge la lupa de detective... ![]()
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#7
|
|||
|
|||
saludos
Bueno, Primero me salio un error de access violation, ya encontre por que me dada ese error, ahora cuando yo agrego registro en la DBgrid me los agrega y en ese momento los puedo modificar, pero si me salgo de la forma no me actualiza las tablas que tengo como detalle. tengo las sentencias llenas de instrucciones sql para agregar, modificar borrar y selecionar y refrescar. como los eventos para actualizar en las tablas, onnewrecord, onafterpost, afterdelete, aftercancel y uso los Ibdataset. El problema es que no me guarda los registros, solo en la tabla maestra que tengo !. Pareciera que no le he escrito codigo a los eventos. Puedo agregar los registros directamente desde el Ibadmin que uso. |
#8
|
||||
|
||||
SAludos
Deber de hacer commit en la transaccion para poder guardar los cambios Si usas table y tienes la propiedad CacheUpdate habilitada debe hacer tambien un ApplyUpdate
__________________
Van Troi De León (Not) Guía, Code vB:=Delphi-SQL, ¿Cómo? Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto! |
#9
|
|||
|
|||
saludos a todos,
Uso el componente IBdataset con interbase 6.0, como no me registra los cambios en las tabla de la base de datos, quite los componentes ibdataset y los volvi a enlazar y llenar las propiedades sql-insert, update, refresh, select. y eventos, Listo. Ahora agrege un regsitro en mi detalle directamente desde el ibadmin, pero me doy cuenta que en el programa puedo ver esos registros y al actualizarlos me los acepta temporalmente pero al moverme al siguiente registro desaparecen. Código PHP:
gracias, agradeceria una opinion ya que lo hice dos veces pero no encuentro por que no graba los cambio. Gracias club. |
#10
|
||||
|
||||
No estarás mirando otra base de datos?
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
![]() |
|
|
![]() |
|