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

Вниз

Проблема в выводом последней части запроса   Найти похожие ветки 

 
Alex Chu   (2002-07-16 10:56) [0]

Мужики! Есть банальная проблема, с которой должны сталкиваться были все, кто писал складские или любый другие программы с документообротом...

Суть в том, что при запросе списка документов, надо в dbgrid"е показывать последние, т.е. нижнюю часть запроса (в хронологическом порядке).

select * from DOC order by -iddoc

выплевыется ТО, что надо, есессно, снизу-вверх.

Может есть какая-нить компонента, "переворачивающая" dbgrid?


 
Johnmen   (2002-07-16 10:59) [1]

ASCENDING/ DESCENDING
В ORDER BY
Что написано во всех учебниках !



 
Alex Chu   (2002-07-16 11:15) [2]

Дяденька, ну я не стал бы спрашить компоненту или иной способ решения проблемы, будь полным лохом!

desc в order by абсолютно аналогично использованию order by -iddoc, т.е. выплевывает ТО, что надо, но снизу-вверх, следовательно, последний документ в верхней части dbgrid"а...

А мне надо, чтобы выплевывалось сверху-вниз...и последний (по времени) документ был внизу...


 
Johnmen   (2002-07-16 11:21) [3]

Что-то неясно...Чем не устраивает ORDER BY по времени ?


 
fnatali   (2002-07-16 11:22) [4]

Похоже ему надо что-то типа Query.Last или нажать соответствующую кнопку на DBNavigatore :)


 
Alex Chu   (2002-07-16 11:25) [5]

Суть в выводе последних документов снизу-вверх, с возможностью перемещаться вверх к более поздним документам...т.е. запрос не должен быть ограничен датами..
датами юзер ограничивает список при использовании фильтра, который реализован.


обычный же запрос с использованием desc выплевывает снизу-вверх, т.е. для просмотра более ранних док-в,надо перемещаться сниз списка.

ведь человек пишет на листе сверху-вниз, следовательно и вывод списка в таком порядке более естесственнен....более эстетичен.

Один знакомый сказал, что есть компоненты, которые "переворачивают" вывод dbgrid"а...


 
Alex Chu   (2002-07-16 11:27) [6]

Спасибо, конечно же, Наташа, но "нажать вниз", или перейти к последней записи, - это требует передачи всех данных запроса на клиента....т.е. ТРЕБУЕТ ВРЕМЕНИ, которое и хочется съэкономить, выплевывая только ТО, что можно показать в видимой части грида...


 
Johnmen   (2002-07-16 11:28) [7]

Еще раз. Зачем переворачивать окно (dbgrid), если можно перевернуть то, что ты в него видишь ?


 
mnefedov   (2002-07-16 11:30) [8]

Можно использовать QuantumGrid - он поддерживает любые сортировки конечного набора данных.
А можно так базу построить чтобы можно было бы написать примерно так:
select * from doc order by DocDate DESC, DocDayNumber ASC

то бишь для этого у документа должна быть дата создания (без времени), уникальный сквозной номер и уникальный номер для одного дня. в результате видим последние документы, отсортированные в порядке их создания в течение дня...


 
Alex Chu   (2002-07-16 11:33) [9]

ВО! мне, по большому счету все равно, что переворачивать: входящие данные или сам грид...
слово "переворачивать" звучит утрированно.

2mnefedov : к сожалению, БД уже есть и данные в ней уже есть...
а сортировать надо по времени создания, т.к. сегодня можно содавать документы, за прошлую дату.

Как перевернуть входящие данные, сохраняя направление сверху-вниз????


 
mnefedov   (2002-07-16 11:36) [10]

моя аська 12414838


 
Sergey13   (2002-07-16 11:38) [11]

2Alex Chu (16.07.02 11:25)
Ну дык тебе fnatali © (16.07.02 11:22) и написала. Открой запрос с нормальным Order By(по возрастанию) Query.Open и перейди на последнюю запись Query.Last. Соответственно в гриде курсор уйдет вниз на последнюю запись. Для просмотра более поздних листай вверх. В чем проблема то, зачем грид то "переворачивать"?


 
Alex Chu   (2002-07-16 11:45) [12]

Ну вы, блин, даете!!!
мне не надо качать все данные на клиента!!!
а если их не закачать, переход на поледнюю не имеет смысловой нагрузки!!


 
Johnmen   (2002-07-16 11:50) [13]

Ну ты, блин, даешь ! Даже не указал тип СУБД !
:)))


 
Sergey13   (2002-07-16 11:53) [14]

2Alex Chu (16.07.02 11:45)
Ну ты блин даешь! Ты же сам писал, что запрос датой ограничивать не надо. Так как же ты не все данные на клиента потянешь?


 
kaif   (2002-07-16 11:59) [15]

Вопрос, который задает Alex Chu, чрезвычайно интересен. Действительно, существует такая проблема. Я из-за этого вынужден использовать DESC в запросах, давая юзеру выбрать порядок. И все равно, мне не нравится такое решение, так как нормальный человек не привык видеть список "вверх ногами", даже если его поставить перед выбором из двух зол "Или тормоз - или так".
И Alex Chu прав. И главное, он сумел взглянуть проблеме в лицо и правильно сформулировал ее решение:
нужен DBGrid, выводящий записи из набора на экран в обратном порядке, то есть скроллинг назад, а не вперед. Естественно, что такой Grid должен работать с набором, уже упорядоченным наоборот (DESCENDING) и при этом делать fetch первых N записей набора, отображая их снизу вверх в Canvas.
К сожалению, я не знаю такого компонента, хотя было бы чрезвычайно полезно его иметь. Но я полагаю, что можно переписать текст TDBGrid или его предка. Наверняка там есть место, где происходит развертка ячеек при прорисовке в Canvas. Странно, что это вопрос до сих пор не звучал. И даже не был понят, когда, наконец, прозвучал.


 
Alex Chu   (2002-07-16 12:00) [16]

Вопрос практически решен, спасибо mnefedov!

И всем остальным МАСТЕРАМ тоже...спасибо за участие!
--
Народ, вы сначала вдумайтесь в вопрос...уточните, если, что не понятно, а потом ругайте вопрошавшего!
Или не отвечайте ему вообще, если считаете, что он не достоин Вашего внимания...
Е-мое, все НАСТОЛЬКО умные....что просто стыдно иной раз что-то спрашивать.


 
kaif   (2002-07-16 12:06) [17]

Уверяю вас, даже если ограничивать зарос датой, это ограничение выставляет пользователь. Поэтому большой диапазон дат, выставленный пользователем вполне вероятен. Предположим, поток документов крайне неравномерен... Сетка с разверткой "наоборот" -идеальное решение, так как позволяет:
1. видеть документы в привычном порядке сверху вниз
2. не требует fetch всех записей
3. не имеет ограничений на диапазон дат, благодаря второму условию.
4. сразу показывает наиболее актуальные (свежие) документы.


 
Desdechado   (2002-07-16 12:10) [18]

Вообще, постановка интересная :)
Сформировать на сервере набор данных, но читать его с конца, наполняя грид как в тетрисе стакан.
имхо, веселенькое занятие :)


 
Johnmen   (2002-07-16 12:14) [19]

>kaif © (16.07.02 11:59)

Проблема в тормозах отображения последних записей НД. Так ?
Если да, то есть набор компонент "gb_DataSets Components"
, решающих эту проблему (дополнение к IBX и FIBPlus).


 
kaif   (2002-07-16 12:17) [20]

2 Desdechado © (16.07.02 12:10)
DBGrid сам по себе не требует fetch всех записей. А здесь юзеру будет предоставлена оперативная возможность самому управлять количеством fetch. Я не вижу здесь никакого криминала. В MSSQL и в IB 6.5 есть возможность возвращать N строк в самом SELECT. В IB6.0 можно написать хр.процедуру для этого и так решить вопрос.. Но такой грид все равно имеет право на существование.


 
Desdechado   (2002-07-16 12:44) [21]

2 kaif © (16.07.02 12:17)
вообще-то я ни на какой криминал не намекал. и если задача есть, ее надо решать.
я просто попытался сформулировать попроще то, как я понял постановку автора.
а то, что грид не работает с запросом напрямую, истина очевидная :)


 
Sergey13   (2002-07-16 13:33) [22]

2Alex Chu (16.07.02 12:00)
>Вопрос практически решен, спасибо mnefedov!
Ну дак поделись решением. Видишь, тут народ заинтересовался.



 
roottim   (2002-07-16 13:45) [23]

точно ... поделись!!!

у меня юзеры на складе 3 года работают...
и очень даже довольны видеть накладные и прочее в порядке DESC, то что последнее всегда лежит сверху, им нравится.
имхо.. ненадо городить грид с такой возможностью, надо приучить юзера! :))


 
VAleksey   (2002-07-16 14:13) [24]


> надо приучить юзера! :))

Да, да да. И еще. Если что-то не можешь реализовать, то как раз это пользователю и не нужно :)) !


 
Fiend   (2002-07-16 14:58) [25]

То Alex Chu

Признайся в натуре как добился требуемого результата, бы тоже хотел у себя такое делать не через Desc


 
kaif   (2002-07-16 16:00) [26]

Скачал gb_DataSets Components по совету Johnmen. Очень остроумная вещь. Правда еще не попробовал. Жаль, что ничего раньше не знал об этих компонентах. Они умеют перезапрашивать части набора основного запроса, на ходу соображая, какие условия в WHERE нужно добавить, обеспечивая, таким образом, как бы "навигацию" по набору в сотни тысяч строк.
Хотя, все же хорошо бы свойство иметь TDBGrid.ReverseDisplay. Это мое мнение и никто меня не переубедит. Небось, TLabel-ов под углом 45 градусов наверняка можно надыбать штук 10 версий... А ReverseDisplay явно имеет право на жизнь.



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

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

Наверх





Память: 0.64 MB
Время: 0.031 c
1-13678
hard
2002-07-22 23:32
2002.08.05
Как отслеживать минимизацию формы?


1-13605
vich
2002-07-23 03:35
2002.08.05
Как сравнить дату и время с системной?


6-13753
Sheriff
2002-05-23 13:24
2002.08.05
широковещательные UDP пакеты в подсетях.


4-13858
Nubie
2002-05-30 05:19
2002.08.05
Как загрузить ЕХЕ в память?


14-13791
Чувак13
2002-07-10 14:04
2002.08.05
про Дельфи и базы данных





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