[ТЕМА ЗАКРЫТА]
05.02.2008 14:51
Mihon
 
Появилась необходимость для подчиненных баз автоматизированно менять значения проверок (для должности) в админ. модуле.
SSInspectCfg.Inspectmode это режим проверки.
изменяется от 0 до 3.
Вопрос: как узнать, какое значение этого поля соответствует статусам "предупрежение", "всегда запрет" и т.д.?
заранее благодарен.
05.02.2008 14:58
Mtirt
 
Насколько я понимаю:
3 - всегда запрет
2 - запрет
1 - предупреждение
0 - отключена
05.02.2008 15:06
Mihon
 
Вот только что проверил - 0-предупреждение, потом тут же запись 0-отключена.
как будто данные по таблице расходятся с данными адм. модуля.
должность одну смотрю.
05.02.2008 17:11
Mihon
 
Код:
SELECT if.name, ic.inspectmode
FROM SUPERMAG.SMINSPECTCFG ic,
SUPERMAG.SSINSPECTFUNC if
where
(if.id=ic.inspectid)and(ic.offid=1)
вот это и данные админ. модуля никак не могу увязать.
то 0 получается "отключена", то "запрет", в общем билиберда.
Почему так?
05.02.2008 17:17
Mtirt
 
SSINSPECTFUNC - просто список возможных проверок.
SMINSPECTCFG - назначение проверки для конкретной должности.

Может забываешь учитывать SUBID ? Там для разных документов могут быть разные значения.

И еще, версия СМ2000, какая? А то помнится мне, что в 1.026 по этому поводу есть большие изменения.
06.02.2008 08:55
Mihon
 
1.024.6 sp5

SUBID действительно не учитываю, выполняю тот запрос он мне и так не выдает повт.записей. всего штук 20, хотя проверок - штук 150...
а какое тогда значение у оставшихся 130?

в табличке SSINSPECTFUNC ведь по ID уникальность. или нет? я отбирал записи SSINSPECTFUNC и SSINSPECTFUNCDETAIL, для одной записи SSINSPECTFUNC может быть 2 записи в SSINSPECTFUNCDETAIL...
я ошибаюсь?
06.02.2008 09:11
Mtirt
 
Цитата:
Mihon 1.024.6 sp5

SUBID действительно не учитываю, выполняю тот запрос он мне и так не выдает повт.записей. всего штук 20, хотя проверок - штук 150...
а какое тогда значение у оставшихся 130?
Насколько я понимаю, в SSINSPECTFUNC есть значение этой проверки по умолчанию для всех должностей.
В sminspectcfg сохраняются ТОЛЬКО значения, отличные от тех, которые указаны в SSINSPECTFUNC.

Таким образом тебе для полных проверок нужно объединение sminspectcfg и SSINSPECTFUNC.
06.02.2008 10:56
Mihon
 
Цитата:
Mihon
Код:
SELECT if.name, ic.inspectmode
FROM SUPERMAG.SMINSPECTCFG ic,
SUPERMAG.SSINSPECTFUNC if
where
(if.id=ic.inspectid)and(ic.offid=1)
Выполняю этот запрос.
Открываю адм. модуль, права доступа, должности, должность с этим id, захожу в проверки.
Начинаю сравнивать:
"запрет повышения тарарарарам" - inspectmode = 2, в адм. модуле "запрет"
"не указана причина тарарам" - inspectmode = 0, в адм. модуле "предупрежение"
"запрет принятия док. тарарам" - inspectmode = 2, в адм. модуле "предупрежение"
Это же полная неразбериха.
Помогите понять...
06.02.2008 11:07
Mtirt
 
Код:
SELECT if.id, if.name, nvl(ic.inspectmode,if.definspectmode)
FROM SUPERMAG.SMINSPECTCFG ic,
SUPERMAG.SSINSPECTFUNC if
where
(if.id(+)=ic.inspectid)and(ic.offid=1)
так больше похоже на правду?
06.02.2008 11:27
Mihon
 
Спасибо.
Невнимательность ужасная штука.
Я НЕ ТУ БАЗУ ПОДКЛЮЧАЛ(((((((((((

А по поводу запроса - выдает те же данные.
А что там измениться должно было? nvl какой-то))))
Спасибо огромное!
06.02.2008 11:49
Mtirt
 
Да. Ты прав.
Правильно вот так:
Код:
SELECT if.id, if.name, nvl(ic.inspectmode,if.definspectmode)
FROM SUPERMAG.SMINSPECTCFG ic,
SUPERMAG.SSINSPECTFUNC if
where
(if.id=ic.inspectid(+))
and(ic.offid(+)=1)
06.02.2008 12:22
Mihon
 
понял
NVL Синтаксис NVL(expr1, expr2)
Назначение Если expr1 равно NULL, возвращает
expr2; если expr1 не равно NULL, возв-
ращает expr1.

Вот этот плюсик в скобках первый раз вижу))))))) классно, я в таких случаях или к прогр-ю прибегал, или десять запросов писал...
Вот этот новый запрос все как надо возвращает.
Еще раз спасибо!
Опции темы


Часовой пояс GMT +3, время: 02:29.

 

Форум сделан на основе vBulletin®
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.