Измерение даты AdventureWorks показывает разные результаты в зависимости от выбранной иерархии

При использовании обработчика событий change, предложенного Dreas Grech, подходит, это не очень хорошо работает в IE 6 & amp; 7, который не запускает событие change до тех пор, пока фокус не будет размытым (то есть, пока вы не выйдете за пределы области флажка). Как и QuirksMode , «это серьезная ошибка».

Возможно, вы захотите использовать обработчик событий click, но это не будет работать с навигацией по клавиатуре. Вам также нужно зарегистрировать обработчик keyup ...

См. Также этот связанный вопрос .

Я еще не нашел хорошего кросс- браузерное решение, которое поддерживает как щелчки мыши, так и клавиатуру, активирует флажки (и не запускает слишком много событий).


Что касается вашего решения для проверки того, установлен флажок или нет, вместо добавления ваш собственный класс checked, вы можете использовать атрибут checked HTML:

$('input#myInput').change(function () {
    if ($(this).attr("checked")) {
        //do stuff if the checkbox is checked
    } else {
        //do stuff if the checkbox isn't checked
    }
});

Любой браузер устанавливает атрибут checked элемента input в значение "checked", если этот флажок установлен проверяется и устанавливает его на null (или удаляет атрибут), если флажок не установлен.

1
задан MoazRub 29 March 2019 в 05:18
поделиться

1 ответ

1113 Я исследовал причину такого поведения и, думаю, выяснил причину. Приведенное ниже объяснение основано на книге «пошаговые инструкции SQL SERVER 2008 MDX», стр. 51–58 (особенно об избежании конфликтов ссылок)

Ваша проблема - типичная проблема эталонного конфликта. В MDX иерархия не может использоваться более одного раза в данном кортеже, но если вы используете иерархию USER и лежащую в ее основе иерархию атрибутов, вы по существу обходите стороной этот чек. Это то, что произошло в вашем запросе

В первом запросе вы используете Иерархию пользователей

[Дата]. [Календарь]. [Месяц]. & Amp; [2013] & amp; ; 1

В MDX иерархия пользователей переводится в иерархии атрибутов. В вашем первом запросе

SELECT NON EMPTY {[Показатели]. [Сумма интернет-продаж]} ON 0, NON EMPTY {[Дата]. [Календарь]. [Месяц]. & Amp; [2013] & amp; 1 } ON 1 FROM [Приключенческие работы] ГДЕ
{[Дата]. [Дата]. & [20130105]: [Дата]. [Дата]. & amp; [ 20130106]}

вы используете Иерархию пользователей "[Дата]. [Календарь]. [Месяц]. & [2013] & amp; 1 ", что в последний уровень имеет «[Дата]. [Дата]». Затем в предложении where для фильтрации используется та же иерархия атрибутов «[Date]. [Date]». Поскольку в иерархии USER вы не использовали конечный уровень, следовательно, вы указали частичный адрес, поэтому члены и его предки разрешены. Все потомки игнорируются в переводе. Посмотрите на приведенный ниже запрос (это основано на вашем первом запросе, я намеренно удалил предложение where).

with member [Measures].[CalendarYear] as [Date].[Calendar Year].currentmember.name
member [Measures].[CalendarSemester] as  [Date].[Calendar Semester of Year].currentmember.name
member [Measures].[CalendarQuater] as  [Date].[Calendar Quarter of Year].currentmember.name
member [Measures].[CalendarMonth] as  [Date].[Month of Year].currentmember.name
member [Measures].[CalendarDate] as [Date].[Date].currentmember.name
SELECT 
NON EMPTY { [Measures].[Internet Sales Amount] ,[Measures].[CalendarYear],[Measures].[CalendarSemester],[Measures].[CalendarQuater],[Measures].[CalendarMonth],[Measures].[CalendarDate]} ON 0,
NON EMPTY { [Date].[Calendar].[Month].&[2013]&[1] } ON 1
FROM    [Adventure Works] 

Результат. enter image description here

Обратите внимание, что календарный год, семестр и квартал показывают значения не по умолчанию. Но мы никогда не использовали их. Это показывает, что перевод пользовательской иерархии выполняется в базовые иерархии атрибутов. Теперь посмотрите на Календарь, он все еще показывает «Весь период». Так как это было проигнорировано. Теперь, если вы добавите предложение where обратно, в Date по-прежнему будет отображаться «All Period», есть две причины: 1) потому что это было проигнорировано при переводе иерархии пользователей, 2) вы использовали диапазон в where. Если вы замените свой кортеж оси строк на ваш кортеж where, он все равно будет показывать «All Period» в качестве диапазона. Однако для решения этой проблемы потребуется всего две даты.

Исходя из этого, при решении вашего запроса у него было два перевода для иерархии атрибутов Date, один сказал игнорировать его на основе иерархии пользователей, другой предоставил диапазон. Вот где из-за конфликта результат неверен.

Теперь давайте рассмотрим запрос, который вы задали мне в своем комментарии ранее

with member [Measures].[CalendarYear] as [Date].[Calendar Year].currentmember.name
member [Measures].[CalendarSemester] as  [Date].[Calendar Semester of Year].currentmember.name
member [Measures].[CalendarQuater] as  [Date].[Calendar Quarter of Year].currentmember.name
member [Measures].[CalendarMonth] as  [Date].[Month of Year].currentmember.name
member [Measures].[CalendarDate] as [Date].[Date].currentmember.name
SELECT 
NON EMPTY { [Measures].[Internet Sales Amount] ,[Measures].[CalendarYear],[Measures].[CalendarSemester],[Measures].[CalendarQuater],[Measures].[CalendarMonth],[Measures].[CalendarDate]} ON 0,
NON EMPTY { [Date].[Calendar].[Month].&[2013]&[1] } ON 1
FROM    [Adventure Works]
WHERE   {[Date].[Date].&[20130105]}

Результат: enter image description here

Обратите внимание, что это время разрешения одного члена, было использовано вместо разрешения иерархии пользователей. Теперь это поведение может быть связано с тем, что один перевод дает «Весь период», а другой дает член, следовательно, член выиграл.

Чтобы еще раз подтвердить это, я внес изменения в мой образец AdventureWorks. Иерархия атрибутов Date основана на столбце «Простая дата». Я выставил «Простую дату» как отдельный атрибут и обработал свой куб.

Посмотрите на запрос «Простая дата» и его результаты.

with member [Measures].[CalendarYear] as [Date].[Calendar Year].currentmember.name
member [Measures].[CalendarSemester] as  [Date].[Calendar Semester of Year].currentmember.name
member [Measures].[CalendarQuater] as  [Date].[Calendar Quarter of Year].currentmember.name
member [Measures].[CalendarMonth] as  [Date].[Month of Year].currentmember.name
member [Measures].[CalendarDate] as [Date].[Date].currentmember.name
SELECT 
NON EMPTY { [Measures].[Internet Sales Amount] ,[Measures].[CalendarYear],[Measures].[CalendarSemester],[Measures].[CalendarQuater],[Measures].[CalendarMonth],[Measures].[CalendarDate]} ON 0,
NON EMPTY { [Date].[Calendar].[Month].&[2013]&[1] } ON 1
FROM    [Adventure Works]
WHERE   
--{[Date].[Date].&[20130105]}
{[Date].[Simple Date].&[20130105]:[Date].[Simple Date].&[20130106]}

Результаты: enter image description here

0
ответ дан MoazRub 29 March 2019 в 05:18
поделиться