0

Есть база данных и WPF приложение. Хочу на странице добавить в базу данных новую строку, но при проверке на заполненность полей происходит ошибка, "Ссылка на объект не указывает на экземпляр объекта". При этом в идентичном проекте с таким же кодом всё работает.

    private ReaderCard currentReader = new ReaderCard();
    public ReaderCardEdit(ReaderCard selectedReaderCard)
    {
        InitializeComponent();
        if (currentReader != null)
        {
            currentReader = selectedReaderCard;
        }

        DataContext = currentReader;
    }

    private void btnBack_Click(object sender, RoutedEventArgs e)
    {
        this.NavigationService.GoBack();
    }

    private void btnSave_Click(object sender, RoutedEventArgs e)
    {
        StringBuilder errors = new StringBuilder();

        if (string.IsNullOrEmpty(currentReader.LastName))
        {
            errors.Append("Введите фамилию \n");
        }
        if (string.IsNullOrEmpty(currentReader.FirstName))
        {
            errors.Append("Введите имя \n");
        }
        if (string.IsNullOrEmpty(currentReader.Address))
        {
            errors.Append("Введите адрес");
        }
        if (string.IsNullOrEmpty(currentReader.Phone))
        {
            errors.Append("Введите телефон \n");
        }
        if (string.IsNullOrEmpty(currentReader.DateOfBirth.ToString()))
        {
            errors.Append("Введите дату рождения");
        }
    }

Таблица с читателями называется ReaderCard. Скрин ошибки прикрепляю. введите сюда описание изображения

Amarok
  • 1
  • Метод ReaderCardEdit выглядит подозрительно. Либо проверяется не то, либо присваивается не то (либо и то и другое). Очень странно проверять что-то что оно не null, а потом присваивать не то, что проверялось, в другую переменную, а наоборот тому, что проверялось, что-то присваивать в случае, если оно не null. Вангую, что в selectedReaderCard у вас null, а вы это не проверяете и в currentReader оказывается тоже null в результате. (Изначально там не null, а new ReaderCard(), поэтому условие срабатывает.) – CrazyElf Mar 13 '23 at 15:04
  • @CrazyElf Спасибо, не знаю как я это не заметил. Проверяться должен selectedReaderCard, если он null то как раз создаётся новый объект, если нет то редактируется существующая строка. А получилось что если добавляю новый то сам же ему null и присваиваю. Спасибо ещё раз – Amarok Mar 13 '23 at 15:24

0 Answers0