Добрый день.
Я опять вошел в ступор, пишу свой обработчик, и тут понадобилось сделать фильтрацию сетов по месяцу. Я добавил 2 поля EnumControl прописал их полностью: один отвечает за выбор месяца, а второй за год, в скрипте вот что получилось:

function RefreshReport(){
        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 и без...

Заранее благодарен.

Нравится

6 комментариев

1. Месяцы считаются от 0 до 11
2. попробуйте var DateEndMonth1Value = new Date(YearValue, MonthValue, 28 , 0 , 0, 0);
3. ApplyDatasetFilter(Dataset,'DateStartMonth1', DateStartMonth1Value.getVarData(), true);

для наглядности , помог бы текс ошибки

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'. Объект не поддерживает это свойство или метод "
___
Все познается в ковырянии отверткой.

ApplyDatasetFilter(Dataset,'DateStartMonth1', DateStartMonth1Value.getVarDate(), true);
ApplyDatasetFilter(Dataset,'DateEndMonth1', DatEndMonth1Value.getVarDate(), true);

Разобрался:

switch(edtQuarter.Value.ID){
                case (Month0): MonthValue = 1;
                                         break;

Указание на ID должно быть.
И еще несколько ошибок подправил )))
_______
Все познается в ковырянии отверткой.

Сделали бы ID целыми числами от 0 до 11 и писали

MonthValue = edtQuarter.Value.ID;

Тоже самое с годом.

Показать все комментарии