Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Где собака зарыта ?

2.0K
08 августа 2003 года
Marisha
24 / / 06.08.2003
Я разрабатываю приложение с использованием BDE. И вот с чем столкнулась: после добавления некоторых строк в таблицу, через некоторое время
после завершения работы программы спонтанно ИСЧЕЗАЮТ СТРОКИ.

Все запрсы к базе в приложении имеют следующий тип:
Query1->Close();
Query1->SQL->Clear();
Query1->SQL->Add(asQuery);
Query1->Open();//или ExecSQL();

Очень прошу поделится своими соображениями по данной теме. Где может быть зарыта собака ?
3.6K
08 августа 2003 года
Sheridan
37 / / 06.08.2003
Суть дела в том, что ты скорее всего не пльзуешся транзакциями, а это довольно таки полезная штука...
2.0K
08 августа 2003 года
Marisha
24 / / 06.08.2003
Цитата:
Originally posted by Sheridan
Суть дела в том, что ты скорее всего не пльзуешся транзакциями, а это довольно таки полезная штука...



Но ведь я работаю с локальной БД. А в ней изменения данных должны прямо заносится в таблицы. Да и данные пропадают после того как были добавлены через большой период времени ...

317
08 августа 2003 года
Relax
573 / / 20.09.2000
а какой используешь формат БД? лучше юзать Paradox а не dBase, а еще лучше Access и не BDE, а ADO...
2.0K
08 августа 2003 года
Marisha
24 / / 06.08.2003
Цитата:
Originally posted by Relax
а какой используешь формат БД? лучше юзать Paradox а не dBase, а еще лучше Access и не BDE, а ADO...


Я использую Paradox 7

317
08 августа 2003 года
Relax
573 / / 20.09.2000
тогда - странно... м.б. это результат ошибки в запросе...
2.0K
09 августа 2003 года
Marisha
24 / / 06.08.2003
Цитата:
Originally posted by Relax
тогда - странно... м.б. это результат ошибки в запросе...



Я так не считаю, основываясь на том что:
1. Все запросы имеют следующий тип:
INSERT INTO table_name (field_1, field_2)
VALUES ( "values_1", "values_2");

я несколько раз проверяла все запросы и уверена в их правильности ...

2. Данные успешно заносятся в таблицу!!!
и после некоторого времени( опять же подчеркиваю что время может быть разным !!) пропадают данные..

Я тут подумала про Internal cache (промежуточный буфер). Ведь при работе с информацией из БД builder позволяе получать данные ее не непосредственно из из БД, а из локального промежуточного буфера, куда помещаются данные из БД и в котором размещаются отложенные для последующей записи изменения. Так вот, может кто может подсказать как контролировать этот буфер........

989
09 августа 2003 года
Vlad232ua
182 / / 02.04.2003
Цитата:
Originally posted by Marisha


Я так не считаю, основываясь на том что:
1. Все запросы имеют следующий тип:
INSERT INTO table_name (field_1, field_2)
VALUES ( "values_1", "values_2");

я несколько раз проверяла все запросы и уверена в их правильности ...

2. Данные успешно заносятся в таблицу!!!
и после некоторого времени( опять же подчеркиваю что время может быть разным !!) пропадают данные..

Я тут подумала про Internal cache (промежуточный буфер). Ведь при работе с информацией из БД builder позволяе получать данные ее не непосредственно из из БД, а из локального промежуточного буфера, куда помещаются данные из БД и в котором размещаются отложенные для последующей записи изменения. Так вот, может кто может подсказать как контролировать этот буфер........


Если под "через некоторое время" понимать один- два дня, да еще было выключение машины, то буфер не имеет никакого отношения. Если это один два часа или прямо сейчас, то посмотри базу Database Desktop(ом) - записи в принципе попадают в таблицу или нет? Возможно стоит поиграться с событиями Post, AfterInsert.

2.0K
10 августа 2003 года
Marisha
24 / / 06.08.2003
Цитата:
Originally posted by Vlad232ua

Если под "через некоторое время" понимать один- два дня, да еще было выключение машины, то буфер не имеет никакого отношения. Если это один два часа или прямо сейчас, то посмотри базу Database Desktop(ом) - записи в принципе попадают в таблицу или нет? Возможно стоит поиграться с событиями Post, AfterInsert.



Под "через некоторое время" подразумевается несколько часов без выключения и перезагрузки машины. При просмотре таблиц DD - результат положителельный - записи в таблицу попадают но все так же пропадают ...
Попробовала поставить Bilder на другой машине - та же ситуация ....

989
11 августа 2003 года
Vlad232ua
182 / / 02.04.2003
Цитата:
Originally posted by Marisha


Под "через некоторое время" подразумевается несколько часов без выключения и перезагрузки машины. При просмотре таблиц DD - результат положителельный - записи в таблицу попадают но все так же пропадают ...
Попробовала поставить Bilder на другой машине - та же ситуация ....


Если через DD видно, значит физически они в базе. Похоже они не пропадают, а затираются последующими вводами - смотри прогу (с индексацией боков нет?).

358
11 августа 2003 года
moonmike
423 / / 18.10.2002
В свое время сталкивался с такой проблемой. Конфигурация была:
BCB5Ent + BDE5.1 + Paradox7.
Так вот судя по всему этот глюк возникает именно из-за BDE. Причем побороть его не удалось. Единственная рекомендация которую удалось вывести - перед тем как закрывать программу в которой вводились данные необходимо грид, в котором эти данные отображаются, прокрутить вверх вниз. Тогджа все тип-топ.
Есть ощущение что BDE при заведении новой записи сразу-же добавляет ее в физическую таблицу. Но добавляет с какой-то служебной пометкой. А при выходи периодически забывает сделать Post или что-то еще, данную пометку снимающее. И при следующем открытии BDE считает что эти данные временные и смело их удаляет.
1)Пути решения - использовать ClientDataSet.
2)Отказаться от BDE
3) - пункт 2)+1)
989
11 августа 2003 года
Vlad232ua
182 / / 02.04.2003
Цитата:
Originally posted by moonmike
В свое время сталкивался с такой проблемой. Конфигурация была:
BCB5Ent + BDE5.1 + Paradox7.
Так вот судя по всему этот глюк возникает именно из-за BDE. Причем побороть его не удалось. Единственная рекомендация которую удалось вывести - перед тем как закрывать программу в которой вводились данные необходимо грид, в котором эти данные отображаются, прокрутить вверх вниз. Тогджа все тип-топ.
Есть ощущение что BDE при заведении новой записи сразу-же добавляет ее в физическую таблицу. Но добавляет с какой-то служебной пометкой. А при выходи периодически забывает сделать Post или что-то еще, данную пометку снимающее. И при следующем открытии BDE считает что эти данные временные и смело их удаляет.
1)Пути решения - использовать ClientDataSet.
2)Отказаться от BDE
3) - пункт 2)+1)


спорить не буду (давно с Paradox) не работал. Но аналогичная ситуация возникает и в Firebird, попрыгал по гриду - и все нормально. А подтверждаешь напрямую - получаешь сообщение -violation of FOREIGN KEY constraint "..." of "..." если завязано несколько таблиц а с индексами или событиями отработал некорректно. Поэтому ИМХО дело не в BDE.

358
11 августа 2003 года
moonmike
423 / / 18.10.2002
Цитата:
Originally posted by Vlad232ua

спорить не буду (давно с Paradox) не работал. Но аналогичная ситуация возникает и в Firebird, попрыгал по гриду - и все нормально. А подтверждаешь напрямую - получаешь сообщение -violation of FOREIGN KEY constraint "..." of "..." если завязано несколько таблиц а с индексами или событиями отработал некорректно. Поэтому ИМХО дело не в BDE.


А ты с Огненной птичкой через что работаешь?
Просто я в той проге заменил Парадокс на Интербэйз, и соответственно все компоненты доступа к данным заменил на аналогичные из IBX, тот насколько мне известно мимо BDE работает с базой, и все стало тип топ, 5 лет уже на программе работают и не жалуются.

989
11 августа 2003 года
Vlad232ua
182 / / 02.04.2003
Цитата:
Originally posted by moonmike

А ты с Огненной птичкой через что работаешь?
Просто я в той проге заменил Парадокс на Интербэйз, и соответственно все компоненты доступа к данным заменил на аналогичные из IBX, тот насколько мне известно мимо BDE работает с базой, и все стало тип топ, 5 лет уже на программе работают и не жалуются.


Да ведь и я не жалуюсь, все устраивает. Я имел в виду, что при работе с Firebird (Interbase) при своих боках по крайней мере сообщение получишь. А вот у BDE-Paradox, сложилось впечатление (как в старом добром Си) - раз так делаешь, значит тебе нужно и сообщать ничего не собираюсь. И сидишь потом тупишь, где проблема.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог