Главная страница
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.047 c
10-1071784665
Temik
2003-12-19 00:57
2005.01.02
DCOM: как запустить в сети?


3-1102021579
ali_t
2004-12-03 00:06
2005.01.02
sql запрос в TQuery


4-1100614746
mishabik
2004-11-16 17:19
2005.01.02
Запуск приложения


14-1103011442
Gero
2004-12-14 11:04
2005.01.02
Аудио кассеты


1-1102925519
Алексей Петухов
2004-12-13 11:11
2005.01.02
определить координаты текста WMF