Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / обработка данных на время / 5 сообщений из 5, страница 1 из 1
11.09.2009, 11:06
    #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
11.09.2009, 11:40
    #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
11.09.2009, 11:44
    #36190634
oldzas
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обработка данных на время
дык я и не умею - поэтому и создал эту ветку что бы узнать выгодно или нету , быстрее или нету
...
Рейтинг: 0 / 0
11.09.2009, 13:01
    #36190889
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обработка данных на время
Немного быстрее, хотя разницы не заметишь. Без With Contact не тратится время на создание и уничтожение локальной переменной в каждой итерации цикла.

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

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


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