Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MySQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=21)
-   -   Guuardar texto de Richedit a campo Blob (https://www.clubdelphi.com/foros/showthread.php?t=39524)

marcoev 23-01-2007 03:46:40

Guuardar texto de Richedit a campo Blob
 
Buenas tardes, espero y alguien pueda ayudarme con este problemita.

Lo que pasa es que estoy intentando enviar por medio de una consulta de SQL el texto que se encuentra dentro de un componente TrzRichEdit (Es de los componentes de Rize), pero cuando lo guarda, este se va sin Formato, pero si utilizo el componente que se liga a la base de datos, tal como un DBRichEdit el texto se guarda en binario y el formato del texto se mantiene, entonces necesito saber que es lo que tengo que guardar desde el RichEdit normal para que se guarde con formato.
Este es el codigo que utilizo para enviar los datos a la base de datos.
Código Delphi [-]
    with dmDatos.qDatos do begin
      SQL.Clear;
      Close;
      if nuevo then
        SQL.Text:='INSERT INTO FORMULAS (Formula, UsoTerapeutico) VALUES ('+QuotedStr(Trim(edNombre.Text))+', :Uso)'
      else
        SQL.Text:='UPDATE FORMULAS SET Formula = '+QuotedStr(Trim(edNombre.Text))+', UsoTerapeutico = :Uso WHERE IdFormula = '+
          dmDatos.qFormulas.FieldByName('IdFormula').AsString;
      ParamByName('Uso').AsBlob:=edUso.Text;
      ExecSQL;
    end; //with
Saludos, espero y alguien pueda responderme. gracias

roman 23-01-2007 06:45:37

No conozco la componente que mencionas pero en el caso del control estándar, la lectura o escritura del texto enriquecido debe pasar a través de un stream, y no directamente con la propiedad Text o Lines.Text.

Un ejemplo para guardar los datos:

Código Delphi [-]
var
  Contenido: TStringStream;

begin
  Contenido := TStringStream.Create('');

  try
    // Copiamos el contenido del rich edit a un stream
    edUso.Lines.SaveToStream(Contenido);

    // Pasamos el contenido al parámetro
    qDatos.ParamByName('uso').AsString := Contenido.DataString

    // Lanzamos la sentencia
    qDatos.ExecSQL;
  finally
    Contenido.Free;
  end;
end;

Para leer los datos sería el proceso inverso:

Código Delphi [-]
var
  Contenido: TStringStream;

begin
  // Creamos un stream con el valor del campo
  //
  // Aquí supongo que qDatos tiene la consulta SELECT
  // y que ya la hemos ejecutado
  Contenido := TStringStream.Create(qDatos.FieldByName('UsoTerapeutico').AsString);

  try
    // Copiamos el contenido del stream al rich edit
    edUso.Lines.LoadFromStream(Contenido);
  finally
    Contenido.Free;
  end;
end;

// Saludos

marcoev 23-01-2007 18:42:50

muchas gracias, voy a probar lo que comentas.

marcoev 23-01-2007 18:54:42

Esto es exactamente lo que necesitaba, muchas gracias Roman.


La franja horaria es GMT +2. Ahora son las 04:00:31.

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