powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / А есть ли в Access функции поиска по массиву?
35 сообщений из 35, показаны все 2 страниц
А есть ли в Access функции поиска по массиву?
    #32731538
borisb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть доволно большая присоединенная таблица (.dbf), по кот. необходимо постоянно в процессе работы осуществлять поиск в разных местах программы... Открывать/Закрывать каждый раз (при обращениях из разных мест - форм, запросов и т.п.) рекордсет накладно (по времени). Решил Открывать его один раз при запуске базы и обнолять его по надобности. Но даже в этом случае поиск по нему (.FindFirst и т.п.) оччень медленно :(. Вот думаю, может его в массив перекинуть, но как тогда искать в нем? Не найду чего-то...

Помогите советом, пожалуйста!
Борис
...
Рейтинг: 0 / 0
А есть ли в Access функции поиска по массиву?
    #32731554
aleks2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Без доп. информации о целях и задачах поиска можно посоверовать только локальную копию большой присоединенной таблицы с грамотными индексами и DLookup.
...
Рейтинг: 0 / 0
А есть ли в Access функции поиска по массиву?
    #32731568
Andrew O
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Лучше вместо массива использовать коллекцию, быстрее и проще.
...
Рейтинг: 0 / 0
А есть ли в Access функции поиска по массиву?
    #32731577
borisb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Цели и задачи:
есть присоединенная таблица .dbf 1С бухгалтерии, по кот. в "он-лайн" в базе пользователями делаются запросы и проч. статистика. Так вот запросы по ней делаются оччень медленно. Физически она (таблица 1С) расположена на том же сервере, где и сама база (серверная часть, таблицы).
Работаю над увеличением скорсти доступа к ней.
Пробовал открывать рекордсет с разными параметрами (dbOpenDynamic/dbOpenDynaset/dbOpenSnapshot), открывать только при запуске базы и обновлять по запросу пользователя, при этом делая поиск по загруженному рекордсету. Но все-равно медленно...

Заметил такую особенность:
Если вместо UNC-пути для этой присоединенной таблицы типа \\server\baza указывать (через подключение сет.диска) Диск:\baza, работает несколько быстрее, но не на много.
...
Рейтинг: 0 / 0
А есть ли в Access функции поиска по массиву?
    #32731579
N_A
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЛучше вместо массива использовать коллекцию, быстрее и проще.Уже не первый раз наталкиваюсь на рекомендации использовать коллекции. Объяснте неграматному, чем они быстрее и проще? Или имеется ввиду скорость написания кода?
...
Рейтинг: 0 / 0
А есть ли в Access функции поиска по массиву?
    #32731580
borisb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно по-подробнее про коллекцию (синтаксис и проч.)?
...
Рейтинг: 0 / 0
А есть ли в Access функции поиска по массиву?
    #32731581
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrew OЛучше вместо массива использовать коллекцию, быстрее и проще.
А почему быстрее?
А чем проще?
...
Рейтинг: 0 / 0
А есть ли в Access функции поиска по массиву?
    #32731589
aleks2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Совет только один:

локальная копия (в формате Access) большой присоединенной таблицы с грамотными индексами и DLookup по ней.
------------------------
Быстрее не придумаешь.
...
Рейтинг: 0 / 0
А есть ли в Access функции поиска по массиву?
    #32731626
Andrew O
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Serge Gavrilov Andrew OЛучше вместо массива использовать коллекцию, быстрее и проще.
А почему быстрее?
А чем проще?

Не знаю почему быстрее, но коллекции работают быстрее. :-)
А проще по тому что:
1. Коллекции могут содержать данные любого типа, в том числе объекты и пользовательские типы данных.
2. Можно не заботиться о количестве элементов, просто добавляй и все .Add
3. Если удалить элемент уменьшается и размерность
4. Очень многое в Accesse строится именно на коллекциях.
А вообще читайте хелпы

Синтаксис
Dim colExamp As New Collection
colExamp.Add "Пример"
colExamp.Count
colExamp.Remove
colExamp (Index)
...
Рейтинг: 0 / 0
А есть ли в Access функции поиска по массиву?
    #32731633
borisb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что значит "локальная копия"? Мне что, всю таблу импортировать каждый раз в базу? Это не серьезно, т.к. ежемеминутно в ней (1С) делаются изменения (проводки). И разве функции D...(lookup,sum) быстрее работают, чем поиск по уже загруженному рекордсету?
...
Рейтинг: 0 / 0
А есть ли в Access функции поиска по массиву?
    #32731637
borisb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как выполнять поиск по коллекции? Т.е. по наименованию в каком-либо поле?
...
Рейтинг: 0 / 0
А есть ли в Access функции поиска по массиву?
    #32731642
Rivkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks2Совет только один:

локальная копия (в формате Access) большой присоединенной таблицы с грамотными индексами и DLookup по ней.
------------------------
Быстрее не придумаешь.

Если уж куда-нибудь переводить базу, так лучше будет в SQL Server.
Но проблема, если я правильно понимаю, база работает в какой-то бух. программе, написанной на Clipper или другой программе, поддерживающей формат dbf. А в Аксе нужно проводить какие-то стат. исследования!?
Так может быть лучше вместо рекордсета использовать запросы?
Если в Аксе не производятся изменения данных, может быть, действительно, стоит осуществлять периодически удаление старой таблицы и импорт новых данных с последующей индексацией. А может быть удастся импортировать данные в каком нибудь подготовленном виде...
...
Рейтинг: 0 / 0
А есть ли в Access функции поиска по массиву?
    #32731646
aleks2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>>Что значит "локальная копия"? Мне что, всю таблу импортировать каждый раз в базу? Это не серьезно, т.к. ежемеминутно в ней (1С) делаются изменения (проводки).

А держать открытый рекордсет и обновлять его - это не одно и тоже что таблицу копировать локально?

>>И разве функции D...(lookup,sum) быстрее работают, чем поиск по уже загруженному рекордсету?

Да. Ибо могут пользовать индексы.
...
Рейтинг: 0 / 0
А есть ли в Access функции поиска по массиву?
    #32731663
Rivkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Несомненно, коллекция для сотни или даже тысячи объектов - удобная вещь, но удобна она только для ключа, когда по нему вызывается из памяти весь объект. Но как искать в коллекции, содержащей, например, объект "клиент" всех клиентов по фамилии Петров? Так что в данном случае лучше всего забыть про коллекции и пользоваться обычными для БД средствами - индексами, запросами и т.д. ...
...
Рейтинг: 0 / 0
А есть ли в Access функции поиска по массиву?
    #32731667
borisb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rivkin Dmitry aleks2Совет только один:

локальная копия (в формате Access) большой присоединенной таблицы с грамотными индексами и DLookup по ней.
------------------------
Быстрее не придумаешь.

Если уж куда-нибудь переводить базу, так лучше будет в SQL Server.
Но проблема, если я правильно понимаю, база работает в какой-то бух. программе, написанной на Clipper или другой программе, поддерживающей формат dbf. А в Аксе нужно проводить какие-то стат. исследования!?
Так может быть лучше вместо рекордсета использовать запросы?
Если в Аксе не производятся изменения данных, может быть, действительно, стоит осуществлять периодически удаление старой таблицы и импорт новых данных с последующей индексацией. А может быть удастся импортировать данные в каком нибудь подготовленном виде...

База работает под Access'97, а присоединенная таблица .dbf из конфигурации 1С-Бухгалтерия. Просто, например, менеджер в базе выставляет счет, бухгалтер потом в 1С проставляет оплату по нему, и потом этот же менеджер видит эти оплаты и выполняет разного рода анализ... Таблица в принципе не такая большая (5-10 тыс.записей), но нехочется ее таскать постоянно в клиентскую часть (.mde, установленную у пользователей) - она и расти будет и проч...
...
Рейтинг: 0 / 0
А есть ли в Access функции поиска по массиву?
    #32731669
Andrew O
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
borisbА как выполнять поиск по коллекции? Т.е. по наименованию в каком-либо поле?

Пример из хелпа:

Dim Found, MyObject, MyCollection
Found = False ' Initialize variable.
For Each MyObject In MyCollection ' Iterate through each element.
If MyObject.Text = "Hello" Then ' If Text equals "Hello".
Found = True ' Set Found to True.
Exit For ' Exit loop.
End If
Next
...
Рейтинг: 0 / 0
А есть ли в Access функции поиска по массиву?
    #32731679
Andrew O
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в моем примере:

Dim Found, MyObject
Found = False
For Each MyObject In colExamp
If MyObject = "Пример" Then
Found = True
Exit For
End If
Next
...
Рейтинг: 0 / 0
А есть ли в Access функции поиска по массиву?
    #32731681
borisb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrew O borisbА как выполнять поиск по коллекции? Т.е. по наименованию в каком-либо поле?

Пример из хелпа:

Dim Found, MyObject, MyCollection
Found = False ' Initialize variable.
For Each MyObject In MyCollection ' Iterate through each element.
If MyObject.Text = "Hello" Then ' If Text equals "Hello".
Found = True ' Set Found to True.
Exit For ' Exit loop.
End If
Next

А таблицу с, например, 20 полями я загоняю в эту Collection как один объект? Не пойму что-то принцип работы с полями (и ихними типами данных) в этом случае.
...
Рейтинг: 0 / 0
А есть ли в Access функции поиска по массиву?
    #32731690
Mari.P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А у вас там сетка сколько Мбит?
...
Рейтинг: 0 / 0
А есть ли в Access функции поиска по массиву?
    #32731702
borisb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mari.PА у вас там сетка сколько Мбит?

Сейчас 100. На сервере находится база 1С и база Access (таблицы). Свитчи 3С-омские. Планирую воткнуть в сервер 1Гбит-карточку и соединить с соответствующим каналом свитча. Т.е. будет от сервера до первого коммутатора 1000Мбит (наиболее узкое место), а до клиентов по 100... Не знаю, сильно спасет это жизнь, т.к., например, при обновлении линков на таблы (в клиентской части) загрузка сети составляет 1-2%, и обновления происходят медленно... Правда, как я писал ранее, эта ситуация немного ускоряется при использовании подключенных сет.дисков - вместо \\server\baza Диск:\baza...
...
Рейтинг: 0 / 0
А есть ли в Access функции поиска по массиву?
    #32731709
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К сожалению.
Не сказано, какой акцесс,характерный размер и количество записей в дбф, есть ли у дбф таблы индекс и надо ли следить за живыми изменениями в таблице.

авторЗаметил такую особенность:
Если вместо UNC-пути для этой присоединенной таблицы типа \\server\baza указывать (через подключение сет.диска) Диск:\baza, работает несколько быстрее, но не на много

наверно, еще "чуть-чуть" выиграешь, если мапировать "базу" будешь просто на букву - \\server\baza -> Disk:\


borisbЕсть доволно большая присоединенная таблица (.dbf), по кот. необходимо постоянно в процессе работы осуществлять поиск в разных местах программы... Открывать/Закрывать каждый раз (при обращениях из разных мест - форм, запросов и т.п.) рекордсет накладно (по времени). Решил Открывать его один раз при запуске базы и обнолять его по надобности. Но даже в этом случае поиск по нему (.FindFirst и т.п.) оччень медленно :(. Вот думаю, может его в массив перекинуть, но как тогда искать в нем? Не найду чего-то...
Помогите советом, пожалуйста!
Борис

открывать один раз и держать таблу открытой - это правильная идея.
Это экономия на времени открытия, которое для линкованной таблицы может оказаться существенным.

Ускорить поиск без индексов на большой таблице не получится.
Если работать с АДО, и использовать локальный курсор, то можно для рекордсета создать локальные индексы по полям поиска

типа
MyRs("SearchField").Properties("Optimize")=True - создать (локальный) индекс по полю
MyRs("SearchField").Properties("Optimize")=False - убить индекс

Альтернатива - совет от aleks2
...
Рейтинг: 0 / 0
А есть ли в Access функции поиска по массиву?
    #32731726
borisb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VictoshaК сожалению.
Не сказано, какой акцесс,характерный размер и количество записей в дбф, есть ли у дбф таблы индекс и надо ли следить за живыми изменениями в таблице.

авторЗаметил такую особенность:
Если вместо UNC-пути для этой присоединенной таблицы типа \\server\baza указывать (через подключение сет.диска) Диск:\baza, работает несколько быстрее, но не на много

наверно, еще "чуть-чуть" выиграешь, если мапировать "базу" будешь просто на букву - \\server\baza -> Disk:\


borisbЕсть доволно большая присоединенная таблица (.dbf), по кот. необходимо постоянно в процессе работы осуществлять поиск в разных местах программы... Открывать/Закрывать каждый раз (при обращениях из разных мест - форм, запросов и т.п.) рекордсет накладно (по времени). Решил Открывать его один раз при запуске базы и обнолять его по надобности. Но даже в этом случае поиск по нему (.FindFirst и т.п.) оччень медленно :(. Вот думаю, может его в массив перекинуть, но как тогда искать в нем? Не найду чего-то...
Помогите советом, пожалуйста!
Борис

открывать один раз и держать таблу открытой - это правильная идея.
Это экономия на времени открытия, которое для линкованной таблицы может оказаться существенным.

Ускорить поиск без индексов на большой таблице не получится.
Если работать с АДО, и использовать локальный курсор, то можно для рекордсета создать локальные индексы по полям поиска

типа
MyRs("SearchField").Properties("Optimize")=True - создать (локальный) индекс по полю
MyRs("SearchField").Properties("Optimize")=False - убить индекс

Альтернатива - совет от aleks2

Объем базы не так велик - порядка 100 тыс.записей во всех таблицах. Сама работа с базой (не включая анализ этой присоединенной .dbf) ведется быстро - при одновременных 10 пользователях нет тормозов.

Все операции ведутся в DAO, с АДО не работал....
...
Рейтинг: 0 / 0
А есть ли в Access функции поиска по массиву?
    #32731729
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrew OНе знаю почему быстрее, но коллекции работают быстрее. :-)
Вы сами измеряли скорость? Или опираетесь на чужие данные?
Andrew O
А проще по тому что:
1. Коллекции могут содержать данные любого типа, в том числе объекты и пользовательские типы данных.
2. Можно не заботиться о количестве элементов, просто добавляй и все .Add
3. Если удалить элемент уменьшается и размерность
4. Очень многое в Accesse строится именно на коллекциях.

Почти все, что вы указали относится к возможностям использования классов, но не простоты использования
Andrew O
А вообще читайте хелпы

Спасибо за совет :)
...
Рейтинг: 0 / 0
А есть ли в Access функции поиска по массиву?
    #32731750
Mari.P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
borisb Mari.PА у вас там сетка сколько Мбит?

Сейчас 100. На сервере находится база 1С и база Access (таблицы). Свитчи 3С-омские. Планирую воткнуть в сервер 1Гбит-карточку и соединить с соответствующим каналом свитча. Т.е. будет от сервера до первого коммутатора 1000Мбит (наиболее узкое место), а до клиентов по 100... Не знаю, сильно спасет это жизнь, т.к., например, при обновлении линков на таблы (в клиентской части) загрузка сети составляет 1-2%, и обновления происходят медленно... Правда, как я писал ранее, эта ситуация немного ускоряется при использовании подключенных сет.дисков - вместо \\server\baza Диск:\baza...

1) проверьте разрешение имен в сети (DNS,Wins)
2) личный опыт - работа по модему с базой (oracle), диски с которых подкачивались формы, меню и отчеты подключила через FTP. Ну а в вашем случае, раз dbf для открытия все равно вся тащится на клиентскую машину - может проще ее по фтп кинуть и открыть у клиента?
...
Рейтинг: 0 / 0
А есть ли в Access функции поиска по массиву?
    #32731759
borisb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mari.P borisb Mari.PА у вас там сетка сколько Мбит?

Сейчас 100. На сервере находится база 1С и база Access (таблицы). Свитчи 3С-омские. Планирую воткнуть в сервер 1Гбит-карточку и соединить с соответствующим каналом свитча. Т.е. будет от сервера до первого коммутатора 1000Мбит (наиболее узкое место), а до клиентов по 100... Не знаю, сильно спасет это жизнь, т.к., например, при обновлении линков на таблы (в клиентской части) загрузка сети составляет 1-2%, и обновления происходят медленно... Правда, как я писал ранее, эта ситуация немного ускоряется при использовании подключенных сет.дисков - вместо \\server\baza Диск:\baza...

1) проверьте разрешение имен в сети (DNS,Wins)
2) личный опыт - работа по модему с базой (oracle), диски с которых подкачивались формы, меню и отчеты подключила через FTP. Ну а в вашем случае, раз dbf для открытия все равно вся тащится на клиентскую машину - может проще ее по фтп кинуть и открыть у клиента?

Извиняюсь, не понял ;) - а зачем здесь ФТП-то? Сама база (Access) и база 1С (эта самая присоединенная таблица) лежат на ОДНОМ сервере, а клиенты в ЛОК.сети...
DBF-то тащится на клиента, естественно, но делается это редко - при открытии базы и по спец.запросу клиента. Т.о. вся табла "висит" в памяти клиента во время работы с ней.
...
Рейтинг: 0 / 0
А есть ли в Access функции поиска по массиву?
    #32731767
borisb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот на счет индексов в этой присоединенной .dbf не в курсе - они похоже не прицеплялись при линковании оной... Через драйвер (ISAM?) DBase III не виделись при подключении .CDX-файлы, поэтому"встроенные" индексы 1С здесь не работают... Я вообще не знаю, будут ли работать в такой связке "внешние" индексы, и что для этого нужно сделать. И нужно ли в моем случае?
...
Рейтинг: 0 / 0
А есть ли в Access функции поиска по массиву?
    #32731796
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
borisbВот на счет индексов в этой присоединенной .dbf не в курсе - они похоже не прицеплялись при линковании оной... Через драйвер (ISAM?) DBase III не виделись при подключении .CDX-файлы, поэтому"встроенные" индексы 1С здесь не работают... Я вообще не знаю, будут ли работать в такой связке "внешние" индексы, и что для этого нужно сделать. И нужно ли в моем случае?

попробуй подлинковаться через ODBC-связь, используя FoxPro драйвер.
Find заменить на запрос с параметром. Если в CDX "подходящие" должен выиграть.
...
Рейтинг: 0 / 0
А есть ли в Access функции поиска по массиву?
    #32731799
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если в CDX "подходящие" индексы должен выиграть

(с выражением лица)
...
Рейтинг: 0 / 0
А есть ли в Access функции поиска по массиву?
    #32731816
borisb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victosha borisbВот на счет индексов в этой присоединенной .dbf не в курсе - они похоже не прицеплялись при линковании оной... Через драйвер (ISAM?) DBase III не виделись при подключении .CDX-файлы, поэтому"встроенные" индексы 1С здесь не работают... Я вообще не знаю, будут ли работать в такой связке "внешние" индексы, и что для этого нужно сделать. И нужно ли в моем случае?

попробуй подлинковаться через ODBC-связь, используя FoxPro драйвер.
Find заменить на запрос с параметром. Если в CDX "подходящие" должен выиграть.

Через FoxPro по-моему была проблема на некот.компах - что-то типа "обновите..." или "больше не используется...". Не помню сейчас, то ли после SR2 исчезло, буду пробовать снова.
...
Рейтинг: 0 / 0
А есть ли в Access функции поиска по массиву?
    #32731841
Andrew O
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
borisb

А таблицу с, например, 20 полями я загоняю в эту Collection как один объект? Не пойму что-то принцип работы с полями (и ихними типами данных) в этом случае.
Можно, например, запись хранить как пользовательский тип данных. Насколько это быстро работает надо проверять..
...
Рейтинг: 0 / 0
А есть ли в Access функции поиска по массиву?
    #32731857
Andrew O
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Serge Gavrilov Andrew OНе знаю почему быстрее, но коллекции работают быстрее. :-)
Вы сами измеряли скорость? Или опираетесь на чужие данные?
Andrew O
А проще по тому что:
1. Коллекции могут содержать данные любого типа, в том числе объекты и пользовательские типы данных.
2. Можно не заботиться о количестве элементов, просто добавляй и все .Add
3. Если удалить элемент уменьшается и размерность
4. Очень многое в Accesse строится именно на коллекциях.

Почти все, что вы указали относится к возможностям использования классов, но не простоты использования
Andrew O
А вообще читайте хелпы

Спасибо за совет :)

Кто будет спорить что классы это плохо?
По поводу скорости каждый конкретный вариант нужно проверять. На мой взгляд, если брать вариант с массивом: коллекция массиву предпочтительней.
Я опираюсь на свой опыт. Замеров по скорости не проводил.
...
Рейтинг: 0 / 0
А есть ли в Access функции поиска по массиву?
    #32731864
Mari.P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну вот по спецзапросу вы ее копируйте по фтп и открывайте на клиента
...
Рейтинг: 0 / 0
А есть ли в Access функции поиска по массиву?
    #32731880
N_A
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извеняюсь за офтоп.
Замеры по скорости:
У меня ЭТОТ тест говорит что коллекция в 1,5 медленнее.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
Option Compare Database
Option Explicit
Public Declare Function timeGetTime Lib "winmm.dll" () As Long

Sub Test()
Const MaxN =  10000   'Число элементов 
Const CountTest =  1000   'Число повторов теста 
Dim FindSTR As String
Dim colExamp As New Collection
Dim M(MaxN) As String
Dim i As Long
Dim t As Long
Dim k As Long
Debug.Print "Число элементов:"; MaxN, "Число повторов теста"; CountTest
t = timeGetTime()
For i =  1  To MaxN
    colExamp.Add Item:=CStr(i), Key:=CStr(i)
Next i
t = timeGetTime() - t
Debug.Print "Коллекция(Заполнение):", t

t = timeGetTime()
For i =  1  To MaxN
    M(i) = CStr(i)
Next i
t = timeGetTime() - t
Debug.Print "Массив(Заполнение):", t

FindSTR = CStr(MaxN *  2  \  3 )

Dim Found, MyObject
 'Поиск по коллекции 
t = timeGetTime()
For k =  1  To CountTest
    Found = False
    For Each MyObject In colExamp
    If MyObject = FindSTR Then
        Found = True
        Exit For
    End If
    Next
Next k
 'Debug.Print MyObject 
t = timeGetTime() - t
Debug.Print "Коллекция:", t

 'Поиск по массиву 
t = timeGetTime()
For k =  1  To CountTest
Found = False
For i =  1  To MaxN
    If M(i) = FindSTR Then
        Found = True
        Exit For
    End If
Next
Next k
 'Debug.Print M(i) 
t = timeGetTime() - t
Debug.Print "Массив:", t

End Sub
...
Рейтинг: 0 / 0
А есть ли в Access функции поиска по массиву?
    #32731902
Andrew O
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
N_AИзвеняюсь за офтоп.
Замеры по скорости:
У меня ЭТОТ тест говорит что коллекция в 1,5 медленнее.

Это уже аргумент, не спорю...
...
Рейтинг: 0 / 0
А есть ли в Access функции поиска по массиву?
    #32732419
borisb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VictoshaЕсли в CDX "подходящие" индексы должен выиграть

(с выражением лица)

Вот по вопросу "подходящих индексов" не знаю... Там (в 1С) в определенные документы (например, выписка) были добавлены мною поля (реквизиты языком 1С ;)), по которым индексы врядли создадутся... Хотя этот вопрос, наверное, в какой-нибудь форум по 1С :).

А вот по скорости (без учета индексов) получается одинаково - что через драйвер FoxPro, что через DBase III
...
Рейтинг: 0 / 0
35 сообщений из 35, показаны все 2 страниц
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / А есть ли в Access функции поиска по массиву?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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