Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Convertir blob en varchar (https://www.clubdelphi.com/foros/showthread.php?t=69585)

Mauro Daniel 26-08-2010 22:51:10

Convertir blob en varchar
 
Hola a todos! Estoy utilizando Interbase 6 y necesito crear una udf (con Delphi) que me permita tomar los 100 primeros caracteres de un campo blob y pasarlos a un string...
He leido muchos hilos de la página y lo que he encontrado es convertir texto en blob (yo necesito hacer la operacion inversa)
Espero me puedan ayudar! Desde ya muchas gracias!

Casimiro Notevi 26-08-2010 23:05:24

Pero se supone que en el blob tienes guardardo texto, no?, porque si son datos binarios vas a tener problemitas :)

Mauro Daniel 26-08-2010 23:41:49

Si Casimiro. En estos campos solo tenemos almacenado texto
Supongo que tiene que haber una forma, pero por ahora no la puedo encontrar :(. Hace unas horas que me parto la cabeza pensando y probando jeje
Espero puedan ayudarme!!!

Casimiro Notevi 26-08-2010 23:51:02

Entonces, si tienes el campo blob declarado como "de texto" y tienes almacenado texto, sólo debes usarlo como un campo varchar, normal.

Código:

tuvariable := DStucampoblob.asstring;
Si quieres los 100 primeros caracteres desde delphi puedes usar la función copy y si es en sql entonces puede que te valga hacer un cast

Código:

cast(tucampoblob as varchar(100))

Mauro Daniel 27-08-2010 00:41:25

Fue lo que probé en un principio, pero me da el siguiente error:

fmSQLEditor.frmData.DataD.SelectQuery:
Overflow occurred during data type conversion.
conversion error from string "BLOB".

Debe ser que no es de texto..aunque solo almaceno eso. Te agradezco mucho tu ayuda Casimiro!

Casimiro Notevi 27-08-2010 00:49:17

Ve haciéndolo por "tramos" hasta que llegues al registro que tiene el problema, puede que realmente no tenga texto en algún registro.
También puede que sea null, aunque si usas "AsString" lo convertiría a '' (cadena vacía).
Otra cosa que puede pasar es que hayas declarado el campo varchar de un tamaño y lo que estás extrayendo sea más grande y no quepa.

Mauro Daniel 27-08-2010 13:43:05

Cuando lo tomo desde delphi con el asstring si me lo convierte a cadena y lo puedo trabajar...
Cuando intento con Interbase de la forma:
Select cast(comentarios as varchar(100)) from coprove
por mas que haga un select de un único registro en el que se que el comentario tiene menos de 100 caracteres, me da el error mencionado en el mensaje anterior...

Mi idea era crear una udf que pase como parámetro el campo blob a delphi y manipularlo ahí devolviendo un string de 100 caracteres. Aunque ya dudo si se puede :(

Me pongo a intentarlo nuevamene. Muchas gracias por tu ayuda Casimiro. Sigo pendiente de tus respuestas!!!


La franja horaria es GMT +2. Ahora son las 23:13:12.

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