|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Помогите внести изменения в БД
У меня есть БД на Access, суть в том что там есть поле дата_постановки и очередь. Надо отсортировать по дате и проставить очередь от 1 и до последней записи, и это должно происходить по нажатию на кнопке, т. к из базы могут удаляться данные. Таблица отображена в DBGrid, SQL по сортировке работает, но я не знаю как в Delphi это реализовать (просто до этого писала на ASP). Помогите пожалуйста!
|
#2
|
||||
|
||||
Не знаю как у тебя реализовано, поэтому каркас такой:
На форме есть DBCon:TADOConnection он подключен к базе и находится в активизированном состоянии. OrdQuery:TADOQuery у него свойство Connection = DBCon. OrdDataSource:TDataSource и OrdGrid:TDBGrid, тут думаю связка понятна. Теперь "шаблонный" код: Код:
begin with OrdQuery do begin Close; SQL.Text:='SELECT * FROM [тут_имя_твоей_таблицы] ORDER BY [Тут_Имя_Или_Номер_Поля_По_Которому_Сортировать]'; try Open; except on E:Exception do ShowMessage(Format('Ошибка %s при открытии набора данных',[E.Message])); end; end; end; |
#3
|
|||
|
|||
Отсортировать то у меня получилось при помощи SQL, не мне обновить поле очередь у всех записей при том очередность должна ставиться по дате от более поздней к более ранней. Проблема именно записать в каждую строчку таблицы. Я думаю что при помощи update, но я не знаю как она будет брать именно ту запись которую мне надо.
|
#4
|
||||
|
||||
Что-то я не пойму. Поле это может изменятся для записей? Если да, то зачем оно вообще в базе, сделай автовычисляемое на момент запроса и все.
ЗЫЖ В таблице есть уникальное поле? |
#5
|
|||
|
|||
А если удалили строчку в таблице то очередность должна пересчитаться, как тогда это будет работать?
|
#6
|
|||
|
|||
Как вариант предлагаю:
если те поля, по которым нужно сортировать, индексированы, то сортировать их можно так: Код:
Table1.IndexName := 'Имя_Поля'; |