Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.01.02;
Скачать: CL | DM;

Вниз

Индексирование в Paradox БД   Найти похожие ветки 

 
Script   (2004-12-03 10:50) [0]

Возникла такая проблемка(скорее всего смешная). Есть таблица в ней много полей и два индекса(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 10:58) [1]

А по какому условию происходит изменение?

Попробуй так:

for i:=1 to Count do
begin
  Table1.Edit;
  while <уловие> do
  Table1.FieldByName("Ochered").AsInteger:=Table1.FieldByName("Ochered").AsInteger+Step;
  Table1.Next;
end;


 
Script   (2004-12-03 11:09) [2]

Не. Условие тут не при чем. Пользователь тыкает на DBGrid на первую запись, вводит count и step. Потом нажимает Button и кусок очереди обрабатывается. Тут imho надо как-то отключить индексирование 8-)) чтобы сразу после изменения записи она не меняла своего положения, а то по Table.Next переход будет не на нужную запись а вообще хз куда.


 
ЮЮ ©   (2004-12-03 11:20) [3]

1)
Закрыть Table1
Выполнить запрос
 "Update Table SET Ochered = Ochered + " + IntToStr(Step)
Открыть Table1

2)
 Table1.DisableControls;
 Table1.IndexName:=""; // или "IND_FIO"
 твой цикл
 Table1.IndexName:="IND_Ochered";
 Table1.EnableControls;


 
ЮЮ ©   (2004-12-03 11:37) [4]

Вопрос на засыпку: "А почему очередь не уменьшается, а растет?" Муниципальноё жильё, небось, распределяете? :)


 
Script   (2004-12-03 11:55) [5]

В точку. 8-)))


 
ЮЮ ©   (2004-12-03 11:58) [6]

>и програмно изменить значения очереди у ряда челов на определенную велечину

Тогда 2) не пойдет, т.к. этот ряд определяется как раз их текущим номером.
А в 1 надо добавить
 WHERE Ochered >= <очередь первого кинутого чела>



Страницы: 1 вся ветка

Текущий архив: 2005.01.02;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.038 c
1-1103179481
markers
2004-12-16 09:44
2005.01.02
Отчёты


1-1103273697
Neznaika
2004-12-17 11:54
2005.01.02
Component


14-1102680374
Agent13
2004-12-10 15:06
2005.01.02
Windows XP


3-1102089690
MaxDDinc
2004-12-03 19:01
2005.01.02
Фиксирование изменений в БД MS SQL Server 2000


1-1103184634
aleshap
2004-12-16 11:10
2005.01.02
Каким образом можно сбросить буфер нажатых клавиш