Добрый день.
Я опять вошел в ступор, пишу свой обработчик, и тут понадобилось сделать фильтрацию сетов по месяцу. Я добавил 2 поля EnumControl прописал их полностью: один отвечает за выбор месяца, а второй за год, в скрипте вот что получилось:
var MonthValue = edtQuarter.Value;
var YearValue = edtYear.Value;
var Dataset = dlData.Dataset;
var DateRegMinValue = DataRegMin.Value;
var DateRegMaxValue = DataRegMax.Value;
var DateStartMonth1Value = new Date();
var DateEndMonth1Value = new Date();
switch(edtQuarter.Value){
case (Month0): MonthValue = 1;
break;
...
case (Month11): MonthValue = 12;
break;
}
switch(edtYear.Value){
case (Year08): YearValue = 2008;
break;
case (Year09): YearValue = 2009;
break;
}
// И ВОТ ТУТ он мне ругается
DateEndMonth1Value = new Date(VarChar(YearValue), VarChar(MonthValue), 28);
DateStartMonth1Value = new Date(YearValue, MonthValue, 1);
// Конец и вот тут он мне ругается
ApplyDatasetFilter(Dataset,'DateStartMonth1', DateStartMonth1Value, true);
ApplyDatasetFilter(Dataset,'DateEndMonth1', DatEndMonth1Value, true);
ApplyDatasetFilter(Dataset,'Month', MonthValue, true);
ApplyDatasetFilter(Dataset,'Year', YearValue, true);
RefreshDataset(Dataset);
}
Что я не правильно сделал, может как то кого то надо еще проинициализировать. Пробовал и с VarChar и без...
Заранее благодарен.
Нравится
28? А как же март :) ? Я бы таки брал первый день следующего месяца и фильтр делал. DateStartMonth1Value<=Date(меньше)DateEndMonth1Value. И не понятно зачем
ApplyDatasetFilter(Dataset,'Month', MonthValue, true); ApplyDatasetFilter(Dataset,'Year', YearValue, true);
ApplyDatasetFilter(Dataset,'Month', MonthValue, true); ApplyDatasetFilter(Dataset,'Year', YearValue, true);
Это мне пригодится, но потом.
Я нашел
var n = (m != 2 ?((m % 2) ^ (m > 7)) + 30 : (!(y % 400) || !(y % 4) && (y % 25) ? 29 : 28)); где m - месяц, y - год
Но немного не понимаю как это заставить работать.
Но сейчас не об этом, даже при попытке:
DateEndMonth1Value = new Date(09, 1, 28, 0 ,0 ,0); DateStartMonth1Value = new Date(09, 1, 1); ApplyDatasetFilter(Dataset,'DateStartMonth1', DateStartMonth1Value.getVarData(), true); ApplyDatasetFilter(Dataset,'DateEndMonth1', DatEndMonth1Value.getVarData(), true);
Он ругается на вторую строку снизу... Хотя DateStartMonth1 и DateEndMonth1 в скрипте прописаны как дата..
Где что забыл не могу понять.
Ошибка:
"Ошибка выполнения метода 'btnShowReportOnClick'. Объект не поддерживает это свойство или метод "
___
Все познается в ковырянии отверткой.
Разобрался:
switch(edtQuarter.Value.ID){ case (Month0): MonthValue = 1; break;
Указание на ID должно быть.
И еще несколько ошибок подправил )))
_______
Все познается в ковырянии отверткой.
Сделали бы ID целыми числами от 0 до 11 и писали
MonthValue = edtQuarter.Value.ID;
Тоже самое с годом.