DBGrid - formatowanie wartości

0

Witam wszystkich i proszę o pomoc.

Mapisałem bazę danych opartą na ADO baza na MS SQL. Po wykonaniu SELECT`a otrzymuję np. NazwęTowaru, Ilość i Cenę. Wszystko jest wyświetlane w DBGridzie bardzo ładnie oprócz ceny, ponieważ w bazie danych mam wartość np. 145,3 i taką mi wyświellna. Bardzo mi zależy, aby w kolumnie Cana była wyświetlana zawsze z dwoma miejscami po przecinku, czyli 145,30 lub 100,00.
Zupełnie nie wiem jak to zrobić. Próbowałem załatwić to po stronie SQL`a, ale jedyne jakie znam do zaokrąglanie wyników to polecenie ROUND(cena, 2) - to pelecenie załatwia mojego problemu, ponieważ zaokrągli tylko 100,566 na 100,57 i to wszystko.

Może jest jakiaś metoda na ustalenie, że np. trzecia kolumna w ADOQuery ma być zformatowana do Currency?

Bardzo proszę o pomoc i dziękuję za każdą wskazówkę.

0

ogólnie to 2 miejsca po przecinku jakiejś liczby można przedstawić tak:

var cena:real;

label1.Caption:=FloatToStrF(cena,fffixed,6,2);

gdzie ta końcowe 2 to jest liczba miejsc po przecinku, ale jak się to robi w SQL itd. to nie mam pojęcia. Sam się uczę Delphi od dwóch tygodni :)

0

Dzięki za pomoc. Niestety tę funkcję znam i nie wiem jak można ją wykożystać z kontrolką ADO. Ponieważ, jedna kontrolka służy mi do wyświetlania danych na DBGridzie a później wykożystuje ją do zasilenia QuickRep. I tu tak naprawdę pojawia się problem, ponieważ np. faktura wygląda beznadziejnie jak jest na niej wartość netto 100,3 a nie 100,30 itd. :( :(
Dlatego proszę o pomoc, ponieważ przeszukałem już chyba wszystko i nie mogę znaleŹć rozwiązanie mojego problemu.
Jestem wręcz zdesperowany, ponieważ do całej aplikacji nikt nie ma zastrzeżeń opróc tych cen na wydrukach ;(

0

Witam,
Dane w komórkach DBGrid można edytować przed ich wyświetleniem kożystając ze zdarzenia DBgrida. Nawiązując do twojego problemu możemy zrobić to w ten sposób:
Korzystamy ze zdarzenia DBGrida: OnDrawDataCell

procedure TfrmMagic.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
  Field: TField; State: TGridDrawState);
begin
  if Field.FieldName = 'CENA'  then  //Nazwa pola reprezentujęcego cenę 
    TFloatField(Field).DisplayFormat := '# ##0,00 zł';
end;

Wyjaśnienie:
Parametr Field reprezentuje pola DBGrida. Sprawdzamy czy pole Field jest polem które chcemy formatować. W naczym przypadku, rzutujemy to pole na typ TFloatField aby uzyskać dostęp do metody DisplayFormat. Teraz tylko wystarczy ustawić sposób wyświetlania danych w wybranym polu DbGrida. </delphi>

0

Bardzo Ci dziękuję. O to właśnie mi chodziło :D

1 użytkowników online, w tym zalogowanych: 0, gości: 1