Jump to content


Photo

Problemas al ver Campos de los Dominios ¿Unicode?


  • Please log in to reply
6 replies to this topic

#1 Desart

Desart

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 715 posts
  • LocationEspaña

Posted 02 September 2011 - 09:33 AM

Hola Compañeros, resulta que intentando mejorar mi programa creatablas, he tenido que parar, pues encuentro un problema que creo que es debido al unicode,    resulta que tengo la siguiente sentencia en un Query 
[firebird]SELECT * FROM  RDB$FIELDS WHERE  RDB$SYSTEM_FLAG =0[/firebird][/size]Esta me da todos los dominios dentro de la B.D., lo paso a un grid, y muchos campos de los que me interesan apara recen como Blob o Como memos, he creado una pequeña aplicación, pero al pasar estos datos a memos, cargándolos directamente aparecen como muestro en la imagen siguienteImagen Enviaday lo que quiero es que parezcan como en el DbexpertImagen Enviada  No en el Grid, pero si en los memos o edits que utilice.    he marcado en rojo lo que no funciona (1ª imagen) y en Rojo, algunos de los Campos Que me interesan (2ª  imagen) y en esta misma en verde los que ya he localizado y entiendo.    La cuestión es algo esta mal o estoy haciendo mal, ya que mi base de datos, esta bien sin problemas y supongo que bien configurada, ya que tengo varios memos y sin problemas. Tenéis idea de cual es el problema?  Podéis aportarme una solución?    Por cierto he probado con  los componentes de TMS unicode exactamente con el memo y el resultado es el mismo, sabéis si hay que cambiar algo para que funcione?    Llevo dos días volviéndome loco en la red buscando y probando y nada de nada, que funciones. Si hace Falta pongo el código completo.[size=13px]
  • 0

#2 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4483 posts
  • LocationVenezuela

Posted 02 September 2011 - 09:44 AM

Me tome el atrevimiento de editar el mensaje para quitar unas etiquetas sobrantes y se pueda entender mejor lo que necesitas  (y)
  • 0

#3 Marc

Marc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1484 posts
  • LocationMallorca

Posted 02 September 2011 - 11:35 AM

Hola.

Pues a mi me parece todo muy normal, yo no veo ningún error (ni ninguna relación con textos Unicode).

¿ Como esperas que sea rdb$validation_blr sino un Blob binario ?, puesto que contiene el código binario compilado para la validación de esos campos.

Lo mismo ocurre con rdb$validation_source, que en este caso es un Blob de texto, puesto que contiene el código SQL a ejecutar para la validación del campo (el mismo código SQL que hemos visto compilado en el párrafo anterior). Esto tiene que guardarse en un campo Blob, puesto que puede tener más de una línea y un tamaño muy grande.

Lo mismo ocurre con los rdb&computed_source y rdb&computed_blr, o bien rdb&default_source y rdb&default_blr, etc. ... Todos ellos tienen que ser campos Blob para poder contener los datos que deben ir en ellos.

Todos los campos _BLR son código binario, y no hace falta que intentes mostrarlos puesto que al ser código en ensamblador, no son legibles para nosotros.

Para el resto de campos, puedes utilizar grids que muestren campos Memo, o bien puedes cambiarles el tipo en el momento de hacer la consulta.

Ejplo:

select *****, substring(rdb$computed_source from 1 for 100)
from rdb$fields
where rdb$system_flag = 0

Aunque ten en cuenta que un campo Blob puede ser muy largo, y lo estás convirtiendo en un varchar(100), con lo que puedes perder parte del contenido.

Saludos.
  • 0

#4 Marc

Marc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1484 posts
  • LocationMallorca

Posted 02 September 2011 - 11:43 AM

Por cierto, te enlazo un buen artículo sobre la extracción de información de las tablas de metadata.

http://www.alberton...._meta_info.html

Como puedes ver, normalmente no te basta con consultar una sola tabla, sino que tienes que enlazarla con otras tablas para acabar de rellenar la información que necesitas.

Saludos.
  • 0

#5 Desart

Desart

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 715 posts
  • LocationEspaña

Posted 02 September 2011 - 02:29 PM

Marc, tu solución me parece perfecta para lo que quiero pero tengo un problema si pongo


select
RDB$FIELD_NAME,
substring(RDB$VALIDATION_SOURCE from 1 for 100)
from rdb$fields
where rdb$system_flag = 0

delphi
  1. El campo RDB$VALIDATION_SOURCE, me lo reconoce como SUBSTRING, no he probado pero si pongo más campos iguales supongo que me dará un error, ya que cambia el nombre del campo por SUBSTRING.
  2.  
  3.  
  4. Como siempre te agradezco a tí y a todos los compañeros por la ayuda.


  • 0

#6 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4483 posts
  • LocationVenezuela

Posted 02 September 2011 - 04:49 PM

No te dara ese error, pero puedes evitar el nombre haciendo esto


[firebird]select
RDB$FIELD_NAME,
substring(RDB$VALIDATION_SOURCE from 1 for 100) as Validation
from rdb$fields
where rdb$system_flag = 0[/firebird]
  • 0

#7 Desart

Desart

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 715 posts
  • LocationEspaña

Posted 03 September 2011 - 03:02 AM

Gracias por la Respuesta EduarCol, ahora cambiamos el nombre y esta Ok, ero sigue saliendo Caracteres Estraños, de todas maneras, gracias al Enlace que puso Marc, mejoro la manera de mostrar el tipo, ahora solo me falta para lo que quiero, poder ver los contenidos de los Check, ya Sabéis para campos lógicos  ('Si','NO', Etc) y condicionales y los valores de Default.
  • 0




IP.Board spam blocked by CleanTalk.