Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.05.2013, 01:31   #1
multiki
 
Регистрация: 05.05.2013
Сообщений: 7
По умолчанию Выставление временных периодов в OLAP.

Доброго времени суток!!

Работаю в кубах OLAP. Часто меняю даты, выставляю непрерывные периоды. До последнего времени я отталкивался в макросах от даты СЕГОДНЯ (data). Но это очень не удобно, когда периоды достаточно далеко расположены от даты на сегодня.

Раньше макрос писал таким образом:

Dim data1, data2, data3, data4, data5
Data4 = (Format(Date - 5, "yyyy-mm-dd"))
data5 = (Format(Date - 4, "yyyy-mm-dd"))
data6 = (Format(Date - 3, "yyyy-mm-dd"))
data7 = (Format(Date - 2, "yyyy-mm-dd"))
Data8 = (Format(Date - 1, "yyyy-mm-dd"))

'Далее использовал записанные переменные в программный код куба OLAP.


Sheets("Лист").PivotTables("Сводная Таблица").PivotFields( _
"[Календарь].[Месяцы].[День]").VisibleItemsList = Array("")
Sheets("Лист").PivotTables("Сводная Таблица").PivotFields( _
"[Календарь].[Месяцы].[День]").VisibleItemsList = Array("")
Sheets("Лист").PivotTables("Сводная Таблица").PivotFields( _
"[Календарь].[Месяцы].[День]").VisibleItemsList = Array( _
"[Календарь].[Месяцы].[День].&[" & data1 & "T00:00:00]", _
"[Календарь].[Месяцы].[День].&[" & data2 & "T00:00:00]", _
"[Календарь].[Месяцы].[День].&[" & Data3 & "T00:00:00]", _
"[Календарь].[Месяцы].[День].&[" & Data4 & "T00:00:00]", _
"[Календарь].[Месяцы].[День].&[" & data5 & "T00:00:00]")


Теперь нужно найти способ при котором с помощью UserForm, а в ней двух окон с TextBox возможно было бы выставить начало и конец периода. Макрос в свою очередь должен выбрать в кубе все даты, которые лежат в данном периоде. Спасибо. Жду советов.

99.JPG
multiki вне форума Ответить с цитированием
Старый 31.05.2013, 02:46   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

для начала в поле С запишите начальную дату, а в поле ПО - конечную.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 31.05.2013, 09:28   #3
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Думается, вводить даты в текстбоксы, не самый оптимальный вариант.
Как-то делал вот такое, см. вложенный файл.
(для вывода календаря - щелкните на ячейке с датой)
Вложения
Тип файла: zip Выбор_Начало_Конец_Периода.zip (25.4 Кб, 19 просмотров)
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума Ответить с цитированием
Старый 04.06.2013, 11:09   #4
multiki
 
Регистрация: 05.05.2013
Сообщений: 7
Восклицание

Мне нужно только помочь разобраться с массивом и циклом. Я опишу программный код и условия очень подробно.

Имеем мы это:

TextBox1.Text = (Format(Date, "yyyy-mm-dd"))
TextBox2.Text = (Format(Date + 1, "yyyy-mm-dd"))

(В наших двух текстбоксах зададим формат даты, чтобы её беспрепятственно использовать в тексте кода.)

x = TextBox1.Text
y = TextBox2.Text

(Запишем начало даты в x, а конец в y)


Вставим переменные в код.

Sheets("Лист").PivotTables("Сводная таблица").PivotFields( "[Календарь].[Месяцы].[День]").VisibleItemsList = Array( _
"[Календарь].[Месяцы].[День].&[" & x & "T00:00:00]", "[Календарь].[Месяцы].[День].&[" & y & "T00:00:00]")


В самом Array нужные нам данные через запятую идут:

"[Календарь].[Месяцы].[День].&[" & x & "T00:00:00]",
"[Календарь].[Месяцы].[День].&[" & y & "T00:00:00]",

В которых меняется только значения x и y. Вообще чтобы вставить каждую новую галочку для даты в OLAP необходимо постоянно добавлять строчку с датами
"[Календарь].[Месяцы].[День].&[" & x & "T00:00:00]"
"[Календарь].[Месяцы].[День].&[" & y & "T00:00:00]".
"[Календарь].[Месяцы].[День].&[" & z & "T00:00:00]".
"[Календарь].[Месяцы].[День].&[" & c & "T00:00:00]".


Итог:

Мне необходимо придумать такой цикл и массив данных, чтобы я получил

"[Календарь].[Месяцы].[День].&[" & x & "T00:00:00]",
"[Календарь].[Месяцы].[День].&[" & x + 1 & "T00:00:00]",
...............................
"[Календарь].[Месяцы].[День].&[" & y & "T00:00:00]",



т.е дата в формуле возрастала бы с каждым разом на 1 день, добавлялась в код, и все это происходило до тех пор пока не сравнялось бы со значением y.

Загвоздку я вижу в том, что для добавления каждой новой галочки в коде должна появится новая строка с
"[Календарь].[Месяцы].[День].&[" & x+1 & "T00:00:00]".
multiki вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Linux + MySQL + OLAP, какой OLAP выбрать? Glaciuse SQL, базы данных 0 24.10.2012 21:39
Шумоподавление во временных рядах yaapelsinko Свободное общение 3 19.06.2012 20:41
Удаление временных объектов Kn793 Общие вопросы C/C++ 4 10.06.2010 23:22
Выставление кодировки при подключении к sql server 2005. dubin PHP 0 20.04.2010 00:23
Функция рандомного выставление чисел. PashaNastya Microsoft Office Excel 5 28.03.2010 20:03