Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   fallo select con zquery (https://www.clubdelphi.com/foros/showthread.php?t=54935)

rivercar 03-04-2008 12:35:20

fallo select con zquery
 
Hola,

tengo un problema con una consulta, uso la librería Zeos para conectarme a una BD postgres y el componente ZQuery para realizar consultas.
El problema viene cuando consulto tablas con datos de tipo TMemo como por ejemplo pg_description me da un error y no se que hacer ya.
No se si puede ser por las librerías dinámicas o porque?

A ver si alguien puede echarme una mano.
Gracias

Lepe 03-04-2008 14:28:51

Te recomiendo leas la guía de estilo, así sabrás por qué te sugiero su lectura.

Saludos

ContraVeneno 03-04-2008 17:03:58

cuando digas que error te marca, la gente empezará a ayudarte.

rivercar 03-04-2008 17:28:58

Buenas,

el fallo que me da es en tiempo de ejecución, y es el siguiente:

"Access violation at address 00000000. Read of address 00000000."

lo cual no creo que sirva de mucho. He puesto un ZSQLMonitor para ver si la consulta que se envia al servidor es la correcta y si lo es. Esta es la sentencia que le está enviando al servidor de BD cuando produjo el error:

2008-04-03 17:23:45 cat: Execute, proto: postgresql-8, msg: SELECT * FROM pg_description WHERE objoid = 32859 AND objsubid = 0

y si la ejecuto desde el phpPgAdmin de postgres si me da el resultado esperado.

A ver si os sirve de algo.

AzidRain 03-04-2008 21:05:12

el error de access violation por lo regular es un objeto que estás tratando de usar pero que aún no has instaciado:

Código Delphi [-]
var MiObj: TZQuery;

Begin
   MiObj.Open;   // Esto produce el error que mencionas porque MiObj no ha sido instanciado
end;

  MiObj := TZQuery.Create(nil);

  MiObj.Open; //Ahora si, no se genera el error porque ya está instanciado.

Revisa los objetos que utilizas, seguramente es después de abrir la tabla.

ContraVeneno 04-04-2008 00:15:02

¿instaciado?

¿no querrás decir "creado"?

rivercar 04-04-2008 13:00:00

Hola AzidRain,

ya tenia creado el ZQuery con el método Create como tú dices, creo que ese no es el motivo porque sino fallaria al hacer un select de cualquier otra tabla también y eso no pasa.

Si yo lanzo el select que puse antes:

SELECT * FROM pg_description WHERE objoid = 32859 AND objsubid = 0

si en lugar de select * hago un select de todos los campos de la tabla pg_description quitando el campo description(que es de tipo TMemo y contiene el comentario asociado al objeto de la BD con oid = 32859) entonces no falla. De todas formas, gracias por tu respuesta.

saludos

AzidRain 04-04-2008 17:12:13

No conozco posgress pero no se si el campo sea efectivamente TMemo. Al menos en MySQL que es lo que conozco bien, los cambos para esos casos son BLOB. No tienes enlazado el resultado del query con un TDBMemoEdit? Probablemente definiste los campos manualmente en el query via click derecho-insertar campos.

rivercar 17-04-2008 16:09:41

Hola,

Ya solucioné el error, al final eran las librerías dll, aunque bajándome la última versión de libpq.dll y sustituyéndola por la que yo usaba tampoco funcionaba, me decía que no encontraba ninguna librería.

Tuve que usar pgeDriver que te instala las librerías automáticamente y las añade al path de Delphi y ya funciona bien.

Lo comento por si a alguien le pasa lo mismo.

Saludos


La franja horaria es GMT +2. Ahora son las 23:01: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