Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-02-2010
JerS JerS is offline
Miembro
 
Registrado: may 2005
Ubicación: Venezuela
Posts: 254
Poder: 19
JerS Va por buen camino
Mejor Forma de Utilizar TZQuery

Buenas amigos como estan, en esta ocasion los molesto para que me ayuden a saber cual es la mejor forma de utilizar un TZQuery, ya que estoy haciendo esto:

Código Delphi [-]
ZQuery1.Close;  
ZQuery1.SQL.Clear;  
ZQuery1.SQL.Add('Select acceso from permisos p,detallepermisos d where cedula='+quotedstr(cedula)+' and p.codigo=d.codigo and fecha='+quotedstr(FormatDateTime('yyyy/mm/dd',fechaServerL)));
ZQuery1.Open;     
If Not ZQuery1.EOF then

y me arroja la excetion Acces Violation as address 0040241C .....

lo raro es que no es todo el tiempo , yo puedo pasar por estas lineas de codigo 10 veces seguidas consecutivas y no pasa nada pero en cierto momento me arroja la exception, si me pudieran ayudar de verdad les estaria agradecido...
__________________
La vida es un simple pero complejo If

J=rS

Última edición por JerS fecha: 26-02-2010 a las 06:13:59.
Responder Con Cita
  #2  
Antiguo 26-02-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Arrow Algunas interrogantes

* Estas trabajando con MySQL?
* Las variables cedula y fechaServerL ¿qué contienen antes de la consulta o cómo le asignas datos?
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7

Última edición por rgstuamigo fecha: 26-02-2010 a las 19:15:34.
Responder Con Cita
  #3  
Antiguo 26-02-2010
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
¿Podrías poner el mensaje de error real y completo? (presiona Ctrl+C cuando aparezca la ventana de excepción) Y de paso, algo más de tu código.

Gracias.
Responder Con Cita
  #4  
Antiguo 26-02-2010
JerS JerS is offline
Miembro
 
Registrado: may 2005
Ubicación: Venezuela
Posts: 254
Poder: 19
JerS Va por buen camino
Cita:
Empezado por rgstuamigo Ver Mensaje
* Estas trabajando con MySQL?
* Las variables cedula y fechaServerL ¿qué contienen antes de la consulta o cómo le asignas datos?
Saludos...
amigo las variables cedula es de tipo string algo como "V123456" , la variable fechaServerL es de timo Date y trae una fecha en el formato yyyy/mm/dd

y si efectivamente estoy utilizando Mysql version 4.1
__________________
La vida es un simple pero complejo If

J=rS
Responder Con Cita
  #5  
Antiguo 26-02-2010
JerS JerS is offline
Miembro
 
Registrado: may 2005
Ubicación: Venezuela
Posts: 254
Poder: 19
JerS Va por buen camino
Cita:
Empezado por Al González Ver Mensaje
¿Podrías poner el mensaje de error real y completo? (presiona Ctrl+C cuando aparezca la ventana de excepción) Y de paso, algo más de tu código.

Gracias.

amigo al presionar Ctrl+C que tipo de mensaje debe aparecer?? algo mas especifico?? de verdad no sabia esta opcion
__________________
La vida es un simple pero complejo If

J=rS
Responder Con Cita
  #6  
Antiguo 26-02-2010
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
Te quedaría mejor y menos problemático asi
Código Delphi [-]
With ZQuery1 Do
Begin
   Close;  
  SQL.Clear;  
  SQL.Add('Select acceso from permisos  join detallepermisos on (detallepermisos.codigo=permisos.codigo) where cedula=:cedula and fecha=:fecha');
  ParamByName('cedula').AsString := cedula;
  ParamByName('fecha').AsDateTime := fechaServerL;
  Open;     

  If RecordCount>0 Then 
  Begin
    // Hacemos lo que proceda si se encontraron registros
  end;

Como ves utilizamos parámetros para no tener que estar haciendo conversiones ni nada, Zeos las hace por nosotros. Al meter el parámetro en el SQL del TZQuery ( en este caso :fecha y :cedula), el componente automáticamente crea los parámetros y podemos acceder a ellos usando ParamByName(nombre_parametro) y según el tipo de datos que vayamos a meter usar AsInteger, AsString, AsDateTime, etc. Por último mediante Recordcount podemo saber cuantos registros arroja el query, obviamente si es 0 es que no hubo nada.

Pruébalo y nos comentas si te funciona. Otra cosa que puede suceder es que en alguna parte del código liberes el ZQuery1 y cuando lo vuelves a tratar de utilizar ya no existe y por eso te manda el error.
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita
  #7  
Antiguo 27-02-2010
JerS JerS is offline
Miembro
 
Registrado: may 2005
Ubicación: Venezuela
Posts: 254
Poder: 19
JerS Va por buen camino
Thumbs up

Cita:
Empezado por AzidRain Ver Mensaje
Te quedaría mejor y menos problemático asi
Código Delphi [-]With ZQuery1 Do Begin Close; SQL.Clear; SQL.Add('Select acceso from permisos join detallepermisos on (detallepermisos.codigo=permisos.codigo) where cedula=:cedula and fecha=:fecha'); ParamByName('cedula').AsString := cedula; ParamByName('fecha').AsDateTime := fechaServerL; Open; If RecordCount>0 Then Begin // Hacemos lo que proceda si se encontraron registros end;


Como ves utilizamos parámetros para no tener que estar haciendo conversiones ni nada, Zeos las hace por nosotros. Al meter el parámetro en el SQL del TZQuery ( en este caso :fecha y :cedula), el componente automáticamente crea los parámetros y podemos acceder a ellos usando ParamByName(nombre_parametro) y según el tipo de datos que vayamos a meter usar AsInteger, AsString, AsDateTime, etc. Por último mediante Recordcount podemo saber cuantos registros arroja el query, obviamente si es 0 es que no hubo nada.

Pruébalo y nos comentas si te funciona. Otra cosa que puede suceder es que en alguna parte del código liberes el ZQuery1 y cuando lo vuelves a tratar de utilizar ya no existe y por eso te manda el error.
Gracias mi pana, voy hacer las pruebas y te estoy avisando!!
__________________
La vida es un simple pero complejo If

J=rS
Responder Con Cita
  #8  
Antiguo 27-02-2010
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Cita:
Empezado por JerS Ver Mensaje
amigo al presionar Ctrl+C que tipo de mensaje debe aparecer?? algo mas especifico?? de verdad no sabia esta opcion
Cuando te aparezca una ventana de error, más concretamente un mensaje de excepción, podrás presionar la combinación de teclas Ctrl+C para copiar esa información al portapapeles, y luego podrás pegarla aquí con la combinación de teclas Ctrl+V.

De esa manera nos mostrarás el mensaje de error íntegro.
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
Cual es la mejor forma de conectar con la BD GerTorresM Conexión con bases de datos 1 11-01-2010 16:51:47
mejor forma de desarrollar un software JAI_ME Varios 9 04-09-2008 00:28:41
La mejor forma de utilizar las horas en SQLServer Alexander Conexión con bases de datos 2 08-11-2006 15:07:17
cual es la mejor forma ? martita Varios 14 07-07-2005 19:35:55
Que forma es mejor ??? chele Conexión con bases de datos 1 19-03-2004 15:36:13


La franja horaria es GMT +2. Ahora son las 00:37:55.


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