Текущее время: Сб, авг 16 2025, 15:25

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: BexGetData - только для отображения? Отображение результатов при вводе данных.
СообщениеДобавлено: Пн, июл 06 2009, 15:39 
Директор
Директор

Зарегистрирован:
Сб, мар 11 2006, 14:59
Сообщения: 1259
Пол: Мужской
Теперь меня заинтересовало вот что.
Вполне логично от пользователя ожидать, что ему при работе с данными (вводе или изменении), захочется видеть, как новые данные влияют на результат.
Ну например, пользователь меняет\вводит данные по кварталам и сразу видит как меняется годовое значение (ну если мы положим, что год у нас четко равен сумме кварталов). В bps, в bsp приложении, на лэйаут навешивалась функция планирования, которая выполнялась при изменении и примерно так, хотя довольно таки медленно, все и работало (или пользователь мог ввести сразу несколько значений и только потом нажать "ентер").

В случае екселя и IP, нужно что-то придумывать. Вот что мне придумалось:
1. Использовать в плановом запросе только те значения, которые надо поменять вручную, расчетные же - отображать рядом с помощью екселевских формул, а при сохранении вызывать плановую последовательность, в которой на фоксе дублировать екселевский алгоритм (если расчетные показатели должны быть записаны в куб) и потом сохранять. Минусы в том, что в какой-то момент екселевский (или фоксовский) расчет может быть изменен без синхронного изменения своего двойника и тогда получим расхождение данных записанных в куб и отображаемых в форме.
2. Перехватывать нажатие ентера и по нему выполнять плановую функцию. Получится такой же механизм как в BSP, но... в BSP мы "знаем" на каком уровне\пакете\формате была вызвана функция (точнее - мы определяем конкртеную функцию для каждого уровня\пакета\формата), а в случае перехвата ентера в екселе надо либо как-то узнавать это (например по позиции курсора), либо писать функцию, которая бы могла быть вызвана при измененении в любом из запросов книги, кроме того - в BSP после отработки функции данные обновлялись сами на тех лэйаутах, где это необходимо (если, скажем, лэйаут был на неактивной вкладке, то он обновлялся только при ее открытии), а в Ексель, видимо, придется обновлять все, поскольку, насколько я понял, при переходе между страницами данные не актуализируются самостоятельно? Да и обновится ли оно из VB?
3. Писать "целое приложение на VBA" - на скрытом листе вызывать плановый запрос, макросом копировать его на специальный открытый лист (или заполнять ячейки с использованием BexGetData, кстати - BexGetData не будет повторно запрашивать значения переменных и данные с сервера?), где там нарисовать всяких красивостей, расчетов екселевских, защит ячеек, списков выпадающих и т.д. А по нажатию на кнопку сохранения копировать нужные значения в нужные позиции запроса на скрытой странице и потом вызывать функцию сохранения, сработает так? (еще не пробовал)
4. Может есть какой-то антипод для функции BexGetData - какой-нибудь BExPutData (поискал такую - в хелпе не находит. ;) )

Прокомментируйте, плиз, варианты и порекомендуйте - какой считается наиболее правильным и безотказным? И если на какие-то вопросы из пунктов ответите - то тоже большое спасибо.

Самому мне кажется, что наиболее надежный - 2-й вариант (наверно еще можно пробовать перехватывать не нажатие ентера, а изменение ячейки?), а наиболее красивый и удобный для пользователя - 3-й.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BexGetData - только для отображения? Отображение результатов при вводе данных.
СообщениеДобавлено: Ср, июл 08 2009, 21:45 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пн, авг 18 2008, 17:00
Сообщения: 110
Откуда: From Hell
Пол: Мужской
Может, я неправильно понял, что Вы хотите, но... чем вариант использования из контекстного меню "Провести значения перед навигацией" не нравится?
Юзер выбирает и... видит, что будет в итоге. Не понравилось - выделяет ячейку с введенными значениями и использует стандартную функцию "Отменить ввод плановых данных" :?

_________________
В 9.00 начался и в 00.45 закончился 7-й 8-часовой рабочий день 5-дневной рабочей недели...


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BexGetData - только для отображения? Отображение результатов при вводе данных.
СообщениеДобавлено: Пн, июл 20 2009, 19:04 
Директор
Директор

Зарегистрирован:
Сб, мар 11 2006, 14:59
Сообщения: 1259
Пол: Мужской
Ну я не знаю, чем не нравится. Только разбираюсь с ним. Но разве провод значений перед навигацией вызовет какие-то функции планирования?
Вот, например - у пользователя есть цены и количества, а в кубе есть показатель "сумма", который нужен для того, чтобы этот показатель собирать по иерархии бюджетных статей и получать некую общую сумму. Мне кажется, что удобнее иметь один готовый показатель, чем перемножать два предварительных (кроме того - на других участках бюджетной иерархии сумма может получаться не умножением количества и цены, а, скажем, делением какой-то цифры на какой-то коэффициент). Для заполнения "суммы" есть простые функции планирования (на каждой ветке они могут быть свои). Так разве настройка "провести значения перед навигацией" поможет?


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BexGetData - только для отображения? Отображение результатов при вводе данных.  Тема решена
СообщениеДобавлено: Пн, июл 20 2009, 19:53 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, сен 15 2006, 13:08
Сообщения: 55
Цитата:
4. Может есть какой-то антипод для функции BexGetData - какой-нибудь BExPutData (поискал такую - в хелпе не находит. )

На BexSetData + немного VBA можно сделать рабочее решение.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BexGetData - только для отображения? Отображение результатов при вводе данных.
СообщениеДобавлено: Вт, июл 28 2009, 17:58 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Вт, сен 13 2005, 10:41
Сообщения: 558
Откуда: Гондурас (округ Москвы)
Пол: Мужской
BexSetData, это еще в первых презентациях семерки было.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB