![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Индексирование в Paradox БД [D7, Paradox]
Script © (2004-12-03 10:50:00)Возникла такая проблемка(скорее всего смешная). Есть таблица в ней много полей и два индекса(IND_FIO и IND_Ochered). Нужно отсортировать таблицу по очереди(Table1.IndexName:='IND_Ochered') и програмно изменить значения очереди у ряда челов на определенную велечину. Я делаю так:
for i:=1 to Count do
begin
Table1.Edit;
Table1.FieldByName('Ochered').AsInteger:=Table1.FieldByName('Ochered').AsInteger+Step;
Table1.Next;
end;
Проблема в том что когда изменяется значение очереди у первого чела, то таблица автоматически пересортируется и этот чел выпадает из ряда...короче полная х..ня получается. Пробовал писать перед началом цикла Table1.IndexName:='' не помогает(пересортируется по primary index). Вот такая глупая проблема. Помогите кто чем сможет 8-)
ЮЮ (2004-12-03 11:58:00) [1]>и програмно изменить значения очереди у ряда челов на определенную велечину
Тогда 2) не пойдет, т.к. этот ряд определяется как раз их текущим номером.
А в 1 надо добавить
WHERE Ochered >= <очередь первого кинутого чела>
Script (2004-12-03 11:55:00) [2]В точку. 8-)))
ЮЮ (2004-12-03 11:37:00) [3]Вопрос на засыпку: "А почему очередь не уменьшается, а растет?" Муниципальноё жильё, небось, распределяете? :)
ЮЮ (2004-12-03 11:20:00) [4]1)
Закрыть Table1
Выполнить запрос
'Update Table SET Ochered = Ochered + ' + IntToStr(Step)
Открыть Table1
2)
Table1.DisableControls;
Table1.IndexName:=''; // или 'IND_FIO'
твой цикл
Table1.IndexName:='IND_Ochered';
Table1.EnableControls;
Script (2004-12-03 11:09:00) [5]Не. Условие тут не при чем. Пользователь тыкает на DBGrid на первую запись, вводит count и step. Потом нажимает Button и кусок очереди обрабатывается. Тут imho надо как-то отключить индексирование 8-)) чтобы сразу после изменения записи она не меняла своего положения, а то по Table.Next переход будет не на нужную запись а вообще хз куда.
Александр Иванов (2004-12-03 10:58:00) [6]А по какому условию происходит изменение?
Попробуй так:
for i:=1 to Count do
begin
Table1.Edit;
while <уловие> do
Table1.FieldByName('Ochered').AsInteger:=Table1.FieldByName('Ochered').AsInteger+Step;
Table1.Next;
end;