Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Genereal SQL error [D6, MS Access]


_sulent ©   (2004-12-08 07:29:00) 

Вот запрос:
delete * from table1
where code in (select code from table2)


Подскажите что может быть. Первый раз запрос выполняется, а на второй выдает ошибку:
General SQL error
Out of memory

Это все выполняется на ms Access, в table2 около 29000 записей, а в table1 около 100000.

Подскажте что может быть здесь не так, и в чем проблема. Судя по памяти, запрос должен выполниться без особых проблем. Cel 1.7, 256 Mb.

Заранее благодарен!


sniknik   (2004-12-08 11:20:00) [1]

ты чегото путаеш, обычно как раз помогают. (если вопрос и его хозяин адекватны ;о))

послал. конект там легко меняется (настроен на аксесовскую базу только имя на свою поменяй),
проверяй тразакцию запросом
BEGIN TRANSACTION
после твой удаляющий запрос
дальше
COMMIT TRANSACTION
и (повтор)
BEGIN TRANSACTION
следующий удаляющий запрос (на котором у тебя говориш вылет...) что ADO скажет?


_sulent   (2004-12-08 11:05:00) [2]

если будет не трудно, перешли... но уже впринципе нашел выход... немного не правильный, но главное работает ;)
Спасибо а помощь и что не отказали, как это обычно бывает! :)


sniknik   (2004-12-08 11:00:00) [3]

> да не придирайся, я просто описал все...
никто не придирается. проверь [6] (если долго переделывать возьми прогу какуюнибудь где можно запросы на ADO проверить. могу даже выслать.)


sniknik   (2004-12-08 10:57:00) [4]

> Коль, ты что-то напутал...:)
точно лоханулся. (почти сразу понял но уже от инета отключился и на работу нужно... уже доехал ;о))


_sulent   (2004-12-08 09:19:00) [5]

да не придирайся, я просто описал все...


Johnmen   (2004-12-08 09:17:00) [6]

>sniknik ©   (08.12.04 08:42) [7]
>вместо except делай finally

Коль, ты что-то напутал...:)


sniknik   (2004-12-08 08:42:00) [7]

черт третий "глюк" пропустил, вместо except делай finally (все одно ошибку не обрабатываеш)


sniknik   (2004-12-08 08:40:00) [8]

ну вот стоит только показать код (даже такой мизерный) а уже 2 глюка видно...
(ну или то что я воспринимаю практически глюком ;о)))

первое к аксесу обращаешся через BDE, второе транзакцию делай sql-ой командой (как и остальное)

и еще (когда избавишся от описанных "глюков") в нормальном варианте на транзакцию влияет параметр реестра
MaxLocksPerFile
Данный параметр запрещает превышение определенного числа в транзакциях, выполняемых ядром Microsoft Jet. Если число попыток блокировки в транзакции превышает это значение, транзакция разбивается на две части, занесение в которых производится независимо. Этот параметр был добавлен для предотвращения срывов на сервере Netware 3.1 при превышении предела блокировок Netware, а также для повышения быстродействия при работе как с Netware, так и с NT.

хотя и написано что она делится на две, но при массовых удалениях у меня были случаи когда выдавало ошибку о превышении блокировок (которую BDE вполне может транслировать как нехватку памяти) даже в самом аксесе, увеличение этого значения от ошибки избавляло...


_sulent   (2004-12-08 08:24:00) [9]

Закрывается...
вариант как обычно
Form1.database1.StartTransaction;
try
 ...
 Form1.Database1.commit;
except
 Form1.database1.rollback;
end;


sniknik   (2004-12-08 08:03:00) [10]

> Проверили без транзации, прошло нормально.
а как ее делаеш? и закрываеш ли до второй?


_sulent   (2004-12-08 07:37:00) [11]

ну так работает, хоть не положена. Знаю что не положена, но факт не в этом, запрос сам выполняется... но ... один раз


ЮЮ   (2004-12-08 07:33:00) [12]

* по синтаксису не положена


_sulent   (2004-12-08 07:33:00) [13]

Проверили без транзации, прошло нормально. Но все-таки, что может быть не так, кто-нибудь может подсказать?


Наверх

Титульная страница Поиск, карта сайта Написать письмо