Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.10.2014, 12:44   #1
bilibian
Форумчанин
 
Регистрация: 21.01.2014
Сообщений: 389
По умолчанию Как переместить строку в Clientdataset

Привет.

Есть ClientDataSet в связке с DbGrid и DataSource.
В ClientDataSet есть несколько строк и мне необходимо переместить одну из них, например вверх или вниз. Как это сделать?
bilibian вне форума Ответить с цитированием
Старый 24.10.2014, 13:12   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну вообще-то в базах такое не допускается. Т.е. физическое перемещение строк. По крайней мере далеко не во всех. Однако если в таблице сделать некое числовое поле с скажем так порядковым номером, и сортировать по нему - можно устроить иммитацию перемещения записи, изменив значение этого поля, и переоткрыв набор заново.
Иначе... Даже не представляю зачем это понадобилось, если честно.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.10.2014, 13:16   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Как вариант. Для этого нужно иметь некоторое поле с уникальным значением (но не ключ) и индекс по нем, на клиенте. Пусть это будет некий порядковый номер. Тогда при перемещении вверх значение этого поля предшествующей и текущей записей меняем местами. Аналогично при перемещении вниз. Возможно кто-то предложит другой, более простой способ, хотя сомневаюсь сильно
Цитата:
Даже не представляю зачем это понадобилось, если честно
Бывает, и не редко, например спецификация документа, того же приходного ордера. Или последовательностью вагонов в сцепке.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 24.10.2014 в 13:19.
Аватар вне форума Ответить с цитированием
Старый 24.10.2014, 13:20   #4
bilibian
Форумчанин
 
Регистрация: 21.01.2014
Сообщений: 389
По умолчанию

Stilet, база у меня используется в качестве хранения очереди, иногда нужно эту очередь немного перестроить и вот в этот момент мне понадобилась бы такая функция.
bilibian вне форума Ответить с цитированием
Старый 24.10.2014, 13:33   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
спецификация документа, того же приходного ордера. Или последовательностью вагонов в сцепке.
Тю, ну так это делается как я и сказал (а ты подтвердил) специальным полем порядкового номера
А вот сам DBGrid и прочие компоненты тогда не очень подходят для этого... ИМХО.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.10.2014, 13:46   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А в гриде и не надо править. Или кнопочки перемещения вверх/вниз, или драгдроп. А в обработчике обновление датасета и AppleUpdate коль это клиентдатасет
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 24.10.2014, 14:09   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А ДБГрид позволит такие драгдропы?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.10.2014, 15:36   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
А ДБГрид позволит такие драгдропы?
http://delphiworld.narod.ru/base/dra...o_dbgrids.html
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 24.10.2014, 22:52   #9
bilibian
Форумчанин
 
Регистрация: 21.01.2014
Сообщений: 389
По умолчанию

А может быть существует компонент в котором уже предусмотрен такой функционал?
bilibian вне форума Ответить с цитированием
Старый 25.10.2014, 10:54   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Может и существует, но я о нем не знаю.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как переместить строку ListBox вверх и вниз Aleksandr Общие вопросы Delphi 1 18.04.2011 16:16
Переместить строку и данные в ячейку kinogruppa Microsoft Office Excel 7 22.09.2009 21:53
Как переместить DXImageList ? SG13 Gamedev - cоздание игр: Unity, OpenGL, DirectX 9 30.03.2008 11:54
Как переместить картинку? Костя Помощь студентам 2 23.12.2006 17:53