PDA

Ver la Versión Completa : Posible Bug en componentes SQLQuery ?


Critter
16-07-2008, 20:03:34
hola amigos:

Estoy intentando desarrollar una aplicación mediante lázarus y utilizo firebird. utilizando el componente SQLQuery del paquete sqllaz que viene con lázarus y estoy teniendo problemas con los campos que llevan las letras características del español como la 'Ñ'. Utilizo el charset win1252 y desarrollando con delphi y FIBplus nunca he tenido este problema.

He hecho la prueba eliminando los caracteres mencionados de los registros y entonces si me devuelve el registro correcto, en caso contrario me devuelve una cadena vacía.


También he probado con los componentes ZEOS y el resultado es el mismo, sin embargo en IBExpert aparece bien todo por lo que sospecho que es un problema de lazarus, quizás el componente padre.

En caso de tratarse de un bug, si alguien tuviera a bien de subirlo a la lista de lázarus, puesto que mi inglés es nulo.

Gracias.

donald shimoda
17-07-2008, 03:05:20
hola amigos:
También he probado con los componentes ZEOS y el resultado es el mismo, sin embargo en IBExpert aparece bien todo por lo que sospecho que es un problema de lazarus, quizás el componente padre.


Por lo que contas juraría que en realidad el problema esta en la codificación del servidor Firebird de Linux. Podes probar conectarte desde lazarus al servidor windows que comentas que funciona bien?

Saludos.

Critter
17-07-2008, 09:06:37
sí, he conectado desde lazarus y desde IBExpert poniendo la misma orden SQL en ambos y la misma base de datos con la misma codificación y el problema persiste.

¿ alguna idea ? ...

lo raro es que no muestra caracteres extraños ni cambiados, simplemente devuelve una cadena vacia donde hay datos, y la devuelve según el criterio de la consulta.

Ejem: sí tengo un campo que debe devolver "PEDRO MUÑOZ", lo devuelve en blanco, sin embargo si lo cambio por "PEDRO MUNOZ", si me lo muestra.

Gracias.

donald shimoda
17-07-2008, 15:09:32
sí, he conectado desde lazarus y desde IBExpert poniendo la misma orden SQL en ambos y la misma base de datos con la misma codificación y el problema persiste.


A ver si entiendo, me dices que con IBEXPERT misma base puesta en windows se conecta excelente, y la misma base en linux te da el error? O sea que ya identificaste que es un problema de codificación del servidor de Linux? Probaste lo contrario? desde tu app en lazarus/linux conectarte al servidor windows a ver que pasa?

Te recomiendo cambiar el charset de la base de datos que debe ser lo que esta molestando. Ejemplo de DDL al crear la base:

CREATE DATABASE localhost:meter
USER SYSDBA
PASSWORD masterkey
PAGE_SIZE 4096
DEFAULT CHARACTER SET ISO8859_1;

juega con el character set, pero este es correcto para nuestros caracteres especiales
Ahora, como se cambia una vez creado no recuerdo, espero que el ibexpert lo tenga, aun no abro mi VM (si lo tiene me cuentas), gracias.

Saludos.

Critter
17-07-2008, 17:51:28
No es un problema de conexión, es un problema de charset, determinados registros me muestra los campos donde aparecen esos caracteres en blanco, el resto perfecto. Y solo tengo el problema con los componentes lazarus.
Utilizando Delphi y componentes de Delphi no tengo problema ninguno. No es problema de servidor.

ejemplo:


tengo un Grilla y me sale mas o menos así
CLIENTE
-----------------------
JOSE ESPARZA
*
MIGUEL PEREZ



* Aqui no muestra el nombre del cliente que es ALVARO MUÑOZ, en su lugar aparece una cadena vacia y el cual si esta en la base de datos puesto que con IBExpert si aparece, unicamente me ocurre en el acceso a componentes de lazarus.

Gracias.

donald shimoda
17-07-2008, 19:56:06
sí, he conectado desde lazarus y desde IBExpert poniendo la misma orden SQL en ambos y la misma base de datos con la misma codificación y el problema persiste.

Pero si aquí dices que conectándote desde IBexpert el problema persiste. O no?:rolleyes:
Como no va a ser problema de servidor entonces?
La sentencia anterior la entiendo como que te conectas con IBEXPERT a un servidor Linux, ejecutas el query y te sucede el problema. Confirmame por favor.

Mientras hare algunas pruebas con ZEOS y Firebird y te cuento como me fue.

Dime que versión de ZEOS usas.

Saludos.

Critter
17-07-2008, 22:19:18
Pero si aquí dices que conectándote desde IBexpert el problema persiste. O no?:rolleyes:
Como no va a ser problema de servidor entonces?
La sentencia anterior la entiendo como que te conectas con IBEXPERT a un servidor Linux, ejecutas el query y te sucede el problema. Confirmame por favor.


Saludos.

al decir que el problema persiste quiero decir que no importa en componente de acceso que utilice desde lazarus, tanto con ZEOS como con SQLQuery (que viene con la instalacion de lazarus) me dan el mismo error y el uso del IBExpert era precisamente para comprobar que no era culpa del servidor.

la version de ZEOS es la ultima, la 6.3.3 bajada del svn.

Saludos.

donald shimoda
17-07-2008, 22:36:26
al decir que el problema persiste quiero decir que no importa en componente de acceso que utilice desde lazarus, tanto con ZEOS como con SQLQuery (que viene con la instalacion de lazarus) me dan el mismo error y el uso del IBExpert era precisamente para comprobar que no era culpa del servidor.

la version de ZEOS es la ultima, la 6.3.3 bajada del svn.

Saludos.

Ok acabo de probar y funciona ok, usando ñ acentos etc...

Te pego el compo de conexión:

object ZConnection1: TZConnection
Protocol = 'firebird-2.0'
HostName = '127.0.0.1'
Database = 'Prueba'
User = 'sysdba'
Password = 'masterkey'
Connected = True
left = 24
end

Estoy usando la versión de zeos 6.6.3-rc porque la verdad la última del svn no me compila en lazarus.

Será el protocolo que usaste? Proba el que te pase.

Espero te ayude en algo..

Saludos.

Critter
21-07-2008, 09:56:31
:(

más de lo mismo, he probado tus indicaciones, he probado los componentes FIBL los FBIBL y nada, sigue fallando, cuando tampoco es problema de la base de datos ni del motor de base de datos, puesto que he creado un acceso a datos desde Delphi 7 a la susodicha base de datos y si que funciona me muestra los campos con nombres de personas que contienen la Ñ en sus apellidos.

Es Lazarus.-

Gracias.-

donald shimoda
21-07-2008, 15:54:26
:(

más de lo mismo, he probado tus indicaciones, he probado los componentes FIBL los FBIBL y nada, sigue fallando, cuando tampoco es problema de la base de datos ni del motor de base de datos, puesto que he creado un acceso a datos desde Delphi 7 a la susodicha base de datos y si que funciona me muestra los campos con nombres de personas que contienen la Ñ en sus apellidos.

Es Lazarus.-

Gracias.-

Amigo, entiendo tu frustración pero no es lazarus. Aca funciona... Puede ser la definición del campo, por ejemplo. Quizas windows este forzando un charset, es probable.
Podes probar forzando en el campo el charset? Ejemplo:

CREATE DOMAIN GUID AS
CHAR(22) CHARACTER SET ISO8859_1
COLLATE ES_ES;

Lo que te aconsejo es mensaje a la lista de zeos y de firebird a ver como te pueden ayudar. Eso si tenes el tiempo como para intentar solucionarlo, sino obviamente quedate con lo que obtuviste.

Saludos.

Critter
22-07-2008, 11:04:27
bueno, parece ser que no soy el unico que tiene el problema y alguien ha posteado ya el bug.


http://bugs.freepascal.org/view.php?id=11725

de todas maneras muchisimas gracias por tu interés.

saludos!::)

donald shimoda
22-07-2008, 12:49:07
bueno, parece ser que no soy el unico que tiene el problema y alguien ha posteado ya el bug.


http://bugs.freepascal.org/view.php?id=11725

de todas maneras muchisimas gracias por tu interés.

saludos!::)

Ya veo. Un concejo, bájate mis repos para ubuntu, estan en el blog, que con esa versión de lazarus (que es compilada del svn de una semana atras) y la fpc que esta ahi mismo funciona.

Si necesitas la version de zeos que uso, la tengo en un zip, ya se la envie a otro amigo del club. ;)

Saludos.