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

Вниз

Update - ограничение на кол-во записей?   Найти похожие ветки 

 
Grac ©   (2003-07-17 01:07) [0]

Запрос на обновление разряда рабочего из справочника профессий:

UPDATE "Test.dbf" a SET
a.Razr=(SELECT max(b.Raz) FROM "Profess2.dbf" b
WHERE b.TabN=a.TabN AND b.Profess=a.Profess)

На тестовом примере для 1000 записей все работает, но на реальных данных сегодня для 16000 записей выдала ошибку о нехватке памяти.
Я только начинающий в Дельфи. Это мой первый серьезный проект.
Как можно обойти ситуацию?
Мой запрос - неправильный? Лучше использовать поиск Lookup?


 
ЮЮ ©   (2003-07-17 03:11) [1]

>Мой запрос - неправильный?

Может у тебя структура неправильная? Если разряд указан в таблице Profess2, а a.Profess - ссылка на нужную запись в Profess2, то зачем ещё поле Razr и в таблице Test?


 
Grac ©   (2003-07-17 08:34) [2]

Структура правильная. Это дополнительное поле нужно для вычисления доплаты за межразрядную разницу, если рабочий работает не по основной профессии.


 
Sandman25 ©   (2003-07-17 11:06) [3]

А сколько памяти на машине? Может, действительно нужно добавить?


 
VAleksey ©   (2003-07-17 11:20) [4]

Делай порционное обновление по тысяче записей
Например
1) Select Max(b.TabN) from "Profess2.dbf" b

2) идешь циклом с приращением 1000
назначаешь параметры :aTabnum = 0 , :bTabnum := :aTabnum + 1000 и т.д.
3) Выполняешь обновление
UPDATE "Test.dbf" a SET
a.Razr=(SELECT max(b.Raz) FROM "Profess2.dbf" b
WHERE b.TabN=a.TabN AND b.Profess=a.Profess and
b.TabN >= :aTabnum and b.TabN <= :bTabnum)

С помощью этого способа ты можещь даже показать индикатор выполнения запроса на обновлени.
ЗЫ
Надеюсь ты уже научился работать с параметрами? Т.к. то что я написал выше - это только общие рассуждения на тему " Как можно обойти ситуацию?"




 
ЮЮ ©   (2003-07-17 11:51) [5]

При правильных структурах не выполняют такие Updat-ы на всю таблюцу и не хранят данные, клторые могут быть вычислены. На худой конец, пишут хорошего клиента, чтобы это значение записывалось в базу после манипуляций с одним работником, а не временами сразу по всем


 
Grac ©   (2003-07-17 12:29) [6]

Памяти 512. С параметрами работать умею. Всем спасибо :)
Думал, что кто-то сталкивался с такой проблемой.

> ЮЮ
Увы. Наряды вводятся каждую декаду, завод большой и вычисления сложные. Легче добавить дополнительные поля. Забить туда данные и потом выполнять сложные расчеты, отчеты и загрузку зарплаты в основную базу (Adabas).
Пока еще мне не хватает опыта.



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

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

Наверх




Память: 0.48 MB
Время: 0.013 c
4-20870
Зинец Виктор
2003-06-03 14:40
2003.08.07
Хочу, чтобы форма была поверх всех окон


1-20627
^^^Dragon^^^
2003-07-24 22:04
2003.08.07
Работа с директориями


11-20460
Romaizdurdoma
2002-11-27 23:09
2003.08.07
Переиндексация Paradox таблиц


3-20379
Хозявин М
2003-07-15 15:30
2003.08.07
Закрытие временной таблицы


14-20754
Всеволод Соловьёв
2003-07-21 09:43
2003.08.07
&from= тупизна немереная