Databáze > Firebird a Interbase

RichEdit a TBlobField

(1/2) > >>

DELPHIMAKER:
Ahoj.
Poradíte mi někdo prosím co dělám špatně?
Pokouším se zapsat obsah RichEditu do datového typu Blob.
Tahle procedura mi končí chybou "Variant or safe array index out of bounds"
Delphi 2009, FB2.5, win all

procedure SaveRichEdit1;
var mst:TMemoryStream;
begin
          Screen.Cursor:= crHourGlass;
          mst:= TMemoryStream.Create;
          RichEdit1.Lines.SaveToStream(mst);
          mst.Seek(0, soFromBeginning) ;
          IBQuery2.Edit;
          TBlobField(IBQuery2.FieldByName('POZNAMKY')).LoadFromStream(mst);
          IBQuery2.Post;
          DM1.IBTransaction1.CommitRetaining;
          Screen.Cursor:= crDefault;
          mst.Free;
end;

JaroB:
A tohle by, podobně jako pro memo, nefungovalo?


--- Kód: Delphi ---IBQuery2.FieldByName('POZNAMKY').AsString := RichEdit1.Lines.Text;

KarelHorky:
Nevím, co konkrétně je špatně v tvém případě, metody Edit a Post u tabulky Paradoxu jsem použil naposledy před x lety.
Pro zápis blobu v D7 používám TIBSQL:


--- Kód: Delphi ---  with dm.TBSql do begin    Close;    SQL.Clear;    SQL.Add ('update tabulka set historie = :historie ');    SQL.Add ('where cislo = :cislo ');    ParamByName ('cislo').AsInteger:=aCislo;    HistorieR.Position := 0;    ParamByName('historie').LoadFromStream(HistorieR);    Prepare;    ExecQuery;  end; 
HistorieR je typu TMemoryStream, naplněno z Richeditu stejným způsobem, jak to máš ty. Transakci spouštím před touto procedurou a ukončuji po ní.

DELPHIMAKER:

--- Citace: JaroB  28-01-2013, 08:53:49 ---A tohle by, podobně jako pro memo, nefungovalo?


--- Kód: Delphi ---IBQuery2.FieldByName('POZNAMKY').AsString := RichEdit1.Lines.Text;
--- Konce citace ---
Tohle mi moc nepomůže, protože tam potřebuju ukládat text včetně formátování proto tam mám RichEdit...

DELPHIMAKER:
V té tabulce je ještě jeden sloupec blob pro vložení obrázku.
Když prvně vložím obrázek a potom uložím obsah RichEditu,tak se chyba nekoná!
Pokud ale prvně uložím ubsah RichEditu tak chyba.
Zkusil jsem to i takhle :

--- Kód: ---(IBQuery2.FieldByName('POZNAMKY') as TBlobField ).LoadFromStream(mst);

--- Konec kódu ---
ale chová se to stejně...  :(

--- Kód: ---procedure TFormRowProductEdit.JvImage1DblClick(Sender: TObject); //uložení obrázku
begin
         if OpenPictureDialog1.Execute then
         begin
           if fileExists(OpenPictureDialog1.FileName) then
           begin
                  Screen.Cursor:= crHourGlass;
                  IBQuery2.Edit;
                 (IBQuery2.FieldByName('PRILOHY') As TBlobField).LoadFromFile(OpenPictureDialog1.FileName);
                  IBQuery2.Post;
                  Screen.Cursor:= crDefault;
                  DM1.IBTransaction1.CommitRetaining;
           end;

         end;
end;

procedure TFormRowProductEdit.RichEdit1MouseLeave(Sender: TObject); //uložení poznámek
var mst:TMemoryStream;
begin
          Screen.Cursor:= crHourGlass;
          mst:= TMemoryStream.Create;
          RichEdit1.Lines.SaveToStream(mst);
          mst.Seek(0, soFromBeginning) ;
          IBQuery2.Edit;
          TBlobField(IBQuery2.FieldByName('POZNAMKY')).LoadFromStream(mst);
          IBQuery2.Post;
          DM1.IBTransaction1.CommitRetaining;
          Screen.Cursor:= crDefault;
          mst.Free;
end;
--- Konec kódu ---

Navigace

[0] Seznam témat

[#] Další strana

Přejít na plnou verzi