![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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 := 'Имя_Поля'; |