DBGrid z własnymi kolumnami

0

Czy możliwe jest, aby dodać do DBGrid'a własną kolumnę nie związaną z DataSourcem?
Mam DBGrid zasilany danymi z zapytania, ale potrzebowałbym wyświetlić dodatkową kolumnę, która wyświetlałaby dane wyliczane według pewnego algorytmu, do którego brałbym dane z kolumn pochodzących z zapytania.

+-----+-----+-----------------+
|  A  |  B  |  C              |
+-----+-----+-----------------+
| 129 |  34 | wyliczenia(A,B) |
+-----+-----+-----------------+
|  75 | 232 | wyliczenia(A,B) |
+-----+-----+-----------------+

A i B : kolumny z danymi za zapytania
C : własna (dodana) kolumna wyliczająca coś na podstawie danych z pól kolumny A i B

Rozważałem możliwość użycia StringGrid'a, ale po chwili przymierzenia go do mojej aplikacji stwierdziłem, że będzie on ostatecznością ;)

Jest w ogóle możliwe i sensowne rozwiązanie mojego problemu z DBGrid'em, czy powinienem zainteresować się jakimś innym sposobem?

Za wszelką pomoc będę wdzięczny.

1

Do DBGrida nie dodasz poniważ/azaliż/wżdy, jak już było milion razy napisane na tym forum - DBGrid nie przechowuje danych, on je tylko wyswietla.
Ale do DataSetu jak najbardziej możesz dodać takie pole, dwuklik na Query -> prawoklik w nowym oknie -> New field... reszte sobie doczytaj

0

Możesz to zrobić również po stronie SQLa, jakoś tak:
select poleA, poleB, poleA + poleB as Suma from dupa

0

O tym, że DBGrid tylko wyświetla dane, a nie przechowuje wiem (wyczytałem to w tych milionach wyjaśnień na forach) ;)
Miałem jednak nadzieję, że jest jakiś sprytny patent pozwalający wyświetlić coś w DBGridzie przez bezpośrednie odwołanie się do niego (coś w stylu StringGrid'a). No ale skoro nie ma takiej opcji, to nie ma :)
Za sugestię wielkie dzięki - zabieram się do szukania i czytania.

0

od tego są pola wyliczane

0
irmo napisał(a):

O tym, że DBGrid tylko wyświetla dane, a nie przechowuje wiem (wyczytałem to w tych milionach wyjaśnień na forach) ;)
Miałem jednak nadzieję, że jest jakiś sprytny patent pozwalający wyświetlić coś w DBGridzie przez bezpośrednie odwołanie się do niego (coś w stylu StringGrid'a). No ale skoro nie ma takiej opcji, to nie ma :)
Za sugestię wielkie dzięki - zabieram się do szukania i czytania.

Są gridy które obsługują zdarzenie "OnGetValue", "OnGetText" czy podobne, na przykład cxGrid DevExpress-a, ale przy dużych tabelach znakomicie spowalnia to wyświetlanie danych. Patent z polami ftCalculated jest najprostszy.

0

co do grida devexpressa to filozofią bardziej przypomina on zwykłego grida z dodaną możliwością pobierania danych z bazy niż dbgrida.

0
abrakadaber napisał(a):

co do grida devexpressa to filozofią bardziej przypomina on zwykłego grida z dodaną możliwością pobierania danych z bazy niż dbgrida.

Nie bardzo rozumiem, na jaką różnicę chciałeś zwrócić uwagę :) Korzystam z niego od x lat do prezentacji bazodanowych i sprawdza mi się świetnie. Powiem więcej - nie widziałem żadnego innego (db)grida dorównującego mu możliwościami. :)

0

nigdzie nie napisałem, że jest zły, ba jest bardzo fajny. Zwróciłem tylko uwagę, że działa inaczej niż standardowy dbgrid a co za tym idzie trzeba się go nauczyć używać najpierw

0
abrakadaber napisał(a):

nigdzie nie napisałem, że jest zły, ba jest bardzo fajny. Zwróciłem tylko uwagę, że działa inaczej niż standardowy dbgrid a co za tym idzie trzeba się go nauczyć używać najpierw

Ja też nie twierdziłem, że go krytykujesz :) OK, teraz już rozumiem o co chodziło. No jest bardzo specyficzny, ale jak się załapie że ma dwie warstwy - warstwę bazodanową i warstwę prezentacji - to już jest z górki :)

0

Dzięki pytek_ raz jeszcze. Po malutkim dostosowaniu mojego kodu do Twojej sugestii (DataSet -> New field -> ...) wszystko zadziałało tak, jak zadziałać miało.

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