Thread View: pl.comp.lang.delphi.bazy-danych
4 messages
4 total messages
Started by Bartek
Thu, 29 Jan 2015 13:59
DBText i ilość miejsc po przecinku
Author: Bartek
Date: Thu, 29 Jan 2015 13:59
Date: Thu, 29 Jan 2015 13:59
17 lines
1453 bytes
1453 bytes
Witam Podpowiedzcie czy można i jak to zrobić żeby dane wyświetlane na formularzu np. tak 12E-5, tylko tak 0,00012. Można to jakoś zrobić? W bazie (postgres) mam je zapisane w polu numeric (10,8) i chciałbym je wyświetlić właśnie tak 0,00012. Albo żeby przy zmianie jednostki przecinek mi się przesuwał np.0,00012 potem 0,12 potem 12 itd. Jedyne co mi przyszło do głowy to zamianę tego na stringa i zapisanie w bazie jako stringa, ale chyba to nie tędy droga. Można to jakoś formatować na wzór tego: FloatToStrf(zmienna,ffFixed, 100,8); Pozdrawiam Bartek
Re: DBText i ilość miejsc po przecinku
Author: wloochacz
Date: Thu, 29 Jan 2015 14:40
Date: Thu, 29 Jan 2015 14:40
38 lines
2301 bytes
2301 bytes
W dniu 2015-01-29 o 14:59, Bartek pisze:
> Witam
> Podpowiedzcie czy można i jak to zrobić żeby dane wyświetlane na
> formularzu np. tak 12E-5, tylko tak 0,00012.
> Można to jakoś zrobić?
Próbowałeś ustawić DisplayFormat i EditFormat dla pola?
Czyli:
(PostgreSQLQuery.FieldByName('Pole') as TNumericField).DisplayFormat
:= ',0.00######';
I ten kod wstawić w zdarzeniu AfterOpen PostgreSQLQuery.
No chyba, że masz pola dodane w edytorze pól DataSetu - to możesz tam to
po prostu Wpisać.
> W bazie (postgres) mam je zapisane w polu numeric (10,8) i chciałbym je
> wyświetlić właśnie tak 0,00012.
Jaki masz typ pola (TField) w Delphi? Chodzi mi o nazwe klasy tego pola.
> Albo żeby przy zmianie jednostki przecinek mi się przesuwał np.0,00012
> potem 0,12 potem 12 itd.
>
> Jedyne co mi przyszło do głowy to zamianę tego na stringa i zapisanie w
> bazie jako stringa,
Z takimi pomysłami to na 4programmers.pl zapraszam; tam to przejdzie. Tu
- niekoniecznie ;-)
> ale chyba to nie tędy droga.
Zdecydowanie nie.
> Można to jakoś formatować na wzór tego:
> FloatToStrf(zmienna,ffFixed, 100,8);
Tak też się da, trzeba obsłużyć zdarzenie OnGetText dla tego pola:
będzie coś takiego:
begin
Text := FloatToStrf(Sender.AsFloat, ffFixed, 100,8);
end;
--
wloochacz
Re: DBText i ilość miejsc po przecinku
Author: Bartek
Date: Thu, 29 Jan 2015 17:04
Date: Thu, 29 Jan 2015 17:04
31 lines
2171 bytes
2171 bytes
Witam
>Użytkownik "wloochacz" napisał w wiadomości grup
>dyskusyjnych:54ca465c$0$2642$65785112@news.neostrada.pl... Próbowałeś
>ustawić DisplayFormat i EditFormat dla pola?
>Czyli:
>(PostgreSQLQuery.FieldByName('Pole') as TNumericField).DisplayFormat
>:= ',0.00######';
> ten kod wstawić w zdarzeniu AfterOpen PostgreSQLQuery.
>No chyba, że masz pola dodane w edytorze pól DataSetu - to możesz tam to po
>prostu Wpisać.
No i super, dzięki to rozwiązanie się sprawdziło
Zrobiłem tak
Ulista.Form_lista.DBText7.DataSource := Ulista.Form_lista.DataSource_lista;
Ulista.Form_lista.DBText7.DataField := 'wskaznik';
(Ulista.Form_lista.ZQuery_lista.FieldByName('wskaznik') as
TNumericField).DisplayFormat:= ',0.00######';
I działa bez problemu, chociaż mam pytanie.
Co zrobić żeby zamiast kopek były przecinki, jak to zmiennie na
',0,00######'; to nie działa, pokazują się same zera.
No i jeszcze jedno pytanie, jak do tego co wyświetla DBText dodać jednostkę
np. [kw], lub [h] itd,
Normalnie zrobił bym tak Label1.Caption := zmienna + '[kw]';
No ale to nie działa w tym przypadku.
Pozdrawiam
Bartek
Re: DBText i ilość miejsc po przecinku
Author: wloochacz
Date: Thu, 29 Jan 2015 20:19
Date: Thu, 29 Jan 2015 20:19
62 lines
3467 bytes
3467 bytes
W dniu 2015-01-29 o 18:04, Bartek pisze:
> Witam
>
>> Użytkownik "wloochacz" napisał w wiadomości grup
>> dyskusyjnych:54ca465c$0$2642$65785112@news.neostrada.pl... Próbowałeś
>> ustawić DisplayFormat i EditFormat dla pola?
>> Czyli:
> >(PostgreSQLQuery.FieldByName('Pole') as TNumericField).DisplayFormat
>> := ',0.00######';
>> ten kod wstawić w zdarzeniu AfterOpen PostgreSQLQuery.
>> No chyba, że masz pola dodane w edytorze pól DataSetu - to możesz tam
>> to po prostu Wpisać.
>
> No i super, dzięki to rozwiązanie się sprawdziło
>
> Zrobiłem tak
>
> Ulista.Form_lista.DBText7.DataSource := Ulista.Form_lista.DataSource_lista;
> Ulista.Form_lista.DBText7.DataField := 'wskaznik';
> (Ulista.Form_lista.ZQuery_lista.FieldByName('wskaznik') as
> TNumericField).DisplayFormat:= ',0.00######';
>
> I działa bez problemu, chociaż mam pytanie.
> Co zrobić żeby zamiast kopek były przecinki, jak to zmiennie na
> ',0,00######'; to nie działa, pokazują się same zera.
Złośliwie to będzie, że kopki to mogą być siana...
Mniej złośliwie - RTFM!
Dla przedszkolaka - to (czyli ',0.00######') jest maska i nie ma nic
wspólnego z wyświetlaniem kropek lub przecinka jako separatora części
ułamkowej. Czy tam będzie kropka lub przecinek, zależy od ustawień
regionalnych systemu - i tak ma być.
Ale doczytaj sobie o konstrukcji masek w manualu - co ja będę się
powtarzał...
Tam jest jasno opisane, co oznacza przecinek, kropka,
0 i płotek...
> No i jeszcze jedno pytanie, jak do tego co wyświetla DBText dodać
> jednostkę np. [kw], lub [h] itd,
Tak samo - ustal odpowiednią maskę wyświetlania dla pola, w tym
przypadku będzie to (na przykład) taka:
'0,00## [h]' - godzina zapisywana jako wartość metryczna? Straszna lipa
i lenistwo - imho...
'0,00## [kW]' - a nie kw...
Jeśli to ma być pole edycyjne (np. TDBEdit), ustal odpowiednią maskę
(TField.EditFormat) dla edycji - bo inaczej nie będzie dobrze dla
użytkownika.
> Normalnie zrobił bym tak Label1.Caption := zmienna + '[kw]';
To nie jest normalnie. No chyba że wg standardów fachowców z
4programmers ;-)
Normalnie to będzie za pomocą maski.
Mniej normalnie, za pomocą zdarzeń TField.OnSet/OnGetText (zasada będzie
podobna jak przy labelu).
> No ale to nie działa w tym przypadku.
Co nie działa? Wszystko działa ;-)
--
wloochacz
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads