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

> ВНИМАНИЕ!

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

 
 Ответить  Открыть новую тему 
> Навигация по DBGrid, Навигация в списке DBGrid
Atreides
сообщение 9.03.2011 10:32
Сообщение #1


Ветеран Броуновского Движения
***

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

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


Добрый день! Может кто сталкивался с подобной проблемой. Использую DBGrid, ClientDataSet, DataSource для вывода данных из Оркалинной БД. Пользователь может добавлять, редактировать или удалять записи. Все действия выполняются отлично, но после выполнения обновления и чтоб наверняка обновляю запросом повторным, DBGrid улетает в начало списка. Как при добавлении записи перевести на новую запись, при редактировании оставить на отредактированной записи, при удалении оставить на месте предыдущей?
Еще вопрос, немного не в тему. Использую в качестве справочника DBLookupComboBox. Как перейти, при уже заполненном данными DBLookupComboBox к строке в которой такое же значение как и в поле редактируемой записи?

Сообщение отредактировано: Atreides - 9.03.2011 10:49


--------------------
Отрадно спать, отрадней камнем быть, О, этот век, преступный и постыдный, Не жить, не чувствовать - удел завидный. Прошу, молчи, не смей меня будить!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 9.03.2011 12:47
Сообщение #2


Гость






Цитата
Как при добавлении записи перевести на новую запись, при редактировании оставить на отредактированной записи, при удалении оставить на месте предыдущей?
TBookmark использовать во всех трех случаях. Перед тем, как произвести действие с базой, запоминай в букмарке ту позицию, куда потом надо вернуться, после произведения действия - обновляй грид и возвращайся в запомненную позицию.
 К началу страницы 
+ Ответить 
Atreides
сообщение 9.03.2011 13:21
Сообщение #3


Ветеран Броуновского Движения
***

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

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


Цитата(volvo @ 9.03.2011 12:47) *

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

А можно пример, пожалуйста, а то никогда не работал с такой компонентой. С добавлением нашел просто выход - ClientDataSet.Last

Сообщение отредактировано: Atreides - 9.03.2011 13:22


--------------------
Отрадно спать, отрадней камнем быть, О, этот век, преступный и постыдный, Не жить, не чувствовать - удел завидный. Прошу, молчи, не смей меня будить!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 11.03.2011 10:54
Сообщение #4


Гость






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

Цитата
С добавлением нашел просто выход - ClientDataSet.Last
А если данные будут добавлены не в самый конец набора? Тогда что? Добавил в середину, и перешел к последнему элементу? Все ж зависит от того, как у тебя происходит сортировка при выводе...
 К началу страницы 
+ Ответить 
Atreides
сообщение 11.03.2011 12:57
Сообщение #5


Ветеран Броуновского Движения
***

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

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


Цитата(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]);


--------------------
Отрадно спать, отрадней камнем быть, О, этот век, преступный и постыдный, Не жить, не чувствовать - удел завидный. Прошу, молчи, не смей меня будить!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



- Текстовая версия 20.06.2025 16:03
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"