Главная страница
    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.036 c
9-1082996918
CraKerX
2004-04-26 20:28
2004.08.15
Интерфейс в GLscene


3-1090388023
Fynjy1984
2004-07-21 09:33
2004.08.15
Acces+ADOQuery


10-1021451546
Олег Лаукарт
2002-05-15 12:32
2004.08.15
Про устойчивость VisiBroker for C++ 4.1


14-1091193438
dtm
2004-07-30 17:17
2004.08.15
А книжечку по SQL Server 2К присоветуйте, а?


14-1090562370
MBo
2004-07-23 09:59
2004.08.15
Пятница. Большая пачка сложных задачек...





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский