powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / поиск строк в rowset'е
12 сообщений из 12, страница 1 из 1
поиск строк в rowset'е
    #33574768
unick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может быть кто-нибудь поможет советом...
Работаю с SQL Server mobile через OLE DB. Есть задача позиционироваться на определенную запись в уже имеющемся rowset'е по условию "столбец" = "значение". Каким образом можно решить эту задачу, не прибегая к перебору всех строк в rowset'е?
Всем заранее спасибо за любую помощь!
...
Рейтинг: 0 / 0
поиск строк в rowset'е
    #33575397
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если набор данных отсортирован по твоему столбцу, можно например применить бинарный поиск. Но это тебе надо делать самому, в смысле поиск писать и искать. OLE DB здесь не поможет.
...
Рейтинг: 0 / 0
поиск строк в rowset'е
    #33576584
unick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нет, в общем случае не отсортирован. Может быть можно как-то отфильтровать уже готовый rowset по условию? Или может быть у записи в таблице имеется какой-нибудь уникальный идентификатор?
...
Рейтинг: 0 / 0
поиск строк в rowset'е
    #33576791
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
насколько знаю RowSet - это COM со своими методами. Что там нет такой процедуры поиска?
______________________________________________
Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде!
...
Рейтинг: 0 / 0
поиск строк в rowset'е
    #33577035
unick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, грубо говоря, это набор интерфейсов. В спецификации есть интерфейс IRowsetFind, с помощью которого можно делать поиск в полученной выборке. Но провайдеры данных не обязаны его поддерживать. И у данного провайдера этот интерфейс как раз не поддерживается. Вот приходится придумывать - как найти нужную строку, не прибегая к перебору всех записей...
...
Рейтинг: 0 / 0
поиск строк в rowset'е
    #33577109
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
- заставить это сделать сервер отдельным запросом/ХП ----> с получением
id/№/....
______________________________________________
Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде!
...
Рейтинг: 0 / 0
поиск строк в rowset'е
    #33577181
unick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, но задачу надо решать в общем случае, когда структура таблицы не известна. Допустим, я найду некий ID записи отдельным запросом. Но как этот ID использовать дальше, для позиционирования в исходной выборке? Хорошо было бы, если бы в таблице имелся некий уникальный идентификатор записи... В rowset имеются закладки, но они, к сожалению, уникальны только в пределах этой выборки. Может быть можно как-то отфильтровать записи в rowset, чтобы видны были только удовлетворяющие условию?
...
Рейтинг: 0 / 0
поиск строк в rowset'е
    #33577279
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
низзяя......
- выборка - это моментальный снимок БД. И будет неправильно как то искать кроме перебора " уникального снимка".

Кроме того, сами данные-снимок могут быть не у провайдера а у БД. И "гнаться" на клиента только когда у провайдера будет
Код: plaintext
1.
for.....
  Irow.NextRow;
как в таком случае делать фильтр?
ЗЫ. Фильтр должен не провайдер делать а клиент.
______________________________________________
Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде!
...
Рейтинг: 0 / 0
поиск строк в rowset'е
    #33577377
unick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По-вашему получается, что выход один - перебор всех записей? А как же тогда работают метод Find и свойство Filter ADO? ADO ведь использует те же самые интерфейсы OLE DB...
...
Рейтинг: 0 / 0
поиск строк в rowset'е
    #33577519
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не понимаю, ты свой провайдер пишешь что ли?
Да у провайдера ADO от MS есть методы поиска, но как он это делает большой вопрос:
http://hghltd.yandex.com/yandbtm?url=http%3A//www.script-coding.info/ADO.html&text=Criteria&reqtext=%28Find%3A%3A10020+%26/%280+0%29+!%25Find%3A%3A34916+%26%26+OLE%3A%3A287552%29+%26%26+Criteria%3A%3A2144545&dsn=467&d=3463327

Find(Criteria, SkipRows, SearchDirection, Start)

Ищет в Recordset строку, которая удовлетворяет указанным критериям. Если строка найдена, она становится текущей. Иначе, текущая позиция устанавливается на конец (или начало) Recordset. Перед вызовом метода текущая позиция должна быть установлена. Параметры:
Criteria - строка, которая содержит инструкцию, определяющую имя столбца, оператор сравнения и значение. Может быть определено имя только единственного столбца. Оператором сравнения может быть <, >, =, <=, >=, <> или "like". Значение может быть строкой, числом с плавающей запятой или датой. Cтроки берутся в одинарные кавычки или # (знаки номера). Даты ограничиваются знаками номера и могут содержать часы, минуты и секунды, но не миллисекунды. Для оператора "like" значение строки может содержать звездочку (*). Звездочка может использоваться только в конце строки значения, или в начале и конце строки одновременно, и никак иначе. Пример: "start_date > #7/22/97#".
SkipRows - необязательный. Целое число (long), значение по умолчанию которого является нулевым, которое определяет смещение строки от текущей строки или закладки Start (см. ниже), чтобы начать поиск. По умолчанию, поиск начнётся с текущей строки.
SearchDirection - необязательный. Определяет направление поиска. Возможные значения:
adSearchBackward(-1) - Поиск назад. Если соответствие не найдено, указатель текущей записи будет установлен в BOF.
adSearchForward(1) - Поиск вперёд. Если соответствие не найдено, указатель текущей записи будет установлен в EOF.
Start - необязательный. Закладка (Bookmark), которая используется как начальная позиция для поиска.
______________________________________________
Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде!
...
Рейтинг: 0 / 0
поиск строк в rowset'е
    #33577672
unick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нет, я пишу consumer для провайдера данных SQL server mobile. А ADO - это не провайдер. Это всего лишь надстройка над OLE DB, сделанная в основном для того, чтобы OLE DB могли юзать клиенты, использующие диспетчерские интерфейсы (типа VB, VBA). Вот и мне интересно как в ADO реализован Find и Filter...
...
Рейтинг: 0 / 0
поиск строк в rowset'е
    #33578151
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да так и реализован. Запоминается весь рекорд-сет на клиенте а потом полным сканированием...
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / поиск строк в rowset'е
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]