Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.08.15;
Скачать: [xml.tar.bz2];

Вниз

TDBGridEh   Найти похожие ветки 

 
bon   (2004-07-15 13:45) [0]

Доброго дня!
Уменя есть результат запроса

field1     field2    field3
 100        5,7      3,2
 100        4,5      7,2
 100        5,9      1,7

Как отобразить в Гриде

field1     field2    field3
 100        5,7      3,2
  -        4,5      7,2
  -        5,9      1,7
т.е. в столбце field1 не показывать повторения ???


 
Sandman25 ©   (2004-07-15 14:44) [1]

Можно сделать через вычислимое поле.
В OnCalcField пишем:
var
FieldAsInteger: Integer;
begin
 Field1AsInteger := Field1.AsInteger;
 if Field1AsInteger = PreviousFieldAsInteger{модульная переменная} then
   CalcField1.AsString := "-"
 else
 begin
   PreviousFieldAsInteger := Field1AsInteger;
   CalcField1.AsInteger := Field1AsInteger;
 edn;
end


 
bon   (2004-07-15 15:17) [2]

Sandman25 ©  (15.07.04 14:44) [1]
Сенк"с за совет,  помогло!!!


 
Johnmen ©   (2004-07-15 15:34) [3]

Хм...
А теперь попробуй походить в гриде вниз и особенно наверх...
:)))


 
Sandman25 ©   (2004-07-15 16:09) [4]

[3] Johnmen ©   (15.07.04 15:34)

Да, нехорошо получается :(


 
Sandman25 ©   (2004-07-15 16:31) [5]

А все из-за того, что с точки зрения реляционных СУБД порядок записей не важен.

select field1, field2, field3,
case
 when rowid = (select min(rowid) from t where field1=a.field1)
 then cast(field1 as char(10))
else
 cast("---" as char(10))
end calcfield1
 from t a
 order by field1, rowid


 
Sandman25 ©   (2004-07-15 16:34) [6]

или вообще

select *,
case
when rownum = (select min(rownum) from a b where b.field1=a.field1)
then cast(field1 as char(10))
else
cast("---" as char(10))
end calcfield1
from
(select field1, field2, field3
 from t
order by field1
) a


 
Johnmen ©   (2004-07-15 16:52) [7]

>Sandman25 ©

Всё из-за того, что желаемое автором поведение идеологически неверно для НД, в которых предполагается двусторонняя навигация. И безусловно из-за Sandman25 ©   (15.07.04 16:31) [5]
:)


 
Sandman25 ©   (2004-07-15 17:04) [8]

[7] Johnmen ©   (15.07.04 16:52)

Почему двусторонняя навигация является препятствием? При отображении на бумаге именно так и делают часто.
Возможно, автору лучше использовать какой-нибудь DBTreeView, тогда данные можно будет группировать по Field1.


 
Johnmen ©   (2004-07-15 17:09) [9]

>Sandman25 ©   (15.07.04 17:04) [8]

Потому, что на бумаге мы видим результат односторонней навигации...


 
Sandman25 ©   (2004-07-15 17:14) [10]

Ну, в общем смысле, да. Меня запутало, что мы можем пальцем по листу водить в любом направлении, даже по диагонали :)


 
Johnmen ©   (2004-07-15 17:15) [11]

:)


 
TohaNik ©   (2004-07-15 17:51) [12]

Класс


 
bon   (2004-07-22 16:09) [13]

Какие будут ещё идеи?


 
Sandman25 ©   (2004-07-22 16:11) [14]

Перекачать данные в ClientDataSet с аналогичной структурой + еще поле.


 
Соловьев ©   (2004-07-22 16:13) [15]

ИМХО, нарушается 1-я нормальная форма. Я бы сделал действительно с TreeView, или 2 грида - мастер и детайл


 
Johnmen ©   (2004-07-22 16:24) [16]

>Какие будут ещё идеи?

А у тебя за неделю так ни одна и не появилась ?!
:)


 
Sandman25 ©   (2004-07-22 16:28) [17]

[16] Johnmen ©   (22.07.04 16:24)

"а зачем? Есть же форум..." (c) Соловьев



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2004.08.15;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.031 c
1-1091547036
Hyboid
2004-08-03 19:30
2004.08.15
Перехват клавиатуры


4-1088666904
Wistler
2004-07-01 11:28
2004.08.15
Работа с пользователями в домени WinNT


1-1090530472
Black-Grin
2004-07-23 01:07
2004.08.15
OnException


8-1085346895
AGGRESSOR
2004-05-24 01:14
2004.08.15
SndVol32 в WinXP


9-1083228212
xman
2004-04-29 12:43
2004.08.15
ГРАВИТАЦИЯ В КОСМОСЕ2





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский