Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

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

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

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

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

Здравствуйте, использую БД *.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, 11:19   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,052
По умолчанию

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

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

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

Определить максимальный ИД, который меньше запомненного (того, что удалили) и перейти к этой записи (это для локации на предыдущую запись).
Или минимальный из больших (для следующей записи)
Sciv вне форума Ответить с цитированием
Старый 19.09.2012, 12: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 в 12:46.
Yurk@ вне форума Ответить с цитированием
Старый 20.09.2012, 08:09   #6
tarakan1983
Форумчанин
 
Аватар для tarakan1983
 
Регистрация: 09.09.2008
Сообщений: 398
По умолчанию

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

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


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


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS