Ayuda con Access Violation
Buenas, amigos me aparece la excepción "Access Violation at address 004022E6 in module proyecto.exe" . pero lo curioso es que no es siempre que sucede
esperando su ayuda gracias, esto me tiene loco |
Hola
Usa parametros y veras por que te manda el error. Asi, de pasada me imagino que codigo no lo entiende la BD. Saludos |
trata de colocar tus instrucciones en varias lineas para pdoer entenderla mejor
y en que instruccion te aparece el error? |
Hola
Saludos PD: Tienes dos tablas, que campo es de que tabla??????? |
Cita:
|
Utilizando Parámetros que diferencia tiene??
|
Hola
A la hora de depurar, de ver que o cuales problemas se tiene el programa hace un recorrido, con parametros se puede identificar el problema con exactitud. Otra cosa, los datos se envian en su correcta forma, sea integer, string, etc, etc. Saludos |
Hola.
No tengo muy claro si esto te puede ayudar; pero te comento que hace poco tuve un problema bastante parecido, al menos en lo referente a "Access Violation" (no recuerdo el número que le acompañaba). Fue usando Firebird 2.0.5 . Casi me vuelvo loco porque no daba con la posible causa del problema. Finalmente, opté por cambiar a Firebird 2.1.3 (incluido el archivo fbclient.dll) y desaparecieron los "fantasmas" del "Access Violation". Supongo que era un error de las Zeos con esa versión de Firebird. Saludos |
Cita:
|
Nadie ha pasado por un problema como este??? tambien me esta pasando en la siguiente parte del codigo
Arrojandome esta Excepcion: *****Exepcion al Actualizar la Hora: 10:33 en el Timer Hora este codigo esta en un TTimer el cual tiene un intervalo de 10000 |
Posible Solucion
Si no siempre te da el error es porque a veces tienes abierta la consulta
con lo cual con Hora.Close la cierras y cuando no está abierta con Hora.Close te va a generar el problema. No es un problema de parametros sino te sería mas claro el error y no algo que haga referencia a una posición de memoria o un objeto inexistente. Además usando parametros con ParamByName queda mucho mas prolijo el codigo y no debes estar usando apóstrofes ni convirtiendo cadenas a nros o viceversa, simplemente mandas el valor, te evita ademas problemas de configuración regional en fechas y numeros. Y sobre todo codigo mas legible para que puedan analizarlo y echarte una mano. No es web, no mezquines caracteres ni lineas hehe. Saludos |
Buenas después de 7 años sigo presentando el mismo problema en mi aplicación , pero esta vez en esta fragmento del codigo
estoy usando una base de datos en mysql 4.11 , Delphi 7 el campo acceso es de tipo integer .. Use los consejos que me dan en este hilo como usar parámetros en mi consulta, pero sigue el mismo problema. Mi aplicación puede pasar 3 días seguidos 24 horas al día por este fragmento de código sin generar ningún problema pero derrepente me arroja la Siguiente Excepción: *****Excepcion en el Cuerpo Principal del Sistema Access violation at address 004022E6 in module 'Program1.exe'. Write of address 0794B3D8 me aconsejan no Utilizar el ZQuery3.Close; porque puede generar algún problema si la consulta no esta abierta, pero siempre lo he utilizado así en todas mis aplicaciones y de verdad a parte de este fragmento de código me ha funcionado bien. Espero sus aportes muchas gracias |
Cita:
Primero que nada prueba con esto ZQuery3.Active := false; // en lugar de esto: ZQuery3.Close; Segundo: la Consulta SQL por qué mejor no la pones en una variable e identificas bien los campos de cada tabla y la unes con inner join? Ejemplo: Código:
sSQL := 'SELECT acceso FROM permisos P ' + un valor y lo hace bien, pero recibes un valor que no puede convertir. Como por ej. si recibes un valor 99000 ya no puedes ponerlo como un entero corto (smallint). Bueno, espero te sirva de algo mis consejos o el pequeño código. Pero no debe estar muy lejos el error Deberías debuggear cuando salta el error y ver las variables que valores poseen. Saludos y exitos! |
Saludos desde Venezuela amigo waly2k1, muchas gracias por tu aporte. ya cambie en mi código la linea de
por y asigne el string de la consulta a una variable para probar. con respecto a los tipos de datos los campos códigos son de tipo Integer , cedula es un Varchar(20) y fecha es Date. ahora solo queda someter a prueba el codigo y cualquier cosa te aviso.. muchas gracias de nuevo |
La franja horaria es GMT +2. Ahora son las 12:41:58. |
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