Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.01.2008, 07:33   #1
Люся
 
Регистрация: 24.01.2008
Сообщений: 5
Вопрос ADO и VFP, помогите выяснить причину

Я работаю через ADO с VFP 7. Все работает прекрасно, но при добавлении 64 записи выходит сообщение "Too many variables" (Слишком много переменных). После перезапуска приложения все снова работает прекрасно до 64 записи.

Тоже самое происходит при перезаписи данных из одной таблицы в другую - 63 записи проходит, на 64 программа выдает ошибку.

Подскажите в чем причина ошибки и как ее устранить?

Последний раз редактировалось Люся; 24.01.2008 в 09:50. Причина: уточнение
Люся вне форума Ответить с цитированием
Старый 24.01.2008, 13:24   #2
Domovoy
Форумчанин
 
Регистрация: 24.10.2007
Сообщений: 254
По умолчанию

А ты попробуй вставить 63 записи и завершить транзакцию, а потом еще и т.д.
Domovoy вне форума Ответить с цитированием
Старый 25.01.2008, 06:24   #3
Люся
 
Регистрация: 24.01.2008
Сообщений: 5
По умолчанию

Транзакция завершается после вставки каждой записи:

DM.ADOConnection1.BeginTrans;
try
DM.Spis_Pass.Append;
...
DM.Spis_Pass.Post;
except
DM.ADOConnection1.RollbackTrans;
Exit;
end;
DM.ADOConnection1.CommitTrans;

При этом ошибка все равно возникает. Не пойму причину. При перезапуске приложения все снова работает до 64 записи.
Люся вне форума Ответить с цитированием
Старый 25.01.2008, 08:38   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

У меня была прога которая вытаскивала в базу VFP более 100000 записей и ничего такого не выдавала.
Чем пользуешся и как добавляешь?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.01.2008, 06:08   #5
Люся
 
Регистрация: 24.01.2008
Сообщений: 5
По умолчанию

В VFP7.0 используются свободные таблицы. Программа написана на Delphi 7. Доступ через ADO. Добавление описано выше (Spis_Pass - это AdoTable, DM - DataModule).
Люся вне форума Ответить с цитированием
Старый 29.01.2008, 05:26   #6
Люся
 
Регистрация: 24.01.2008
Сообщений: 5
По умолчанию Причина найдена, но проблема не решена

Прииной является утечка памяти при работе с компонентой AdoTable. Подскажите пожалуйста, как можно освободить память во время работы программы?
Люся вне форума Ответить с цитированием
Старый 29.01.2008, 10:30   #7
фЁдОр
Форумчанин
 
Аватар для фЁдОр
 
Регистрация: 06.09.2007
Сообщений: 908
По умолчанию

Люся, а Вы попробуйте использовать вместо AdoTable, ADOQuery. Это как вариант.
фЁдОр вне форума Ответить с цитированием
Старый 29.01.2008, 11:34   #8
Люся
 
Регистрация: 24.01.2008
Сообщений: 5
Счастье

Спасибо!!! Я так и сделала, правда буквально за пару часов до Вас, фЁдОр, мне эту же идею подсказал Виталий Белик по аське.
Но все равно, СПАСИБО, это очень хорошая идея.

PS: SQL действительно надо любить

Последний раз редактировалось Люся; 30.01.2008 в 04:56.
Люся вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц