Angel.Matilla
12-02-2022, 12:02:25
Buenos días. He estado mirando aquí y en otros foros cómo grabar el contenido de un TImage en una BB.DD. Firebird 2.5. La tabla está definida así:
CREATE TABLE IMAGEN (
TIPO SMALLINT NOT NULL,
REGISTRO INTEGER NOT NULL,
POSICION VARCHAR(1) NOT NULL,
CARATULA BLOB SEGMENT SIZE 240);
El TImage lo cargo a partir de un fichero que selecciono con un TOpenPictureDialog y para grabar el contenido del TImage en la tabla uso esto:
TJPEGImage *ImgJpg = new TJPEGImage;
TMemoryStream *msImagen = new TMemoryStream;
msImagen->Clear();
ImgJpg->Assign(Caratula->Picture->Bitmap);
ImgJpg->SaveToStream(msImagen);
msImagen->Seek(0, soFromBeginning);
Query->Close();
Query->SQL->Text = "INSERT INTO Imagen (Tipo, Registro, Posicion, Caratula) VALUES (:Tipo, :Registro, 'P', :Caratula)";
Query->ParamByName("Caratula")->LoadFromStream(msImagen, ftBlob);
Query->ParamByName("Tipo")->AsInteger = TabControl1->TabIndex + 1;
Query->ParamByName("Registro")->AsInteger = nRegistro;
Query->ExecSQL();
Query->Transaction->Commit();
Cunado selecciono el fichero se muestra en el formulario pero he comprobado que luego no graba nada en la tabla. ¿Algún consejo? Porque me he vuelto loco buscando ejemplos, pero ninguno me ha funcionado.
CREATE TABLE IMAGEN (
TIPO SMALLINT NOT NULL,
REGISTRO INTEGER NOT NULL,
POSICION VARCHAR(1) NOT NULL,
CARATULA BLOB SEGMENT SIZE 240);
El TImage lo cargo a partir de un fichero que selecciono con un TOpenPictureDialog y para grabar el contenido del TImage en la tabla uso esto:
TJPEGImage *ImgJpg = new TJPEGImage;
TMemoryStream *msImagen = new TMemoryStream;
msImagen->Clear();
ImgJpg->Assign(Caratula->Picture->Bitmap);
ImgJpg->SaveToStream(msImagen);
msImagen->Seek(0, soFromBeginning);
Query->Close();
Query->SQL->Text = "INSERT INTO Imagen (Tipo, Registro, Posicion, Caratula) VALUES (:Tipo, :Registro, 'P', :Caratula)";
Query->ParamByName("Caratula")->LoadFromStream(msImagen, ftBlob);
Query->ParamByName("Tipo")->AsInteger = TabControl1->TabIndex + 1;
Query->ParamByName("Registro")->AsInteger = nRegistro;
Query->ExecSQL();
Query->Transaction->Commit();
Cunado selecciono el fichero se muestra en el formulario pero he comprobado que luego no graba nada en la tabla. ¿Algún consejo? Porque me he vuelto loco buscando ejemplos, pero ninguno me ha funcionado.