Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Actualizar en contenido de un TRxRichEdit (https://www.clubdelphi.com/foros/showthread.php?t=82810)

darkamerico 16-04-2013 16:32:34

Actualizar en contenido de un TRxRichEdit
 
saludos amigos, tengo un componente TRxRichEdit, el cual lee el contenido de un registro de la BD, en el evento OnActivate:

Código Delphi [-]
procedure TForm7.FormActivate(Sender: TObject);
var
  Contenido: TStringStream;
begin
  doc.Lines.Clear;

  DMMYsql.q_DocDelReclamoX.close;
  DMMYsql.q_DocDelReclamoX.Params[0].asInteger:=StrToInt(form1.lblIDReclamo.Caption);
  DMMYsql.q_DocDelReclamoX.Params[1].asInteger:=form1.tipoDoc;
  DMMYsql.q_DocDelReclamoX.Open;

  Contenido := TStringStream.Create(DMMYsql.q_DocDelReclamoX.FieldByName('documento').AsString);
  try
    doc.Lines.LoadFromStream(Contenido);
  finally
    Contenido.Free;
  end;
end;

Ahora bien, el problema que tengo es que deseo que ese contenido pueda ser editado por el cliente y finalmente en un boton "Actualizar" se almacene nuevamente la nueva version del documento. Intente el siguiente codigo, pero me coloca basura en el campo:

Código Delphi [-]
procedure TForm7.btnGrabarDocClick(Sender: TObject);
begin
  DMMYsql.q_UPDDocReclamoX.Close;
  DMMYsql.q_UPDDocReclamoX.Params[0].AsString:=doc.Lines.Text;
  DMMYsql.q_UPDDocReclamoX.Params[1].AsInteger:=StrToInt(form1.lblIDReclamo.Caption);
  DMMYsql.q_UPDDocReclamoX.Params[2].AsInteger:=form1.tipoDoc;
  DMMYsql.q_UPDDocReclamoX.ExecSQL;
  ShowMessage('Documento Actualizado!');
end;

La consulta sql del componente q_UPDDocReclamoX es:

Código SQL [-]
UPDATE reclamo_documentos
SET documento=:DOCView
WHERE reclamo_documentos.idreclamo_fk = :IDReclamoX AND 
      reclamo_documentos.tipDoc = :TipDoc

Finalmente la estructura de la tabla reclamo_documentos es la siguiente:

Código SQL [-]
CREATE TABLE `reclamo_documentos` (
  `id_recDocumento` int(11) NOT NULL,
  `idreclamo_fk` int(11) NOT NULL,
  `tipDoc` int(11) NOT NULL,
  `fecha_doc` varchar(10) NOT NULL,
  `documento` longtext NOT NULL,
  PRIMARY KEY (`id_recDocumento`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Gracias de antemano por la ayuda compañeros.


Atte
Americo

darkamerico 16-04-2013 22:37:31

Saludos
 
Quizas fui demasiado explicito, en el post, lo que necesito es saber como actualizar en la BD un campo de tipo String (RTF), que esta relacionado con un componente TRxRichEdit.

Casimiro Notevi 16-04-2013 23:19:16

¿Por qué no usas un TDBrichedit?, así te ahorras hacer de "intermediario".
Por cierto, ¿usas formato texto o rtf?

darkamerico 17-04-2013 15:49:15

Gracias por la Pista
 
Bueno, hice algunos ajustes con respecto a mi enfoque inicial, cambie el componente TRxRichEdit por un TRxDBRichEdit y lo configure en el evento OnActivate del formulario de la siguiente forma:

Código Delphi [-]
procedure TForm7.FormActivate(Sender: TObject);
begin

  DMMYsql.q_DocDelReclamoX.close;
  DMMYsql.q_DocDelReclamoX.Params[0].asInteger:=StrToInt(form1.lblIDReclamo.Caption);
  DMMYsql.q_DocDelReclamoX.Params[1].asInteger:=form1.tipoDoc;
  DMMYsql.q_DocDelReclamoX.Open;

  doc.DataSource:=DMMySQL.ds_DocDelReclamoX;
  doc.DataField:='documento';

end;

Luego puse un TDBNavigator y tambien lo rutee al mismo datasource DataSource: DMMySQL.ds_DocDelReclamoX. Luego solo deje visible el boton nbPost.

Ello resolvió el problema.

Saludos


La franja horaria es GMT +2. Ahora son las 02:37:22.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi