Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-05-2011
JerS JerS is offline
Miembro
 
Registrado: may 2005
Ubicación: Venezuela
Posts: 254
Poder: 19
JerS Va por buen camino
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
Código Delphi [-]
                    ZQuery2.Close;
                    ZQuery2.SQL.Clear;
                    ZQuery2.SQL.Add('Select antes from DetallePersonal Inner Join TipoPersonal on cedula='+quotedstr(cedula)+'and cod_tipo=codigo and antes<>"00:00:00"');
                    ZQuery2.Open;
                      IF Not ZQuery2.Eof Then
                        cadenaantes:=ZQuery2.FieldbyName('Antes').AsString
                      Else
                        cadenaantes:='00:00';

esperando su ayuda gracias, esto me tiene loco
__________________
La vida es un simple pero complejo If

J=rS
Responder Con Cita
  #2  
Antiguo 04-05-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Usa parametros y veras por que te manda el error.
Asi, de pasada me imagino que codigo no lo entiende la BD.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #3  
Antiguo 04-05-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.009
Poder: 20
oscarac Va por buen camino
trata de colocar tus instrucciones en varias lineas para pdoer entenderla mejor

y en que instruccion te aparece el error?
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #4  
Antiguo 04-05-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Código Delphi [-]
  ZQuery2.Close;
  ZQuery2.SQL.Clear;
  ZQuery2.SQL.Add('Select antes from DetallePersonal Inner Join TipoPersonal on cedula = :Num0 and cod_tipo = :Num1 and antes <> :Num2 ');
  ZQuery2.Params[0].Value:= quotedstr(cedula);
  ZQuery2.Params[1].Value:= codigo; // que es ????
  ZQuery2.Params[2].Value:= "00:00:00";
  ZQuery2.Open;
  IF Not ZQuery2.Eof Then
  cadenaantes:= ZQuery2.FieldbyName('Antes').AsString
  Else
  cadenaantes:='00:00';
Saludos
PD: Tienes dos tablas, que campo es de que tabla???????
__________________
Siempre Novato
Responder Con Cita
  #5  
Antiguo 04-05-2011
JerS JerS is offline
Miembro
 
Registrado: may 2005
Ubicación: Venezuela
Posts: 254
Poder: 19
JerS Va por buen camino
Cita:
Empezado por Caral Ver Mensaje
Hola
Código Delphi [-]
  ZQuery2.Close;
  ZQuery2.SQL.Clear;
  ZQuery2.SQL.Add('Select antes from DetallePersonal Inner Join TipoPersonal on cedula = :Num0 and cod_tipo = :Num1 and antes <> :Num2 ');
  ZQuery2.Params[0].Value:= quotedstr(cedula);
  ZQuery2.Params[1].Value:= codigo; // que es ????
  ZQuery2.Params[2].Value:= "00:00:00";
  ZQuery2.Open;
  IF Not ZQuery2.Eof Then
  cadenaantes:= ZQuery2.FieldbyName('Antes').AsString
  Else
  cadenaantes:='00:00';
Saludos
PD: Tienes dos tablas, que campo es de que tabla???????
Todos los campos son de la tabla TipoPersonal y el campo código es la relación entra la tabla de TipoPersonal con DetallePersonal
__________________
La vida es un simple pero complejo If

J=rS
Responder Con Cita
  #6  
Antiguo 04-05-2011
JerS JerS is offline
Miembro
 
Registrado: may 2005
Ubicación: Venezuela
Posts: 254
Poder: 19
JerS Va por buen camino
Utilizando Parámetros que diferencia tiene??
__________________
La vida es un simple pero complejo If

J=rS
Responder Con Cita
  #7  
Antiguo 04-05-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
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
__________________
Siempre Novato
Responder Con Cita
  #8  
Antiguo 04-05-2011
rrf rrf is offline
Miembro
 
Registrado: ago 2003
Ubicación: S/C Tenerife, España
Posts: 454
Poder: 21
rrf Va por buen camino
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
Responder Con Cita
  #9  
Antiguo 04-05-2011
JerS JerS is offline
Miembro
 
Registrado: may 2005
Ubicación: Venezuela
Posts: 254
Poder: 19
JerS Va por buen camino
Cita:
Empezado por rrf Ver Mensaje
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
Muchas Gracias rrf pero estoy utilizando Zeos 6.6.6, Mysql 4.1 y Delphi 7
__________________
La vida es un simple pero complejo If

J=rS
Responder Con Cita
  #10  
Antiguo 14-05-2011
JerS JerS is offline
Miembro
 
Registrado: may 2005
Ubicación: Venezuela
Posts: 254
Poder: 19
JerS Va por buen camino
Nadie ha pasado por un problema como este??? tambien me esta pasando en la siguiente parte del codigo

Código Delphi [-]
      Try
        Hora.Close;
        Hora.SQL.Clear;
        Hora.SQL.Add('Select (time_format(Current_time,"%H:%i"))as Hora, (time_format(Current_time,"%h:%i %p"))as HoraAMPM ');
        Hora.Open;
        label25.Caption:=Hora.Fields[0].AsString;
        label8.Caption:=Hora.Fields[1].AsString;
        Application.ProcessMessages;
      Except on e:exception do
        Escribir('*****Exepcion al Actualizar la Hora: '+label25.Caption+' en el Timer Hora');
      End;

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
__________________
La vida es un simple pero complejo If

J=rS
Responder Con Cita
  #11  
Antiguo 19-06-2011
waly2k1 waly2k1 is offline
Miembro
 
Registrado: dic 2006
Ubicación: El país de las maravillas(Argentina)
Posts: 251
Poder: 18
waly2k1 Va por buen camino
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

Responder Con Cita
  #12  
Antiguo 13-01-2012
JerS JerS is offline
Miembro
 
Registrado: may 2005
Ubicación: Venezuela
Posts: 254
Poder: 19
JerS Va por buen camino
Buenas después de 7 años sigo presentando el mismo problema en mi aplicación , pero esta vez en esta fragmento del codigo

Código Delphi [-]
    ZQuery3.Close;
    ZQuery3.SQL.Clear;
    ZQuery3.SQL.Add('Select acceso from permisos p,detallepermisos d where cedula=:cedula and p.codigo=d.codigo and fecha=current_date');
    ZQuery3.ParamByName('cedula').AsString:=cedula;
    escribir('Consulta para Obtener el Valor de Permiso');
    ZQuery3.Open;
      If Not ZQuery3.EOF Then
        Permiso:=ZQuery3.Fields[0].AsInteger
      Else
        Permiso:=0;

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
__________________
La vida es un simple pero complejo If

J=rS
Responder Con Cita
  #13  
Antiguo 14-01-2012
waly2k1 waly2k1 is offline
Miembro
 
Registrado: dic 2006
Ubicación: El país de las maravillas(Argentina)
Posts: 251
Poder: 18
waly2k1 Va por buen camino
Cita:
Empezado por JerS Ver Mensaje
Buenas después de 7 años sigo presentando el mismo problema en mi aplicación , pero esta vez en esta fragmento del codigo

Código Delphi [-] ZQuery3.Close; ZQuery3.SQL.Clear; ZQuery3.SQL.Add('Select acceso from permisos p,detallepermisos d where cedula=:cedula and p.codigo=d.codigo and fecha=current_date'); ZQuery3.ParamByName('cedula').AsString:=cedula; escribir('Consulta para Obtener el Valor de Permiso'); ZQuery3.Open; If Not ZQuery3.EOF Then Permiso:=ZQuery3.Fields[0].AsInteger Else Permiso:=0;


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

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 ' +
            'INNER JOIN detallepermisos D ON ( P.codigo=D.codigo ) '     +
            'WHERE P.cedula=:cedula AND D.fecha=current_date';
(Ojo asumo que los campos de cada tabla que escribes corresponden a cierto alias)
    
    ZQuery3.Active := false;
    ZQuery3.SQL.Clear;
    ZQuery3.SQL.Add( sSQL );
    ZQuery3.ParamByName( 'cedula' ).Value := cedula;
    escribir('Consulta para Obtener el Valor de Permiso');
    ZQuery3.Active := true;
    
    Permiso:=0;
    if not ZQuery3.Eof then Permiso := ZQuery3.FieldByName( 'acceso' ).AsInteger;
Tampoco se que tipo de campos son, por eso nose si haces bien las conversiones o no, Quizas conviertes
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!
Responder Con Cita
  #14  
Antiguo 16-01-2012
JerS JerS is offline
Miembro
 
Registrado: may 2005
Ubicación: Venezuela
Posts: 254
Poder: 19
JerS Va por buen camino
Saludos desde Venezuela amigo waly2k1, muchas gracias por tu aporte. ya cambie en mi código la linea de
Código Delphi [-]
ZQuery3.Close;
por
Código Delphi [-]
ZQuery3.Activate:=False;
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 vida es un simple pero complejo If

J=rS
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Access Violation Alejo15x API de Windows 2 09-11-2010 03:36:04
Access Violation con DLL emeceuy Varios 8 17-08-2007 22:57:55
access violation chona Varios 2 31-10-2006 02:36:04
Access Violation ..... MADV01 Varios 2 24-03-2004 17:01:33
Access violation Giasl Varios 6 07-05-2003 13:35:51


La franja horaria es GMT +2. Ahora son las 18:55:56.


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