|
Вопросы по поводу оптимальности кода
|
|||
---|---|---|---|
#18+
Здравствуйте! Есть куб, выгружаются оттуда данные и размещаются на листе. Потом макросом считываются данные с таблицы и заносятся в объект. Поскольку в этом файле таблица на "Лист2" будет как простой пример выгрузки из куба Задача макроса. Создается массив объетов ТТ - пользовательский тип структурных данных . В этом объекте сохраняется информация о торговой точке. Считываем данные по ТТ. В таблице ТТ отсортированы. По соответсвующим ТТ в объект ТТ сохраняем название ТТ, клиента, а также заносим отгрузки по SKU. Написан алгоритм считывания данных по ТТ и занесение в объекты ТТ. Я сильно сомневаюсь, что этот алгоритм оптимально написан. Как можно написать этот алгоритм более оптимально? Учитывая такой момент, что будет очень много строк и колонок. Возможно потом будут добавляться еще колонки. А также в объекте ТТ будет много свойств. Хотелось бы макрос написать в стиле 1С: с использованием вложенными процедурами, что позволяет легко дорабатывать и не сломать код. 1. Как Вы оцениваете идею считывания данных (сравнение текущей и предыдущей строки, при отсортированных ТТ)? 2. Исходя из данной задачи может лучше заносить данные не в массив, а в Collection, ListObject, использовать ADO (хотя там не все SQL функции работают) или использовать какую нибудь другую технологию? 3. По поводу мобильности кода как в типовых конфигурациях в 1С как написать макрос, чтобы не приходилось каждый раз дописывать код, если добавляются или изменятся колонки? Или хотя бы дописывать в одном месте? 4. Скажем, создается массив из 10 000 элементов,который помещается объект ТТ. Вообще насколько оптимально создавать такой объект и помещать в массив? Может в этом случае есть смысл создавать объект по другому? Модератор: Тема перенесена из форума "Visual Basic". ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2016, 18:46 |
|
Вопросы по поводу оптимальности кода
|
|||
---|---|---|---|
#18+
В строке Код: vbnet 1.
ошибка, которая может быть критической - тут не указано чьи cells берёте, они буду браться из листа "по умолчанию" (в данном случае активного). По остальному ничего не скажу... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2016, 11:11 |
|
Вопросы по поводу оптимальности кода
|
|||
---|---|---|---|
#18+
Hugo121В строке Код: vbnet 1.
ошибка, которая может быть критической - тут не указано чьи cells берёте, они буду браться из листа "по умолчанию" (в данном случае активного). По остальному ничего не скажу... И как правильно написать? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2016, 11:45 |
|
Вопросы по поводу оптимальности кода
|
|||
---|---|---|---|
#18+
ferzmikkкак правильно написать? Во-первых, Вы работаете всё время с одним листом, но всё время идёте к нему "от головы". Один раз сделайте ссылку на лист: Код: vbnet 1. 2.
и в дальнейшем во всём коде указывайте именно его, причём везде. Например, для указанной строки это будет Код: vbnet 1.
И быстрее, и точно указано, какая из многочисленных коллекций Cells используется. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2016, 11:55 |
|
Вопросы по поводу оптимальности кода
|
|||
---|---|---|---|
#18+
Кстати, можно аналогично поступить и с другими часто используемыми объектами, скажем Код: vbnet 1. 2.
и т.п. Но самое главное - добавьте во все модули Option Explicit и определите все используемые в коде переменные как имеющие строго определённый тип. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2016, 11:59 |
|
Вопросы по поводу оптимальности кода
|
|||
---|---|---|---|
#18+
Что же до собственно решаемой макросом задачи - то из описания тут ни хрена не понять. а разбираться, что там в коде наверчено, тупо лениво и неинтересно. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2016, 12:00 |
|
Вопросы по поводу оптимальности кода
|
|||
---|---|---|---|
#18+
Можно сократить букв: Код: vbnet 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2016, 12:43 |
|
Вопросы по поводу оптимальности кода
|
|||
---|---|---|---|
#18+
Это только для одного объекта - WITH не бывают вложенные :( Ну и... это действительно только сокращение количества байтов в коде - с точки зрения быстродействия With оправдан только если в качестве его "аргумента" используется НЕ переменная, а квалифицированный суб-объект. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2016, 12:50 |
|
Вопросы по поводу оптимальности кода
|
|||
---|---|---|---|
#18+
Бывают :) Если конечно во вложенном не нужно обращаться и к невложенному тоже. Но тут ведь не нужно. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2016, 13:00 |
|
Вопросы по поводу оптимальности кода
|
|||
---|---|---|---|
#18+
Код: vbnet 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2016, 13:02 |
|
|
start [/forum/topic.php?fid=61&msg=39244824&tid=2173065]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
29ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 128ms |
0 / 0 |