Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MS SQL Server
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-02-2014
vicens22 vicens22 is offline
Miembro
NULL
 
Registrado: dic 2010
Posts: 61
Poder: 14
vicens22 Va por buen camino
Traspaso datos firebird a MSSQL - Problema con campos Blob

Buenas tardes,

Estoy intentando realizar un traspaso de datos desde una base Firebird a MSSQL y me encuentro con un curioso problema en relación con los campos de comentarios (blobs).

Resulta que en firebird varias tablas tienen campos tipo Blob (tBlobField) y lo que necesito es pasarlo a su equivalente en SQL (campo text).

Tengo otras aplicaciones de traspaso realizadas con otra versión anterior de delphi (2007) en las cuales el código siguiente funcionaba sin problema :

Código Delphi [-]

tbClientesSQL.mComentario.value := tbClientesIB.mComentario.value;

Ahora al intentar compilar el mismo código con Delphi XE5 obtengo el siguiente código de error:

[dcc32 Error] traspasoSbiwTOSbiol50.pas(775): E2010 Incompatible types: 'AnsiString' and 'System.TArray<System.Byte>'

He buscado y consultado diversos foros y por lo que me parece el problema tiene que ver con el cambio a Unicode que se aplicó en delphi 2009 (al menos eso me ha parecido entender).
He probado diversas soluciones y cambios aconsejados, de momento sin éxito.

Alguien se ha encontrado con problema similar y puede echarme un cable ??

Muchas gracias por cualquier sugerencia.

Saludos,

Vicente
Responder Con Cita
  #2  
Antiguo 12-02-2014
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Supongo que la representación de los Blobs para cada base de datos se hace diferente (AnsiString y Array of byte)
¿Has probado asignar el valor del campo a un TStrings y luego asignar esta variable al nuevo campo?
Otra posibilidad, si se trata de textos es tratar de utilizar algo así:
Código Delphi [-]
tbClientesSQL.mComentario.AsString := tbClientesIB.mComentario.AsString;
También se me ocurre generar Streams para cargar los campos.
Código Delphi [-]
// Poner todo esto entre try..finally
StreamMsSQL := tbClientesSQL.CreateBlobStream(tbClientesSQL.mComentario, bmWrite);
StreamFB := tbClientesIB.CreateBlobStream(tbClientesIB.mComentario, bmRead);
StreamMsSQL.CopyFrom(StreamFB, StreamFB.Size);
StreamMsSQL.Free;
StreamFB.Free;
Responder Con Cita
  #3  
Antiguo 12-02-2014
vicens22 vicens22 is offline
Miembro
NULL
 
Registrado: dic 2010
Posts: 61
Poder: 14
vicens22 Va por buen camino
Smile

Buenos días,

La primera opción que me aconsejaste funcionó perfectamente. Creía haberla probado ya, pero debí cometer algún error porque ahora ha funcionado a la primera.

Muchas gracias por tu ayuda !!

Saludos

Vicente
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Base de Datos de MSSQL a FIREBIRD JXJ Firebird e Interbase 7 27-07-2011 08:22:14
Firebird y campos BLOB DamianG Firebird e Interbase 10 05-05-2011 23:22:58
Problemas con los blob/memo al hacer traspaso de Access a Firebird Minotaure Conexión con bases de datos 1 16-05-2006 21:30:36
problema traspaso de datos entre formularios hijos VRO OOP 6 30-03-2005 13:35:53
traspaso de datos MDB a FireBird Taribus Conexión con bases de datos 6 01-10-2004 18:03:47


La franja horaria es GMT +2. Ahora son las 04:21:10.


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
Copyright 1996-2007 Club Delphi