powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / обработка данных на время
5 сообщений из 5, страница 1 из 1
обработка данных на время
    #36190517
oldzas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
у меня вопрос - все еще пишу на vba + outlook (макрос) и у меня возникли трудности с обработкой данных. А точнее - есть функции которые выводят данные в комбо, теряется на это много времени, таких функция 5, прога висит сек 5-6 а потом все гуд, то есть на каждую функция по секунде.

насколько быстрее 2 код или не стоит менять шило на мыло ???

вот привожу код:

Код: 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.
Public Function fillzakazcombo()

    Dim Contact As Outlook.ContactItem, tmpContact As String
    tmpContact = zakazchikbox
    Call zakazchikbox.clear
    For Each Contact In getContactsFolder("Организации").items
        With Contact
                Call zakazchikbox.AddItem(.CompanyName)
        End With
    Next Contact
    On Error Resume Next
        zakazchikbox = tmpContact
    On Error GoTo  0 

End Function


и новый алтернативный этому - мне интересно мнение форумчан - выиграю ли я так время и намного ли ?? стоит ли это того ?? ( верхний код взят с msdn а второй сделан мною )

Public Function fillzakazcombo()

Dim Contact As Outlook.ContactItem, tmpContact As String
tmpContact = zakazchikbox
Call zakazchikbox.clear

Dim MyArray() As String
Dim n As Integer

n = getContactsFolder("Организации").items.Count
ReDim MyArray(n)

Dim i As Integer


For Each Contact In getContactsFolder("Организации").items
With Contact
MyArray(i) = .CompanyName
i = i +  1 
End With
Next Contact

zakazchikbox.List = MyArray

zakazchikbox = tmpContact
On Error GoTo  0 

End Function
...
Рейтинг: 0 / 0
обработка данных на время
    #36190617
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: oldzas

я бы цикл сделал немного подругому:
Код: plaintext
1.
2.
3.
4.
5.
With getContactsFolder("I?aaiecaoee")
    For Each Contact In .items
        MyArray(i) = Contact.CompanyName
        i = i +  1 
    Next Contact
End With
А быстродействие можно и померять ;)


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
обработка данных на время
    #36190634
oldzas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
дык я и не умею - поэтому и создал эту ветку что бы узнать выгодно или нету , быстрее или нету
...
Рейтинг: 0 / 0
обработка данных на время
    #36190889
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Немного быстрее, хотя разницы не заметишь. Без With Contact не тратится время на создание и уничтожение локальной переменной в каждой итерации цикла.

Если загружать в массив при старте аутлука, а потом пользоваться массивом, то можно выйграть пару секунд. А еще лучше загружать форму при старте, а в остальное время только показывать или прятать.

Jah loves you.
...
Рейтинг: 0 / 0
обработка данных на время
    #36192157
oldzas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а кто мог бы взяться помочь практически ?? я бы компенсировал затраты .....
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / обработка данных на время
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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