IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Самопроизвольный возврат удаленных записей в БД-?
сообщение
Сообщение #1


Бывалый
***

Группа: Пользователи
Сообщений: 205
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


При удалении записей (строк) из БД, через некоторое время записи, которые были удалены, появляются снова, как-будто их не удаляли. Причем такого не происходит когда база и программа работают на пк с одним пользователем с правами администратора, на пк с несколькими пользователями есть папка с общим доступом, в которой хранится БД, каждый пользователь поочередно заходит через свой логин и пароль в систему и вносит изменения в базу. Мне кажется что удаленные записи появляются снова из-за того что были введены одним пользователем, а удаляются другим... Или может дело не в этом?
Свойство LockType ADOTable: ltBatchOptimistic. Удаление из базы MSAccess осуществляется кнопкой с кодом:
procedure TForm5.BitBtn3Click(Sender: TObject);
begin
ADOTable1.UpdateBatch();
ADOTable1.Delete; //Таким образом можно отменить последнюю удаленную запись.
end;

Можно ли исправить эту ситуацию, чтобы удаленные строки не появлялись снова?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






А что в ADOTable.CursorType установлено?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Бывалый
***

Группа: Пользователи
Сообщений: 205
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


ctStatic
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






ctKeyset вообще-то больше подходит для работы в многопользовательском режиме. Но вопрос не в этом. Можно чуть точнее, когда именно записи, удаленные тобой, появляются опять в наборе? При повторном подключении к базе? При перезапуске приложения? Что заставляет их появиться?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Бывалый
***

Группа: Пользователи
Сообщений: 205
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


при перезапуске приложения. ctKeyset установить не удается, автоматически появляется ctStatic.

Сообщение отредактировано: 1147 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Цитата
ctKeyset установить не удается, автоматически появляется ctStatic.
А знаешь почему? Потому что у тебя в Design-Time таблица активна, это подразумевает именно clStatic. Я делаю таблицу неактивной в дизайне, а при создании формы
  ADOTable1.CursorType := ctKeyset;
ADOTable1.Active := true;
Проверил. Запустил 4 приложения, из одного удалил напрочь половину записей кнопкой с твоим кодом, запустил еще одного - все записи удалены, ничего снова не появилось... У тебя база обычная, или еще с разделением прав? То есть, пользователи заходят все с одним паролем/вообще без пароля, или как?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Бывалый
***

Группа: Пользователи
Сообщений: 205
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


База обычная, пароль для входа не нужен. Но несколько копий приложения одновременно запустить нельзя:
Begin
CreateMutex(Nil, True, 'Prog');
If GetLastError <> 0 Then
Halt;
end;

Установка ctKeyset не решила проблему(. Из базы удаляется 5 записей, приложение закрывается, снова запускается. Все удаленные записи, кроме последней (пятой удаленной по счету) вернулись
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Запусти одного пользователя, удали запись. Потом открой базу и посмотри, удалилась ли она физически из БД? Как ты тестируешь программу свою? LAN?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Бывалый
***

Группа: Пользователи
Сообщений: 205
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


В базе остаются все записи кроме последней удаленной. Возможно это изза того что на кнопке выхода такой код:
ADOTable1.UpdateBatch();
хотя странно, ведь тогда кнопка удаления должна также удалять и из базы ранее удаленную запись
Тестирую программу таким образом: 2 пк, один с двумя входами с правами администратора, на нем никаких проблем с восстановлением удаленных записей нет. На другом пк несколько входов для пользователей с ограниченными правами, на диске С папка в которой хранится база, все пользователи имеют доступ к этой папке. Один из пользователей вводит записи, удаляет свои же записи, после перезапуска программы, все кроме последней восстановились

Сообщение отредактировано: 1147 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 19.04.2024 17:50
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name