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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.09.2012, 11:30   #1
tarakan1983
Форумчанин
 
Аватар для tarakan1983
 
Регистрация: 09.09.2008
Сообщений: 418
По умолчанию Удаление записи и локация предидущей.

Здравствуйте, использую БД *.fdb и Delphi 7.
Для отображения данных у меня на форме GridEh, связанный через Dataset с pFIBDataSet.
Всегда удалял так:
Код:
dm.pFIBDataSet1.Active:=false;
dm.pFIBQuery1.SQL.Clear;
dm.pFIBQuery1.SQL.Add('delete from KONTRAGENT where id = :id');
dm.pFIBQuery1.ParamByName('id').AsInteger:=ID;
dm.pFIBQuery1.ExecQuery;

dm.pFIBQuery1.SQL.Clear;
dm.pFIBQuery1.SQL.Add('commit');
dm.pFIBQuery1.ExecQuery;
dm.pFIBDataSet1.Active:=true;
Если в таблице 5 или 10 записей , то все нормально, а если 1586 то после удаления курсор становиться на первую запись и это не всегда удобно. Подскажите как правильно проводить удаления и локатить или предыдущую запись или последующую, учитывая что в таблице может быть одна или 2 записи?
tarakan1983 вне форума Ответить с цитированием
Старый 19.09.2012, 12:19   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
Подскажите как правильно проводить удаления и локатить или предыдущую запись или последующую
1. Перед удалением получить информацию о предыдущей и последующей записях.
2. После удаления воспользоваться этими знаниями.

Учесть что как предыдущей, так и последующей может не оказаться.
Учесть что в многопользовательской БД каждая из этих (предыдушая/последующая) также может оказаться недоступной (например быть удаленной другим пользователем).
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 19.09.2012, 13:08   #3
tarakan1983
Форумчанин
 
Аватар для tarakan1983
 
Регистрация: 09.09.2008
Сообщений: 418
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
Учесть что в многопользовательской БД каждая из этих (предыдушая/последующая) также может оказаться недоступной (например быть удаленной другим пользователем).
1 и 2 осуществил, а как осуществить ЭТО. Дайте хоть намек.
tarakan1983 вне форума Ответить с цитированием
Старый 19.09.2012, 13:28   #4
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Определить максимальный ИД, который меньше запомненного (того, что удалили) и перейти к этой записи (это для локации на предыдущую запись).
Или минимальный из больших (для следующей записи)
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 19.09.2012, 13:43   #5
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

удаляй так:
Код:
begin
DataSet.DeleteSQL.Text:='delete from KONTRAGENT where id = :id';
DataSet.Delete;
DataSet.Transaction.CommitRetaining;
при этом неплохо было бы настроить RefreshSQL т.к. после удаления он захочет обновиться ... но курсон должен остаться на месте
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...

Последний раз редактировалось Yurk@; 19.09.2012 в 13:46.
Yurk@ вне форума Ответить с цитированием
Старый 20.09.2012, 09:09   #6
tarakan1983
Форумчанин
 
Аватар для tarakan1983
 
Регистрация: 09.09.2008
Сообщений: 418
По умолчанию

Цитата:
Сообщение от Yurk@ Посмотреть сообщение
при этом неплохо было бы настроить RefreshSQL т.к. после удаления он захочет обновиться ... но курсон должен остаться на месте
А как её настроить?
tarakan1983 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
удаление записи из бд D_E_N C/C++ Базы данных 3 22.06.2012 10:35
Удаление записи MAZADA Общие вопросы Delphi 2 14.08.2011 17:09
удаление записи IraPr Microsoft Office Access 2 07.10.2010 17:22
Удаление записи в БД DuM4uK БД в Delphi 2 05.10.2009 15:53
Удаление записи из *.dbf BJF.41 БД в Delphi 4 15.03.2007 18:29