Ver Mensaje Individual
  #1  
Antiguo 06-07-2017
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Reputación: 19
Angel.Matilla Va por buen camino
No graba imagen en Firebird

Tenog un formulario con un TImage en el que puedo seleccionar el fichero de imagen a asignar para luego grabarlo en una tabla Firebird. Supongamos que el TImage está así:

Un vez cargado dicho TImage para grabarlo en la tabal hago esto:
Código:
for (nItem = 0; nItem < this->ComponentCount; nItem ++)
{
     Source = this->Components[nItem];
     [...]
     fPersona->Query->Close();
     if (Source->ClassNameIs("TImage"))
     {
          TImage *Imagen          = static_cast<TImage*>(Source);
          TMemoryStream *msImagen = new TMemoryStream;

          (Imagen->Picture->Bitmap)->SaveToStream(msImagen);
          msImagen->Seek(0, soFromBeginning);
          if (!lPrueba && msImagen->Size == 0)
               continue;

          if (msImagen == 0)
               fPersona->Query->SQL->Text = "DELETE FROM Instalacion WHERE Etiqueta = :Campo";
          else
          {
               if (lPrueba)
                    fPersona->Query->SQL->Text = "UPDATE Instalacion SET Imagen = :Imagen WHERE Etiqueta = :Campo";
               else
                    fPersona->Query->SQL->Text = "INSERT INTO Instalacion (Etiqueta, Imagen) VALUES (:Campo, :Imagen)";
                    fPersona->Query->ParamByName("Imagen")->LoadFromStream(msImagen, ftBlob);
          }
          fPersona->Query->ParamByName("Campo")->AsString = Source->Name;
     }
     [...]

     try
     {
          fPersona->Query->ExecSQL();
          fPersona->Query->Transaction->Commit();
     }
     catch(...)
     {
          Screen->Cursor = crArrow;
          fPersona->Query->Transaction->Rollback();
          Mensaje(-1, "Se ha producido un error en la actualización de los datos.¦" + ExtractFileName(AnsiString(__FILE__)) + FormatFloat("' - '0", __LINE__), "Volver");
          LisSitSelectItem(NULL, NULL, false);
          return;
     }
}
El problema es que ni me da error ni nada; simplemente, no graba nada.
Responder Con Cita