Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
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
  #2  
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
  #3  
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
  #4  
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



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 02:36:04
Access Violation con DLL emeceuy Varios 8 17-08-2007 21:57:55
access violation chona Varios 2 31-10-2006 01:36:04
Access Violation ..... MADV01 Varios 2 24-03-2004 16:01:33
Access violation Giasl Varios 6 07-05-2003 12:35:51


La franja horaria es GMT +2. Ahora son las 16:11:52.


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