Где собака зарыта ?
после завершения работы программы спонтанно ИСЧЕЗАЮТ СТРОКИ.
Все запрсы к базе в приложении имеют следующий тип:
Query1->Close();
Query1->SQL->Clear();
Query1->SQL->Add(asQuery);
Query1->Open();//или ExecSQL();
Очень прошу поделится своими соображениями по данной теме. Где может быть зарыта собака ?
Суть дела в том, что ты скорее всего не пльзуешся транзакциями, а это довольно таки полезная штука...
Но ведь я работаю с локальной БД. А в ней изменения данных должны прямо заносится в таблицы. Да и данные пропадают после того как были добавлены через большой период времени ...
а какой используешь формат БД? лучше юзать Paradox а не dBase, а еще лучше Access и не BDE, а ADO...
Я использую Paradox 7
тогда - странно... м.б. это результат ошибки в запросе...
Я так не считаю, основываясь на том что:
1. Все запросы имеют следующий тип:
INSERT INTO table_name (field_1, field_2)
VALUES ( "values_1", "values_2");
я несколько раз проверяла все запросы и уверена в их правильности ...
2. Данные успешно заносятся в таблицу!!!
и после некоторого времени( опять же подчеркиваю что время может быть разным !!) пропадают данные..
Я тут подумала про Internal cache (промежуточный буфер). Ведь при работе с информацией из БД builder позволяе получать данные ее не непосредственно из из БД, а из локального промежуточного буфера, куда помещаются данные из БД и в котором размещаются отложенные для последующей записи изменения. Так вот, может кто может подсказать как контролировать этот буфер........
Я так не считаю, основываясь на том что:
1. Все запросы имеют следующий тип:
INSERT INTO table_name (field_1, field_2)
VALUES ( "values_1", "values_2");
я несколько раз проверяла все запросы и уверена в их правильности ...
2. Данные успешно заносятся в таблицу!!!
и после некоторого времени( опять же подчеркиваю что время может быть разным !!) пропадают данные..
Я тут подумала про Internal cache (промежуточный буфер). Ведь при работе с информацией из БД builder позволяе получать данные ее не непосредственно из из БД, а из локального промежуточного буфера, куда помещаются данные из БД и в котором размещаются отложенные для последующей записи изменения. Так вот, может кто может подсказать как контролировать этот буфер........
Если под "через некоторое время" понимать один- два дня, да еще было выключение машины, то буфер не имеет никакого отношения. Если это один два часа или прямо сейчас, то посмотри базу Database Desktop(ом) - записи в принципе попадают в таблицу или нет? Возможно стоит поиграться с событиями Post, AfterInsert.
Если под "через некоторое время" понимать один- два дня, да еще было выключение машины, то буфер не имеет никакого отношения. Если это один два часа или прямо сейчас, то посмотри базу Database Desktop(ом) - записи в принципе попадают в таблицу или нет? Возможно стоит поиграться с событиями Post, AfterInsert.
Под "через некоторое время" подразумевается несколько часов без выключения и перезагрузки машины. При просмотре таблиц DD - результат положителельный - записи в таблицу попадают но все так же пропадают ...
Попробовала поставить Bilder на другой машине - та же ситуация ....
Под "через некоторое время" подразумевается несколько часов без выключения и перезагрузки машины. При просмотре таблиц DD - результат положителельный - записи в таблицу попадают но все так же пропадают ...
Попробовала поставить Bilder на другой машине - та же ситуация ....
Если через DD видно, значит физически они в базе. Похоже они не пропадают, а затираются последующими вводами - смотри прогу (с индексацией боков нет?).
BCB5Ent + BDE5.1 + Paradox7.
Так вот судя по всему этот глюк возникает именно из-за BDE. Причем побороть его не удалось. Единственная рекомендация которую удалось вывести - перед тем как закрывать программу в которой вводились данные необходимо грид, в котором эти данные отображаются, прокрутить вверх вниз. Тогджа все тип-топ.
Есть ощущение что BDE при заведении новой записи сразу-же добавляет ее в физическую таблицу. Но добавляет с какой-то служебной пометкой. А при выходи периодически забывает сделать Post или что-то еще, данную пометку снимающее. И при следующем открытии BDE считает что эти данные временные и смело их удаляет.
1)Пути решения - использовать ClientDataSet.
2)Отказаться от BDE
3) - пункт 2)+1)
В свое время сталкивался с такой проблемой. Конфигурация была:
BCB5Ent + BDE5.1 + Paradox7.
Так вот судя по всему этот глюк возникает именно из-за BDE. Причем побороть его не удалось. Единственная рекомендация которую удалось вывести - перед тем как закрывать программу в которой вводились данные необходимо грид, в котором эти данные отображаются, прокрутить вверх вниз. Тогджа все тип-топ.
Есть ощущение что BDE при заведении новой записи сразу-же добавляет ее в физическую таблицу. Но добавляет с какой-то служебной пометкой. А при выходи периодически забывает сделать Post или что-то еще, данную пометку снимающее. И при следующем открытии BDE считает что эти данные временные и смело их удаляет.
1)Пути решения - использовать ClientDataSet.
2)Отказаться от BDE
3) - пункт 2)+1)
спорить не буду (давно с Paradox) не работал. Но аналогичная ситуация возникает и в Firebird, попрыгал по гриду - и все нормально. А подтверждаешь напрямую - получаешь сообщение -violation of FOREIGN KEY constraint "..." of "..." если завязано несколько таблиц а с индексами или событиями отработал некорректно. Поэтому ИМХО дело не в BDE.
спорить не буду (давно с Paradox) не работал. Но аналогичная ситуация возникает и в Firebird, попрыгал по гриду - и все нормально. А подтверждаешь напрямую - получаешь сообщение -violation of FOREIGN KEY constraint "..." of "..." если завязано несколько таблиц а с индексами или событиями отработал некорректно. Поэтому ИМХО дело не в BDE.
А ты с Огненной птичкой через что работаешь?
Просто я в той проге заменил Парадокс на Интербэйз, и соответственно все компоненты доступа к данным заменил на аналогичные из IBX, тот насколько мне известно мимо BDE работает с базой, и все стало тип топ, 5 лет уже на программе работают и не жалуются.
А ты с Огненной птичкой через что работаешь?
Просто я в той проге заменил Парадокс на Интербэйз, и соответственно все компоненты доступа к данным заменил на аналогичные из IBX, тот насколько мне известно мимо BDE работает с базой, и все стало тип топ, 5 лет уже на программе работают и не жалуются.
Да ведь и я не жалуюсь, все устраивает. Я имел в виду, что при работе с Firebird (Interbase) при своих боках по крайней мере сообщение получишь. А вот у BDE-Paradox, сложилось впечатление (как в старом добром Си) - раз так делаешь, значит тебе нужно и сообщать ничего не собираюсь. И сидишь потом тупишь, где проблема.