0

Почему у меня выходит ошибка Object reference not set to an instance of an object при выполнении следующего кода:

protected override void ScreenWhen()
    {
        if (Cursor.Properties.Contains("DATE_D_") || Cursor.Properties.Contains("END_"))
        {
            _date_D.Value = Cursor.Properties.Get<DateTime>("DATE_D_");
            _end.Value = Cursor.Properties.Get<DateTime>("END_");
        }
        else
             Date.FirstDateOfMonth(Settings.DateNow);
             Date.FirstDateOfMonth(Settings.DateNow);
    }

По сути, данный код должен выполнять условие: при первом открытии формы он должен в поля текстбокса дат вводить первые и последние дни текущего месяца, а при повторном открытии формы должен выводить значения дат, которые были введены раннее (т.е. взять значение из свойства DATE_D и END_).

Если сделать как ниже, то код работает и всегда выводит только первый и последний день текущего месяца:

{
    protected override void ScreenWhen()
    {
        _date_D.Value = Date.FirstDateOfMonth(Settings.DateNow);
        _end.Value = Date.LastDateOfMonth(Settings.DateNow);
    }
}

Код выполнения формы и сама форма ниже. В коде есть коммент, где происходит запоминание данных, которые я ввожу в форму, как теперь сделать чтобы при следующем открытии формы там были данные которые вводились раннее(они же записываются и запоминаются в свойствах DATE_D и END_)?

public override SqlCmdText GetSqlFilter()
    {
        var Cond = ITnet2.Server.Dialogs.InputForm.Activate("_TESTFRM");
        if (Cond.Success)
        {
            string Conditions = "";
            // условие по дате C 
            var date_begin = Cond.InputFormValues.GetValue<DateTime>("DATE_D");
            if (date_begin != null )
            {
                Cursor.Properties.Set("DATE_D_", date_begin);  // запись значений данных в свойство
                Conditions += (" cast(PWREG.DATE_D as date) >= cast(@date_begin as date) ");
            }
            // условие по дате ПО
            var date_end = Cond.InputFormValues.GetValue<DateTime>("END");
            if (date_end != null)
            {
                Cursor.Properties.Set("END_", date_end);    // запись значений данных в свойство
                Conditions += " and cast(PWREG.DATE_D as date) <= cast(@date_end as date) ";
            }
            var n_kdk = Cond.InputFormValues.GetValue<string>("N_KDK");
            var rcentr = Cond.InputFormValues.GetValue<string>("RCENTR");
            var ceh = Cond.InputFormValues.GetValue<string>("CEH");
            // условие по сотруднику
            if (n_kdk != null && n_kdk.Length > 0)
            {
                Conditions += " and PWREG.N_KDK = @n_kdk ";
            }
            // условие по рабочему центру
            if (rcentr != null && rcentr.Length > 0)
            {
                Conditions += " and PWREG.RCENTR = @rcentr ";
            }
            // условие по цеху
            if (ceh != null && ceh.Length > 0)
            {
                Conditions += " and PRCR.CEH = @ceh ";
            }
            return new SqlCmdText(string.Format(Conditions),
                new SqlParam("n_kdk", n_kdk.ToString()),
                new SqlParam("rcentr", rcentr.ToString()),
                new SqlParam("ceh", ceh.ToString()),
                new SqlParam("date_begin", date_begin),
                new SqlParam("date_end", date_end));
        }
        DateTime DateBegin = Settings.DateNow.AddYears(-1);
        DateTime DateEnd = Settings.DateNow;
        return new SqlCmdText(string.Format(@" PWREG.DATE_D between @DateBegin and @DateEnd ")
                         , new SqlParam("DateBegin", DateBegin)
                         , new SqlParam("DateEnd", DateEnd));
    }

пикча формы тут, выводит только даты текущего месяца https://i.stack.imgur.com/0NkFx.png

  • Cursor.Properties.Contains("DATE_D_") || Cursor.Properties.Contains("END_") Подумайте: а если есть начало, но не указан конец? (или наоборот) Мнится мне что надо не ||, а && поставить – A K Feb 17 '21 at 11:29
  • у меня оба поля даты обязательны к заполнению, если вы это имели в виду) – thegamestarted Feb 17 '21 at 11:34

0 Answers0