Autor Téma: RichText do DB  (Přečteno 943 krát)

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2610
  • Karma: 23
    • Verze Delphi: XE7 professional
RichText do DB
« kdy: 21-10-2016, 19:55:17 »
Riešim, aby sa vo FastReport-e zobrazil formátovaný text. Na to chcem použiť TAdvRichEditor.
Predpokladám, že na jeho uloženie v DB FireBird stačí typ poľa VarChar. Je to tak?
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2610
  • Karma: 23
    • Verze Delphi: XE7 professional
Re:RichText do DB
« Odpověď #1 kdy: 21-10-2016, 21:58:12 »
Takže podľa helpu musím použiť BLOB. To som tajne dúfal, že to tak nebude. Veľmi sa teším a mám čo študovať.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline vandrovnik

  • Plnoletý
  • ***
  • Příspěvků: 184
  • Karma: 1
    • Verze Delphi: XE6, 6, 5
Re:RichText do DB
« Odpověď #2 kdy: 21-10-2016, 23:03:01 »
Doporučuju co nejdřív vyzkoušet, jak kvalitně se takový text bude tisknout, případně exportovat do PDF, pokud to používáte. Když jsem něco podobného ve FastReportu naposledy zkoušel, byl export do PDF otřesný, tisk jsem myslím už ani nezkoumal.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2610
  • Karma: 23
    • Verze Delphi: XE7 professional
Re:RichText do DB
« Odpověď #3 kdy: 22-10-2016, 09:57:17 »
Sú to moje prvé kroky v tejto oblasti.
Citace
Když jsem něco podobného ve FastReportu naposledy zkoušel, byl export do PDF otřesný
Podobnú skúsenosť mám aj ja (CheckBox). Tak som použil PDF tlačiareň (PDFCreator) a bolo po vtákoch.

Osobne verím, že tlač bude v poriadku. Veď by im za to zákazníci odtrhli hlavy.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2610
  • Karma: 23
    • Verze Delphi: XE7 professional
Re:RichText do DB
« Odpověď #4 kdy: 22-10-2016, 22:51:47 »
Tak som zistil, že nakoniec BLOB nemusím použiť. Z internetu
Kód: Delphi [Vybrat]
  1.  
  2. function GetRichText(r: TRichEdit): string;
  3. var
  4.   ss: TStringStream;
  5. begin
  6.   ss: TStringStream.Create;
  7.   r.Lines.SaveToStream(ss);
  8.   Result := ss.DataString;
  9.   FreeAndNil(ss);
  10. end;
  11.  
a to už uložím priamo do VarChar
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Daniel_Andrascik

  • Hrdina
  • ****
  • Příspěvků: 392
  • Karma: 15
    • Verze Delphi: D2007, XE3
Re:RichText do DB
« Odpověď #5 kdy: 23-10-2016, 14:18:48 »
Ono je jasne ze blob pouzit nemusis, pokial tie rtf data nie su rozsiahle. Len opatrne aby ti nevznikali nejake zmeny dat ohladne znakovych kodovani (ANSI, ,UTF7,8, Unicode take, Unikode hentake). Syntax RTF som uz videl ale neovladam ju, neviem v akom kodovani sa uklada ci vyzaduje nejake striktne podmienky. Ale tych problemov so znakovymi kodovaniami tu uz bolo. Ked nieco nepokazila samotna databaza (koli nespravnej konfiguracii) tak to pokazil databazovy wrapper, pripadne to pokazil sam programator pretoze pomiesal hrusky s jablakmi. Toto vsetko ti pri boloboch a streamoch nehrozi.

Ja sam zvyknem priamo do varcharovych fieldov ukladat kratke XML, JSON pripadne miniHTML struktruy, ale presne pri nich ovladam ich znakove kodovania aby sa mi nic nesprasilo a aj tak nemam istotu ci to jedneho dna niekto nespusti na pocitaci s nejakym abnormalnym nastavenim prostredia na ktore mi nejako abnormalne zareaguje napriklad prave pouzity databazovy wraper a moze vzniknut problem. Ale vacsinou su to len nejake konfiguracne data u ktorych viem ze pouzivam len prvych 128 znakov ascii tabulky takze kodovanie riesit nemusim.

Dalsou vecou je databazova optimalizacia narabania s dlhymi varcharmi vs binarnymi blobmi. Tiez by to mohlo stat za posudenie.

Inac blobov a streamov by som sa obzvlast v pripade FireDACu ktory pouzivas velmi nebal. Par pokusov trva kym najses spravny sposob pouzitia ale k tomu sa rychlo dogooglis a ked ti to uz raz funguje nemusis sa bat nejakych problemov. Pokial sa nejedna naozaj o nejake ultra kratke rtf stringy tak by som na tvojom mieste asi naozaj isiel do tych blobov.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2610
  • Karma: 23
    • Verze Delphi: XE7 professional
Re:RichText do DB
« Odpověď #6 kdy: 23-10-2016, 15:31:57 »
Citace
Inac blobov a streamov by som sa obzvlast v pripade FireDACu ktory pouzivas velmi nebal. Par pokusov trva kym najses spravny sposob pouzitia ale k tomu sa rychlo dogooglis a ked ti to uz raz funguje nemusis sa bat nejakych problemov. Pokial sa nejedna naozaj o nejake ultra kratke rtf stringy tak by som na tvojom mieste asi naozaj isiel do tych blobov.
Bude sa jednať o texty do tlačových zostáv. Takže predpokladám maximálne 1 x A4. Ich zmena sa bude diať iba občas.
Uvidím ako sa mi bude dariť s BLOB. Ale aj tak ho budem potrebovať, keď do zostáv budem chcieť hodiť skenovaný podpis.

Na VarChar sa mi páči to, že ho načítam a priamo pošlem do zostavy. Žiaden stream a konverzie.
Ja viem. Staviam sa k tomu, ako by som prehadzoval lopatou tony uhlia.
« Poslední změna: 23-10-2016, 15:45:14 od Stanislav Hruška »
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline vandrovnik

  • Plnoletý
  • ***
  • Příspěvků: 184
  • Karma: 1
    • Verze Delphi: XE6, 6, 5
Re:RichText do DB
« Odpověď #7 kdy: 23-10-2016, 22:02:51 »
Určitě bych to uložil jako blob - nejen kvůli zmíněným potenciálním problémům s kódováním, ale hlavně kvůli velikosti dat (co když někdo bude chtít vložit obrázek, vodoznak, klipart, dlouhý text, složitě formátovaný text...). Blob není žádná černá magie, není třeba se toho bát :-)

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2610
  • Karma: 23
    • Verze Delphi: XE7 professional
Re:RichText do DB
« Odpověď #8 kdy: 23-10-2016, 22:10:03 »
Citace
(co když někdo bude chtít vložit obrázek, vodoznak, klipart, dlouhý text, složitě formátovaný text...)
Niektoré veci naozaj nemôžem vylúčiť. Hlavne obrázok.
Citace
Blob není žádná černá magie, není třeba se toho bát
Ďakujem za povzbudenie.
Ale ako urobím prvotné naplnenie údajmi? Budem mať tabuľku ReportTextsDefault a tu potrebujem predplniť údaje. A sú not null
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline vandrovnik

  • Plnoletý
  • ***
  • Příspěvků: 184
  • Karma: 1
    • Verze Delphi: XE6, 6, 5
Re:RichText do DB
« Odpověď #9 kdy: 23-10-2016, 22:15:37 »
Tak buď plnit v rámci aplikace - oblíbené streamy... V SQL by mělo jít něco jako:
insert into pokus (klic, pole) values (1, cast ('abc' as blob))

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 1678
  • Karma: 70
    • Verze Delphi: D2007, XE3, DX10
Re:RichText do DB
« Odpověď #10 kdy: 25-10-2016, 16:50:42 »
Určitě bych to uložil jako blob - nejen kvůli zmíněným potenciálním problémům s kódováním, ale hlavně kvůli velikosti dat (co když někdo bude chtít vložit obrázek, vodoznak, klipart, dlouhý text, složitě formátovaný text...).
Presne, nekteri jsou holt nepoucitelni:

omezeni Delphi: DB.dsMaxStringSize = 8192
omezeni MSSQL: 8000 single bytes, 4000 UTF16 chars
omezeni Firebird: 32765 bytes
etc...

 

S rychlou odpovědí můžete používat BB kódy a emotikony jako v běžném okně pro odpověď, ale daleko rychleji.

Upozornění: do tohoto tématu bylo naposledy přispěno před 120 dny.
Zvažte prosím založení nového tématu.

Jméno: E-mail:
Ověření:
Křestní jméno zpěváka Gotta: