Список форумов Акцент Акцент
официальный форум разработчика программы Акцент
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Параметризация отчета

 
Начать новую тему   Ответить на тему    Список форумов Акцент -> Акцент 7.0
Предыдущая тема :: Следующая тема  
Автор Сообщение
Paul
Житель острова Крит


Зарегистрирован: 12.03.2005
Сообщения: 161

СообщениеДобавлено: Пн Окт 22, 2007 9:01 am    Заголовок сообщения: Параметризация отчета Ответить с цитатой

Необходимо как-то получать параметры запрограммированного отчета. Через проект не подходит, потому что один и тот же отчет подключается несколько раз и запускается с разными параметрами.

Когда этот отчет подключается к элементу акцента, в таблице Reports возникает новая строка со своим идентификатором. Хотелось бы к этому идентификатору привязать параметры отчета. Но этот идентификатор никак нельзя получить.
Возможно ли каким либо образом получить идентификатор запускаемого отчета из таблицы REPORTS?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
olimp
Site Admin


Зарегистрирован: 10.03.2005
Сообщения: 2661

СообщениеДобавлено: Пн Окт 22, 2007 11:04 am    Заголовок сообщения: Re: Параметризация отчета Ответить с цитатой

Paul писал(а):
Необходимо как-то получать параметры запрограммированного отчета. Через проект не подходит, потому что один и тот же отчет подключается несколько раз и запускается с разными параметрами.

Когда этот отчет подключается к элементу акцента, в таблице Reports возникает новая строка со своим идентификатором. Хотелось бы к этому идентификатору привязать параметры отчета. Но этот идентификатор никак нельзя получить.
Возможно ли каким либо образом получить идентификатор запускаемого отчета из таблицы REPORTS?

Тебе нужно просто запомнить параметры отчета, выбранные пользователем? Используй

WorkArea.UserParam(ShBook.FileName & ShBook.ID)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
kris



Зарегистрирован: 12.01.2006
Сообщения: 371

СообщениеДобавлено: Вт Окт 04, 2011 9:58 am    Заголовок сообщения: Ответить с цитатой

Пытаюсь решить аналогичную задачу, однако столкнулся со странными проблемами (странными, потому что все эти проблемы устранены в параметрах основных сущностей акцента):
1. Нельзя явно установить тип параметра (кроме как прямым запросом)
2. Если тип параметра меняется, то он как бы не меняется. Пример для простоты восприятия:
Код:
Workarea.UserParam("test") = 10

смотрим что в базе:
Код:
select   PRM_NAME, PRM_TYPE, LEFT(PRM_STRING,5) as PRM_STRING, PRM_CY, PRM_LONG, PRM_DATE
from   USR_PARAMS

PRM_NAME                                           PRM_TYPE PRM_STRING PRM_CY                PRM_LONG    PRM_DATE
-------------------------------------------------- -------- ---------- --------------------- ----------- -----------------------
test                                               3        NULL       NULL                  10          NULL

Вроде как логично, да? Продолжаем:
Код:
Workarea.UserParam("test") = "10"

Результат в базе:
Код:
PRM_NAME                                           PRM_TYPE PRM_STRING PRM_CY                PRM_LONG    PRM_DATE
-------------------------------------------------- -------- ---------- --------------------- ----------- -----------------------
test                                               3        10         NULL                  NULL        NULL

Нетрудно увидеть, что поле хранения данных изменилось, а тип - нет. Соответственно при попытке чтения этого параметра Акцент вернет 0.
Кто-нибудь может объяснить, как UserParam можно использовать при таких явных недоработках и багах? Требую срочного исправления!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
kris



Зарегистрирован: 12.01.2006
Сообщения: 371

СообщениеДобавлено: Вт Окт 04, 2011 10:04 am    Заголовок сообщения: Ответить с цитатой

Если кому нужно до нового билда (мы его будем ждать еще долго, я чувствую), то бага исправляется элементарной правкой хранимки:
Код:
ALTER procedure [dbo].[ap_usrprm_set]
@name nvarchar(256),
@type smallint,
@str nvarchar(256),
@cy money,
@lng int,
@dt datetime
as
set nocount on
begin tran
if (@str is null and @cy is null and @lng is null and @dt is null) or (@type = 1)
begin
  -- delete
  delete from USR_PARAMS where PRM_NAME=@name
end
else
begin
  if exists(select * from USR_PARAMS where PRM_NAME=@name)
  begin
    -- update
    update USR_PARAMS set PRM_STRING=@str, PRM_CY=@cy, PRM_LONG=@lng, PRM_DATE=@dt, PRM_TYPE = @type
    where PRM_NAME=@name
  end
  else
  begin
    -- insert
    insert into USR_PARAMS (PRM_NAME, PRM_TYPE, PRM_STRING, PRM_CY, PRM_LONG, PRM_DATE)
   values (@name,@type,@str,@cy,@lng,@dt)
  end
end
commit tran
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
winnypuch



Зарегистрирован: 18.10.2005
Сообщения: 26
Откуда: Эквилибриум

СообщениеДобавлено: Вт Окт 04, 2011 11:25 am    Заголовок сообщения: Ответить с цитатой

1. Тип параметра установить можно и нужно, например Workarea.UserParam("test") = CLng(10)
2. ошибка в процедуре правится только для SQL версии, а как быть с DAO?
3. Но совсем не понятно, зачем менять тип параметра, ведь это заведомо будет приводить к ошибкам (IMHO), что мешает создать другой параметр ?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
olimp
Site Admin


Зарегистрирован: 10.03.2005
Сообщения: 2661

СообщениеДобавлено: Ср Окт 05, 2011 7:27 am    Заголовок сообщения: Ответить с цитатой

winnypuch писал(а):
1. Тип параметра установить можно и нужно, например Workarea.UserParam("test") = CLng(10)
2. ошибка в процедуре правится только для SQL версии, а как быть с DAO?
3. Но совсем не понятно, зачем менять тип параметра, ведь это заведомо будет приводить к ошибкам (IMHO), что мешает создать другой параметр ?


Ошибка - да, но во вред ли ? Smile
Мне кажется, что нужно явно менять тип параметра, а не случайно :)

Код:
workarea.userparam("test")="10"
MsgBox VarType(workarea.userparam("test"))

workarea.userparam("test") = Null

workarea.userparam("test")=CLng(10)
MsgBox VarType(workarea.userparam("test"))


Билд будет. Его нет по нескольким причинам : мне некогда, Кухтину некогда, нет критичных ошибок.

Вообще хотелось бы сделать фейс-лифтинг в стиле W7.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
kris



Зарегистрирован: 12.01.2006
Сообщения: 371

СообщениеДобавлено: Ср Окт 05, 2011 11:16 am    Заголовок сообщения: Ответить с цитатой

winnypuch писал(а):
1. Тип параметра установить можно и нужно, например Workarea.UserParam("test") = CLng(10)
2. ошибка в процедуре правится только для SQL версии, а как быть с DAO?
3. Но совсем не понятно, зачем менять тип параметра, ведь это заведомо будет приводить к ошибкам (IMHO), что мешает создать другой параметр ?

1. Не всегда бывает возможно, особенно если работаешь со многими параметрами и не имеешь возможности узнать их тип (я разрешаю юзерам создавать свои параметры специальным диалогом).
2. А я не пользую ДАО Smile
3. Ошибка проявилась случайно потому что параметр изначально внес как целое число через модуль, а потом попытался то же самое сделать инпутбоксом. И все. Полчаса мучался пока нашел корень зла.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
kris



Зарегистрирован: 12.01.2006
Сообщения: 371

СообщениеДобавлено: Ср Окт 05, 2011 11:23 am    Заголовок сообщения: Ответить с цитатой

olimp писал(а):
Мне кажется, что нужно явно менять тип параметра, а не случайно Smile
Билд будет. Его нет по нескольким причинам : мне некогда, Кухтину некогда, нет критичных ошибок.

Вообще хотелось бы сделать фейс-лифтинг в стиле W7.

К сожалению, то, что вы предлагаете, показывает "изначальный" тип. можно, конечно, нагородить огородов, но... Ведь ошибка явная? ;)

Критичной ошибкой считаю украинский перевод. Звыняйте, но пользователи просто смеются и говорят "что же это за программа, как же она написана, если ее даже перевести не могут?" Понимаю, что для восточного региона это не проблема, где все по-русски говорят. Но мои клиенты примерно 50/50 хотят использовать украинский интерфейс. Вспоминают китайские мануалы, в которых английские слова русскими буквами написаны...
Честно - лучше бы не было украинской локализации, меньше бы проблем было...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Акцент -> Акцент 7.0 Часовой пояс: GMT + 2
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group