|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
18.08.2008, 17:36 | #1 |
Форумчанин
Регистрация: 01.08.2008
Сообщений: 383
|
сдвиг данных в dbgrid'e на 1 вверх
Помогите справиться с такой задачей.На форме есть 2 dbgrida.
В одном-таблица из access'a с 8 столбцами (подключаюсь через ado).Во втором нужно изобразить ту же таблицу, что и в первом,только данные должны быть сдвинуты вверх на 1.Последняя запись = разности 2 последних ячеек из 1 таблицы. допустим,в первой таблице числа: 1 2 5 во второй должны быть: 2 5 3 Может,у кого-нибудь есть идеи как это реализовать? |
18.08.2008, 18:44 | #2 |
Форумчанин
Регистрация: 28.07.2007
Сообщений: 361
|
Без переписывания компонента никак, и то, переписывание не даст гарантии корректной работы, поэтому геморрой с реализацией идеи может не оправдать конечный результат. Рекомендую от идеи отказаться....
TDBGrid происходит от TCustomDBGrid, который происходит от TCustomGrid. В TCustomGrid есть свойство RowHeights[..] в разделе protected, можно создать ту же иерархию компонентов от TCustomGrid, с тем же кодом но свойство RowHeights можно перенести в раздел public, тогда верхнюю строку таблицы можно просто скрыть через RowHeights. Последний раз редактировалось Rik; 18.08.2008 в 19:17. |
18.08.2008, 19:58 | #3 |
Форумчанин
Регистрация: 01.08.2008
Сообщений: 383
|
Rik,может возможно сделать это с помощью запросов на sql?
Последний раз редактировалось kate158; 19.08.2008 в 09:03. |
22.08.2008, 19:53 | #4 |
Форумчанин
Регистрация: 28.07.2007
Сообщений: 361
|
С SQL тоже не выйдет. Чтобы рулить SQL запросом, нужно знать, какая запись с определенным ID находится в верхней строке DBGrid'a. В DBGrid'е отображаются данные из локального буфера DataSet'а. Какая запись локального буфера отображается в текущий момент в верхней строке DBGrid'a определить невозможно(если курсор стоит не на верхней записи). Тяжело реализовать механизм, при котором при прокрутке окна(не DataSet'a а самого окна, тут нужно перехватить сообщения о прокрутке, посылаемые окну, а в DBGrid'e прокрутка окна может происходить вообще без посылки сообщений), должны обновиться данные в другой таблице. Если даже это бы и удалось, нагрузка на ресурсы машины будет непомерная, а про сеть я уж и не говорю...
Последний раз редактировалось Rik; 22.08.2008 в 19:57. |
22.08.2008, 21:15 | #5 |
детский тренер
Форумчанин
Регистрация: 08.06.2007
Сообщений: 532
|
добавляешь в таблицу поле порядковое.... Нумерация строк... И используешь 2 Query.... Берешь номер строки,где активная строка,а во втором запросе деаешь запрос записей, в которЫх порядковый номер больше номера из первого запроса....
для подсчета разности нужно подумат отпишу посже...
Я злой и страФный серррый воФк, и в пАрАсятах знаю толк - ppp ppp pp p pp pp
|
22.08.2008, 22:20 | #6 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Pitbull, позволю взять на себя смелость (или наглость ;-) ) ответить за kate158
Насколько я понимаю, задача уже решена (Виталий aka Stilet решил её). Решение здесь, на форуме. И, если я правильно понял, то решили её на клиенте (что и проще и понятнее). SQL крайне неудобная штука, когда возникает необходимость обрабатывать взаимодействие строк (rows). Только не надо мне рассказывать, что с помощью SQL можно сделать всё и даже чуть больше. я не буду спорить. Есть даже любители решать сложные задачи именно с помощью навороченного SQL кода :-)) а я всегда стоял за то, чтобы решение было МАКСИМАЛЬНО простым... Зачем закручивать шуруп, когда можно забить гвоздь? -) оп-с.. сорри за всё вышенаписанное. что-то меня на графоманию пробило. Просто я хотел сказать, мой совет — мужики, не ломайте голову над уже решённой задачей! (По крайней мере, пока сама kate158 не попросит о другом...) |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Присвоить значение поле в DBGrid'e компоненту DBLookupComboBox2 | фЁдОр | БД в Delphi | 14 | 07.09.2012 14:26 |
циклический сдвиг массива | goacher | Общие вопросы C/C++ | 4 | 28.05.2008 20:11 |
циклический сдвиг массива | goacher | Паскаль, Turbo Pascal, PascalABC.NET | 4 | 27.05.2008 22:26 |
как с помощью TScrollBar перемещать содержимое TMemo вверх или вниз | Sanprof | Общие вопросы Delphi | 3 | 04.03.2008 00:39 |
Сдвиг файла | OrdJONY | Общие вопросы Delphi | 13 | 21.12.2007 22:22 |