PDA

Ver la Versión Completa : Problema con campos BLOB


Miguel45
28-01-2014, 13:22:33
Hola amigos y compañeros.

Tengo un formulario con varios campos. Uno de ellos es un campo memo. Esos campos los guardo en una tabla. El campo memo tengo que guardarlo en un campo de tipo BLOB, definido en la tabla como: BLOB
sub_type 0 segment size 80.

Antes trabajaba con delphi 7 y Firebird 2.5 y todo funcionaba bien.
Ahora estoy migrando la aplicación a delphiXE con el mismo firebird y he tropezado con este problema.

Cuando voy a guardar en la tabla el campo memo del formulario, o bien no me guarda nada, o bien me guarda caracteres raros, puntos,...

with QRegistro do
begin
close;
sql.clear;
sql.add('INSERT INTO REGISTRO_LLAMADAS_CLIENTES VALUES(:P0,:P1,:P2,:P3,:P4,:P5,:P6,:P7)');
params[0].AsInteger := StrToInt(EditCodCli.Text);
params[1].AsString := EditCliente.Text;
params[2].AsDateTime := Fecha.DateTime;
params[3].AsString := EditAsunto.Text;
params[4].AsString := MemoObservaciones.Text;
params[5].AsString := NuevaCita;
params[6].AsInteger := StrToInt(EditCodAge.Text);
params[7].AsString := EditNomAge.Text;
try
ExecSQL;
except
Cancel;
end;
end;


El campo que da estos problemas es el parámetro 4. He probado con "params[4].AsBlob" - con "params[4].AsMemo" y nada.

Estoy seguro que es una chorrada, pero estoy bloqueado y no consigo dar con ella.

He consultado también en el foro y no he encontrado ninguna solución.

Un saludo y gracias anticipadas.

orodriguezca
30-01-2014, 14:43:03
Prueba de la siguiente forma:

params[4].AsAnsiString := AnsiString(MemoObservaciones.Text);

Miguel45
31-01-2014, 10:30:19
Gracias por tu respuesta orodriguezca.

Me parece recordar que ya lo hice así y tuve también problemas, de todas formas lo pruebo de nuevo y ya te contesto.

Revisando un poco la tabla en cuestión, el campo blob lo tenía creado como subtipo 0 (binario). Lo he cambiado a Subtipo 1 (texto).
INCIDENCIA BLOB SUB_TYPE 1 SEGMENT SIZE 80

Con este cambio funciona bien.

Lo que sospechaba. Una chorrada. Pero cuando te bloqueas en un problema, vale más dejarlo y atacarlo cuando estés más fresco.

Gracias de nuevo.

orodriguezca
31-01-2014, 15:12:22
Me alegro mucho que hayas resuelto el problema.

También a veces he pasado dándole vueltas a algún problema en mis programas y sólo después de un relajado descanso es que la solución ha aparecido como por arte de magia.

Saludos,