Para resolver mi problema, hice lo siguiente:
Código Delphi
[-]
type
TAviso = record
nro_op:Integer;
aviso:TStream;
observaciones_aviso,
estado_aviso:string;
end;
uses
DB;
procedure nuevo_aviso(r_aviso:TAviso; qAvisos:TMDOQuery);
begin
with r_aviso, qAvisos do
begin
Close;
SQL.Clear;
SQL.Add('Insert into avisos (nro_op, texto_aviso, ');
SQL.add('observaciones_aviso, estado_aviso) ');
SQL.Add('Select :nro_op, :texto, :observaciones, :estado ');
SQL.Add('From rdb$database ');
ParamByName('nro_op').AsInteger:=nro_op;
ParamByName('texto').LoadFromStream(aviso, ftBlob);
ParamByName('observaciones').AsString:=observaciones_aviso;
ParamByName('estado').AsString:=estado_aviso;
try
ExecSQL;
except
raise;
end;
end;
end;
end.
Código Delphi
[-]
procedure TfrmPrincipal.btnRegistroAvisoClick(Sender: TObject);
var
stream:TStream;
r_aviso:TAviso;
begin
stream:=TMemoryStream.Create;
Editor.Lines.SaveToStream(stream);
with r_aviso do
begin
nro_op:=StrToInt(txtNroOP.Text);
aviso:=stream;
observaciones_aviso:='';
estado_aviso:='NO_PUBLICADO';
end;
with DataModule1 do
begin
terminarTransaccion;
try
transaccion.StartTransaction;
nuevo_aviso(r_aviso, qAvisos);
transaccion.Commit;
MessageBox('Registro terminado.', PChar(lblAvisos.Caption),
MB_OK + MB_ICONINFORMATION);
except
on e:Exception do
begin
terminarTransaccion;
mErrores(e, 'Sin registro de aviso digitalizado.', lblAvisos.Caption);
end;
end;
end;
end;
Del lado de la BD la cosa es así:
Código SQL
[-]
CREATE TABLE AVISOS (
NRO_OP INTEGER NOT NULL,
TEXTO_AVISO BLOB SUB_TYPE 0 SEGMENT SIZE 100,
OBSERVACIONES_AVISO VARCHAR(1000),
ESTADO_AVISO VARCHAR(50)
);
ALTER TABLE AVISOS ADD CONSTRAINT PK_AVISOS PRIMARY KEY (NRO_OP);
Lo he probado poniendo un archivo .rtf con imágenes y texto, negrita, hipervínculos, cursiva, etc., etc. etc. y me lo pasó de 10.
No hubo necesidad de guardar el .rtf a disco, que por supuesto si el usuario desea hacerlo tiene disponible el botón "guardar" para luego levantarlo a su antojo.
Firebird 2.1, conexión: IBX, Delphi 7
Bueno, gracias nuevamente por el aporte de todos.
Santiago.