Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Problema con campos BLOB (https://www.clubdelphi.com/foros/showthread.php?t=85095)

Miguel45 28-01-2014 13:22:33

Problema con campos BLOB
 
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,...
Código Delphi [-]
     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

Quizas sea por el unicode
 
Prueba de la siguiente forma:
Código Delphi [-]
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).
Código Delphi [-]
 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,


La franja horaria es GMT +2. Ahora son las 19:54:49.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi