[Delphi] Dlaczego zamiast string mam napis MEMO

0

Mam sobie raporcik Qreports i wybieram z bazy zapytanie.
Baza to POSTGRES: mam takie przykladowe zapytanie:

SELECT '*' || id || '*' FROM orders;

Wynik w bazie jest prawidlowy bo jest taki:
1
2
3
4
ale kiedy te same dane wstawiam do komponentu DBText lub DBEdit
to mam napisz (MEMO) ??? czy to trzeba jakos rzutowac te dana na string czy jak?
Ale kiedys tak zrobilem i dobrze mi wysweitlalo dane nie wiem co jest teraz.
pole w bazie jest typu INT4

0
masterO napisał(a)

ale kiedy te same dane wstawiam do komponentu DBText lub DBEdit

Jak wstawiasz? To są komponenty bazodanowe. Łączysz je z odpowiednimi kontrolkami, z których one sobie pobierają to, co chcą, ponieważ wiedzą z jakiego pola mają korzystać. W takiej sytuacji zrobiłbym nowe pole(w DataSecie), jako Calculated. Następnie w zdarzeniu OnCalcFields, coś w ten deseń:

pole_calculated:=''+pole_id+'';

No i kontrolkom DBText, czy DBEdit ustawiasz jako pole bazodanowe, właśnie to pole typu calculated

0
SELECT CAST('*' || id || '*') as varchar(30) FROM orders;

a kolega Juhas ma za zadanie wytłumaczyć dlaczego tak :)

0
Misiekd napisał(a)
SELECT CAST('*' || id || '*') as varchar(30) FROM orders;

a kolega Juhas ma za zadanie wytłumaczyć dlaczego tak :)

ekhm, za karę? ;)

Otóż ID jest zapewne typu BIGINT. Gwiazdki jak wiadomo są varcharem. W związku z tym trzeba przeprowadzić konwersję na typ varchar. A konwersję robi się właśnie w taki sposób, jak wyżej :)

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