Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.08.07;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.008 c
1-20475
Сергей Енин
2003-07-23 13:11
2003.08.07
Работа с Word.Application...


7-20822
Intell
2003-04-19 19:09
2003.08.07
Как связать расширение с прогой?


1-20510
aa5E1
2003-07-25 13:44
2003.08.07
Ожидание завершение запущеной программы


14-20725
Димыч
2003-07-16 23:34
2003.08.07
Объектно-ориентированная технология


1-20502
___Nikolay
2003-07-25 13:46
2003.08.07
D: Projects PrepareTraffic ... akt_kenk.dll





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский