PDA

Ver la Versión Completa : Problema al guardar en campo BLOB firebird


n03l
24-06-2013, 20:22:18
saludos.

recurro a uds a ver si me echan una manito ya q tengo problemas al guardar datos en un campo memo de firebird 2.5

tengo este campo en la base de datos:
PRUEBA BLOB SUB_TYPE 1 SEGMENT SIZE 4096

y este codigo

Opciones.Edit;
Opciones.FieldByName('PRUEBA').AsString:='prueba cinco seis';
Opciones.Post;
IBTransaction.CommitRetaining;

pero no se porque desde delphi solo me muestra el primer caracter

y desde IBEXpert me lo muestra asi p r u e b a c i n c o s e i s
y si le doy editar tambien solo me muestra el primer caracter y si lo edito desde alli si funciona bien.

uso delphi 2010 componentes interbase para las tablas el TIBDataset

saludos

celades1
25-06-2013, 08:21:45
hola

prueba con size 80, que es como yo trabajo

CREATE DOMAIN T_MEMO AS
BLOB SUB_TYPE 1 SEGMENT SIZE 80 CHARACTER SET NONE;


si no te carga bien con el asstring deberias hacerlo con loadfromstream.

si tienes problemas te pondre un ejemplo

Saludos

n03l
25-06-2013, 17:47:34
Hola gracias por responder,
Fijate q me fije este post
http://www.clubdelphi.com/foros/showthread.php?t=80380

e ise esto
FileName, FieldName: string;
BLOB:TSTREAM;
STREAM:TSTREAM;
begin


Filename:='D:\AAA.txt';

BLOB:=TFILESTREAM.Create(Filename,FMOPENREAD); //Asignamos el archivo abierto al //stream blob.
Opciones.Edit;; // Insertamos un nuevo registro.
STREAM:=Opciones.CreateBlobStream(Opciones.FieldByName('PRUEBA'), bmWrite); //Preparamos el campo blob para escritura.
STREAM.CopyFrom(BLOB,BLOB.Size); //Copiamos el archivo que hemos abierto al Stream //para que el query lo guarde.

BLOB.DESTROY;
STREAM.DESTROY;
Opciones.Post; //guardo el registro.
IBTransaction.CommitRetaining;


pero me aparecen puros ?????????????????? signos de interrogacion en el campo

tambien e sustituido esta linea
BLOB:=TFILESTREAM.Create(Filename,FMOPENREAD);
por esta otra
BLOB:=TStringStream.Create('uno dos tres');
y pasa lo mismo guarda puros signos de interrogacion???

saludos

n03l
25-06-2013, 18:53:01
Bueno e hecho la prueba asi
Opciones.Edit;
Opciones.FieldByName('PRUEBA').Text:='uno dos tres';
Opciones.Post;
IBTransaction.CommitRetaining;
y funciona bien en una aplicacion delphi estandar, pero yo lo estoy hacien desde un servico delphi y me sigue sin funcionar me lo sigue guardando asi: u n o d o s t r e s y cuando lo edito en IBEXpert se borran todos los caracteres menos el primero
saludos

Casimiro Notevi
25-06-2013, 19:12:01
Recuerda, no somos adivinos ni tenemos bola de cristal, si no pones todo el código de lectura y grabación ¿cómo te ayudamos? ;)

n03l
25-06-2013, 19:19:26
Hola, saludos

el codigo de grabacion son los q e puesto arriba

y para ver lo que se guarda uso el IBEXpert u o un programita delphi con un TDBMemo

Casimiro Notevi
25-06-2013, 19:31:00
Bien, había entendido que te habías fijado en ese código para hacer el tuyo. Bueno, entonces se supone que tienes un campo blob del tipo texto, algo así:
domComentarios blob sub_type text

Y ese campo lo usas para guardar texto normal, ¿es así?
Explica exactamente qué haces o qué quieres hacer, ¿guardar texto que teclea el usuario?, ¿leer texto de un fichero?, ¿ese fichero es texto "plano"?, ¿se lee texto de la memoria?, etc.

n03l
25-06-2013, 19:47:25
correcto es para guardar texto plano generado en el servicio de una variable string, decidi este tipo de datos xq necesito ir guardando alli una especie de observacion y que pueda ir creciendo sin problemas

Casimiro Notevi
25-06-2013, 20:11:21
correcto es para guardar texto plano generado en el servicio de una variable string, decidi este tipo de datos xq necesito ir guardando alli una especie de observacion y que pueda ir creciendo sin problemas

Pero con "creciendo" ¿qué quieres decir?, ¿muchos registros?, ¿un registro que va ampliándose?

n03l
25-06-2013, 20:19:14
si, un registro que va ampliándose

Casimiro Notevi
25-06-2013, 20:41:13
Entonces olvídate de stream y todo eso, trátalo como un campo de texto normal.

Casimiro Notevi
03-10-2015, 00:15:36
Tengo una tabla personales, lo que quiero consultar es si el campo blob (foto), tiene dato, como consulto ?
if QConsultaFoto. ?????? then
Alguna idea ?
Gracias,
Bienvenido a clubdelphi, como siempre aconsejamos a los nuevos, no olvides leer nuestra guía de estilo (http://www.clubdelphi.com/foros/guiaestilo.php), gracias por tu colaboración :)

jo3litro
05-10-2015, 22:57:24
Creo que resolvi el problema, tome el consejo de tratarlo como un campo de texto normal y funciona,

Gracias !!!