Помощь - Поиск - Пользователи - Календарь
Полная версия: Навигация по DBGrid
Форум «Всё о Паскале» > Delphi, Assembler и другие языки. > Delphi
Atreides
Добрый день! Может кто сталкивался с подобной проблемой. Использую DBGrid, ClientDataSet, DataSource для вывода данных из Оркалинной БД. Пользователь может добавлять, редактировать или удалять записи. Все действия выполняются отлично, но после выполнения обновления и чтоб наверняка обновляю запросом повторным, DBGrid улетает в начало списка. Как при добавлении записи перевести на новую запись, при редактировании оставить на отредактированной записи, при удалении оставить на месте предыдущей?
Еще вопрос, немного не в тему. Использую в качестве справочника DBLookupComboBox. Как перейти, при уже заполненном данными DBLookupComboBox к строке в которой такое же значение как и в поле редактируемой записи?
volvo
Цитата
Как при добавлении записи перевести на новую запись, при редактировании оставить на отредактированной записи, при удалении оставить на месте предыдущей?
TBookmark использовать во всех трех случаях. Перед тем, как произвести действие с базой, запоминай в букмарке ту позицию, куда потом надо вернуться, после произведения действия - обновляй грид и возвращайся в запомненную позицию.
Atreides
Цитата(volvo @ 9.03.2011 12:47) *

TBookmark использовать во всех трех случаях. Перед тем, как произвести действие с базой, запоминай в букмарке ту позицию, куда потом надо вернуться, после произведения действия - обновляй грид и возвращайся в запомненную позицию.

А можно пример, пожалуйста, а то никогда не работал с такой компонентой. С добавлением нашел просто выход - ClientDataSet.Last
volvo
Цитата
А можно пример, пожалуйста, а то никогда не работал с такой компонентой.
В хелпе должен быть пример использования. Вот из онлайн-документации: Marking and Returning to Records

Цитата
С добавлением нашел просто выход - ClientDataSet.Last
А если данные будут добавлены не в самый конец набора? Тогда что? Добавил в середину, и перешел к последнему элементу? Все ж зависит от того, как у тебя происходит сортировка при выводе...
Atreides
Цитата(volvo @ 11.03.2011 10:54) *

В хелпе должен быть пример использования. Вот из онлайн-документации: Marking and Returning to Records

Спасибо, пригодиться!

Цитата(volvo @ 11.03.2011 10:54) *

А если данные будут добавлены не в самый конец набора? Тогда что? Добавил в середину, и перешел к последнему элементу? Все ж зависит от того, как у тебя происходит сортировка при выводе...


А у меня в таблице добавленные записи всегда с новым идентификатором пишутся (+1). Подобрал вот такой способ для прыжка на место записи -
Код
  
  st := 'select * from .... order by идентификатор записи';
    Form1.ClientDataSet1.close;
    Form1.ClientDataSet1.DataRequest(st);
    Form1.ClientDataSet1.open;
FOrm1.ClientDataSet1.Locate('Искомое поле', VarArrayOf([TRIM(Form1.Edit2.text)]), [loPartialKey]);
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.