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

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

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

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

Здравствуйте, использую БД *.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
Сообщений: 4,929
Репутация: 2242
По умолчанию

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

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

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

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

icq: 433559969
skype: vys.yurka
По умолчанию

удаляй так:
Код:
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
Сообщений: 390
Репутация: 63
По умолчанию

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
удаление записи из бд 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 19:29


01:06.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.