Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Стобец - порядковый номер [D5, D6, Paradox]


Страницы:   1 2

Weare ©   (2003-10-24 16:09:00) 

Добрый день.

Ситуация такая: пользователь захотел видеть в своей таблице еще один столбец - порядковый. Причем, чтобы при изменении номера записи (непосредственно в самом столбце)она становилась в нужную позицию а все остальные номера пересчитались. Т.е. если запись была 8 по счету и этот номер поменяли на 4, то она становится четвертой и переписались бы все остальные номера.
Вопрос вот в чем: как можно это сделать с помощью быть может самих св-в таблицы или уже известными методами. А может решение какое-то уже и так существует. Очень не хочется кодировать все эти события: OnEdit, AfterPost, BeforeEdit, OnNewRecord, OnDelete, OnInsert.


Митяй   (2003-10-24 18:23:00) [21]

Weare © (24.10.03 16:09)
А ты можешь растолковать , какую цель преследует пользователь данным кандибобером, проще говоря на хрюня ему это надо, честно сказать не пойму?


kaif   (2003-10-24 18:22:00) [22]

Я не понимаю. У меня когда-то все это работало. Делаешь поле, делаешь индекс на него, берешь какой-нибудь TTable, устанавливаешь там свойства TableName, IndexField, и все работает. В событие AfterPost засунь команду DataSet.Refresh. Все должно работать.


Sandman25   (2003-10-24 17:48:00) [23]

>Может знаешь такие?

Для Paradox их нет.
Транзакцию у TDatabase надо использовать.


Vlad   (2003-10-24 17:44:00) [24]

Weare © (24.10.03 17:40) [12]
Какие хранимые процедуры ? У тебя Paradox вроде ?


Weare   (2003-10-24 17:40:00) [25]


> Sandman25 © (24.10.03 17:26) [11]
> Такое возможно, если для редактирования использовать хранимые
> процедуры.

Может знаешь такие?


Sandman25   (2003-10-24 17:26:00) [26]

>Но ведь должны же быть типовые примеры, связанные с порядковым номером и при добавлении или удалении записи номер бы рефрешировался.

Такое возможно, если для редактирования использовать хранимые процедуры.


Weare   (2003-10-24 17:20:00) [27]


> Sandman25 © (24.10.03 17:11) [9]
> Точнее,
>
> where nom between :nom1 and :nom2
>
> nom1 = 8
> nom2 = 25
>
> Перед этим придется из 25 сделать -25, потом проапдейтить
> на 8.

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

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


Sandman25   (2003-10-24 17:11:00) [28]

Точнее,

where nom between :nom1 and :nom2

nom1 = 8
nom2 = 25

Перед этим придется из 25 сделать -25, потом проапдейтить на 8.


Reindeer Moss Eater   (2003-10-24 17:09:00) [29]

Все это так, но пользователю неудобно будет записывать туда значния.

Я у тебя прочитал, что это желание самого пользователя


Sandman25   (2003-10-24 17:08:00) [30]

[5] Vlad © (24.10.03 17:06)

Можно еще update table set nom = nom + 1 where nom > :nom + Close/Open;


Weare   (2003-10-24 17:07:00) [31]


> Reindeer Moss Eater © (24.10.03 16:59) [3]
> Остальное сделает за тебя юзер, вводящий значения в это
> поле нужных записей.

Все это так, но пользователю неудобно будет записывать туда значния. Т.к. если у него, например, 50 записей. Он открывает таблицу, они сортируются в порядке возрастания номера. И допустим 23-ю запись еме нужно сделать 8-ой. Он меняет ее номер, но ведь восьмая уже есть и тогда ее нужно поменять на 9-ю и т.д. - неудобно.
А, кстати, есть ли в гриде или таблице уже какие-то встроенные решения нумерации записей.


Vlad   (2003-10-24 17:06:00) [32]

Если я правильно понял проблему, то ситуация следующая.
Пользователь меняет номер записи к примеру с 25-й на 8-ю.
При этом запись, которая раньше имела номер 8 должна стать 9-ой, 9-я становится 10-й, и так далее, до конца набора данных.
Если так, то простым способом тут не получится, все равно в цикле НД перебирать надо.


Sandman25   (2003-10-24 16:59:00) [33]

[2] Weare © (24.10.03 16:56)

Номер записи должен быть таким же полем БД, как и все остальные.


Reindeer Moss Eater   (2003-10-24 16:59:00) [34]

Очень не хочется кодировать все эти события

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


Weare   (2003-10-24 16:56:00) [35]


> Reindeer Moss Eater © (24.10.03 16:15) [1]
> alter table mytable add orderfield number;

Ты конечно извини, но я ничего не понял из твоего ответа. Если можешь, объясни поподробнее, "на пальцах".


Reindeer Moss Eater   (2003-10-24 16:15:00) [36]

alter table mytable add orderfield number;

И сортировать всегда по этому полю


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо