Autor Téma: zobrazeni poctu desetinnych mist v dbgridu  (Přečteno 3466 krát)

Offline rob.

  • Nováček
  • *
  • Příspěvků: 34
  • Karma: 0
zobrazeni poctu desetinnych mist v dbgridu
« kdy: 30-01-2013, 11:07:00 »
Ahoj, mam v MSSQL tabulku, jedno z poli uklada cenu jako desetinne cislo (v deklaraci tabulky jako typ real), tabulku zobrazuji pomoci dbgridu, pomoci Adoquery a insert vlozim hodnotu napr. 1,21 Dbgrid mi hodnotu zobrazi jako 1,21000003814697.
Vygoogloval jsem ze pomoci TFloatField(mojetabulka.FieldByName('cena')).DisplayFormat := '0.00'; si hodnotu zobrazim spravne jako 1,21 ale tim zobrazim vsechny hodnoty ve sloupci cena na 2 des mista i ta co jsou treba na 3 apod. Chtel bych hodnoty zobrazit na skutecny pocet desetinnych mist jaky byl zadan pri vlozeni, tj. kdyz zadam 8,3 bude tam 8,3, kdyz 6,125 bude se mi v dbgridu zobrazovat 6,125. Jak toho dosahnout ?

dekuji za radu.

Offline pepak

  • Guru
  • *****
  • Příspěvků: 1278
  • Karma: 28
    • Pepak.net
Re:zobrazeni poctu desetinnych mist v dbgridu
« Odpověď #1 kdy: 30-01-2013, 11:20:21 »
Leda tak, že místo číselného pole použiješ string. Jinak počítač buď vůbec neví, kolik desetinných míst jsi použil (float), nebo ví, že vždycky použiješ předem zadaný počet desetinných míst (BCD).

Offline rob.

  • Nováček
  • *
  • Příspěvků: 34
  • Karma: 0
Re:zobrazeni poctu desetinnych mist v dbgridu
« Odpověď #2 kdy: 30-01-2013, 11:35:36 »
diky, uz jsem na to prisel, staci pouzit
TFloatField(prematerialtable.FieldByName('cena')).DisplayFormat := '0.##';
Akorat si rikam jestli real je vhodny datovy typ pro ukladani ceny v databazi MSSQL, jestli nebude lepsi decimal na 2 desetinna mista. Pak by to i mohlo zobrazovat normalne.

Offline rob.

  • Nováček
  • *
  • Příspěvků: 34
  • Karma: 0
Re:zobrazeni poctu desetinnych mist v dbgridu
« Odpověď #3 kdy: 30-01-2013, 11:36:23 »
bez nutnosti nejakeho formatovani

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2775
  • Karma: 26
    • Verze Delphi: XE7 professional
Re:zobrazeni poctu desetinnych mist v dbgridu
« Odpověď #4 kdy: 30-01-2013, 11:41:42 »
Nemá MSSQL typ currency? Ale ináč sa používa formát desatinného čísla na 4 desatinné čísla.
Formát zobrazenia hodnôt si osobne nastavujem už DataSet-e.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Mi.Chal.

  • Guru
  • *****
  • Příspěvků: 566
  • Karma: 23
Re:zobrazeni poctu desetinnych mist v dbgridu
« Odpověď #5 kdy: 30-01-2013, 12:36:09 »
diky, uz jsem na to prisel, staci pouzit
TFloatField(prematerialtable.FieldByName('cena')).DisplayFormat := '0.##';
Akorat si rikam jestli real je vhodny datovy typ pro ukladani ceny v databazi MSSQL, jestli nebude lepsi decimal na 2 desetinna mista. Pak by to i mohlo zobrazovat normalne.

real a podobné není dobrý skoro na nic, kvůli nepřesnostem. Ukládat do toho navíc peněžní částky znamená neznalost základních pravidel v programování nebo jejich ignoranci :-). Takže použij něco s fixed point aritmetikou, v MSSQL to je ten zmiňovaný decimal, kde řekneš i na kolik celých a desetinných míst to chceš ukládat.

Měl bys to používat i v kódu, ale Delphi dřív decimal neměly, akorát currency. Jestli to přidali v pozdějších verzích nevím.

Offline František

  • Plnoletý
  • ***
  • Příspěvků: 247
  • Karma: 2
    • Verze Delphi: XE5, 10.1 starter (BDS2006, XE)
Re:zobrazeni poctu desetinnych mist v dbgridu
« Odpověď #6 kdy: 24-05-2015, 23:48:13 »
a ako presne pouzit to TFloatField(prematerialtable.FieldByName('cena')).DisplayFormat := '0.##';

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 1692
  • Karma: 69
    • Verze Delphi: D5,D2007, DXE, DXE2 + 2 poslední (Tokyo)
    • O Delphi v češtině
Re:zobrazeni poctu desetinnych mist v dbgridu
« Odpověď #7 kdy: 25-05-2015, 09:07:02 »
a ako presne pouzit to TFloatField(prematerialtable.FieldByName('cena')).DisplayFormat := '0.##';
No a čemu přesně nerozumíš? http://docwiki.embarcadero.com/Libraries/XE7/en/Data.DB.TNumericField.DisplayFormat
Embarcadero MVP - Czech republic

 

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: