Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-05-2014
mordaz mordaz is offline
Miembro
 
Registrado: mar 2008
Posts: 32
Poder: 0
mordaz Va por buen camino
Guardar OleVariant en Blob de Intarbase

Que tal a todos,

Les comento que necesito guardar el contenido de una variable OleVariant en un campo Blob de una tabla de Interbase. Esta variable OleVariant contiene la información de una huella dactilar capturada con un dispositivo DigitalPersona.

Buscando en los foros encontré una solución de como guardar una Imagen en un campo similar aportado por nuestro amigo Ecfisa. Lo que encontre es lo siguiente:

Código:
...
#include <jpeg.hpp>

// TImage a campo BLOB
void __fastcall ImageToField(TImage *aImage, TField *aField)
{
  if (aImage->Picture->Graphic->ClassNameIs("TJPEGImage")) {
    aField->DataSet->Edit();
    aField->Assign(aImage->Picture->Graphic);
  }
}

// Campo BLOB a TImage
void __fastcall FieldToImage(TField *aField, TImage *aImage)
{
  TJPEGImage *JPG = new TJPEGImage;

  if (aField->ClassNameIs("TBlobField")) {
    JPG->Assign(aField);
    aImage->Picture = NULL;
    aImage->Picture->Assign(JPG);
  }
  delete JPG;
}
Entiendo que la variable debe ser transportada a su formato en bits
Código:
aImage->Picture->Graphic
y despues al recuperarla regresarla a su formato original
Código:
aImage->Picture->Assign(JPG)
¿Alguien tiene alguna idea de como hacer esto para los tipos OleVariant?
Responder Con Cita
  #2  
Antiguo 06-05-2014
mordaz mordaz is offline
Miembro
 
Registrado: mar 2008
Posts: 32
Poder: 0
mordaz Va por buen camino
Debido a un rayo de luz en mi camino me veo en la necesidad de responderme a mi mismo por si alguien necesita hacerlo después.
Encontré la manera de guardarlo directamente en la base de datos de esta manera:

Para guardar:
Código:
   OleVariant Ovt;
   Muestra.Serialize(Ovt);   //donde obtiene su valor Ovt
   Variant Vrt=reinterpret_cast<Variant&>(Ovt);

   IBTblHuellas->Edit();
   IBTblHuellas->FieldByName("Huella")->AsVariant=Vrt;
   IBTblHuellas->Post();
Para recuperar:
Código:
   OleVariant Ovt;
   IBQryAdmin->SQL->Clear();
   IBQryAdmin->SQL->Add("SELECT Huella FROM SociosHuellas");
   IBQryAdmin->Active=true;
   Ovt=IBQryAdmin->FieldByName("Huella")->AsVariant;
En las pruebas que hice parece funcionar bien, si tienen algún comentario o corrección se los agradecería mucho.
Responder Con Cita
  #3  
Antiguo 08-05-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola mordaz.

Aún no he tenido necesidad de trabajar C++/OleVariant, con seguridad me será útil en el futuro.

Muchas gracias por el aporte

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
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
OleVariant a campo blob mdomeyko Firebird e Interbase 7 08-02-2007 00:08:43
Guardar/Recuperar OLEVARIANT OF ARRAY (II) Franz Argandoña Tablas planas 2 13-07-2006 20:42:59
OleVariant a blob AngelMarvin Oracle 0 27-07-2004 23:28:59
caracteres en intarbase squenda Conexión con bases de datos 2 09-03-2004 15:12:25
Guardar formatos en un campo blob morfeo21 Varios 0 30-06-2003 19:45:53


La franja horaria es GMT +2. Ahora son las 06:34:08.


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