2010-10-25 3 views
3

В настоящее время я разрабатываю приложение, которое динамически использует базы данных.Delphi ADO + bookmarks

означает, что он предназначен для работы с любыми db, в любое время и любыми структурами.

Я обеспокоен тем, что хочу «пометить» или пометить определенные записи, поэтому мне нужно будет использовать свойство «Фильтр» для выполнения какого-либо поиска, и в конце концов, я хочу удалить фильтр и выполнить поиск через занесенные в закладки записи ...

однако кажется, что закладка работает только до тех пор, пока фильтр установлен на указанном фильтре, поэтому, если я выберу свой второй элемент с закладкой, я получаю совершенно другую запись, чем я ожидал, т.е. Я сделал фильтр и пометил первую запись, когда я удаляю свой фильтр и перехожу в закладку # 1, я все еще просто иду на запись nr. 1.

есть ли другой способ сделать это? или требуется сделать это по-другому?

надежда кто-то здесь имеет некоторое безумное подлинное решение этой :)

ответ

4

набора данных в Delphi можно создать закладку только одна запись. TDataset.BookMark является заполнитель для этой закладки. Закладка, сделанная во время фильтрации данных, действительна после удаления фильтра. Поэтому, если вы отфильтруете свой набор данных и закладите запись, затем удалите фильтр и перейдите к записи закладок, вы должны перейти к той же записи.

Если вы не уверены, что ваша закладка по-прежнему действительна, особенно когда редактируется ваш набор данных; то вы можете использовать метод TDataset.BookmarkValid для проверки своей закладки.

Если вы хотите иметь список закладок (а не только одну закладочную запись), вам необходимо сохранить их в списке или массиве. В Delphi 2009 и более поздних версиях тип данных TBookMark определяется как TBytes. В предыдущих версиях TBookMark определяется как строка. Поэтому, если вы используете версию Delphi до Delphi 2009, вы можете использовать экземпляр TStringList для сохранения списка закладок. Если вы используете Delphi 2009 и выше, вы можете использовать экземпляр типового типа TList (объявленный в модуле Generics.Collections) для хранения списка закладок.

Если вы используете DBGrid, DBGrid имеет свойство SelectedRows, которое имеет тип TBookMarkList. Вы можете использовать его для сохранения списка закладок из выбранных строк в сетке. Вам нужно включить multi-select в параметрах DBGrid.

+0

спасибо, я посмотрю на это :) – Plastkort

Смежные вопросы