powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / А есть ли в Access функции поиска по массиву?
10 сообщений из 35, страница 2 из 2
А есть ли в 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
10 сообщений из 35, страница 2 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / А есть ли в Access функции поиска по массиву?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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