0

Через WorkersTableAdapter вызываю хранимую процедуру для добавления записи в связанные таблицы Workers и Pasport. При вызове процедуры выдаёт ошибку: System.NullReferenceException: "Ссылка на объект не указывает на экземпляр объекта."

Вызов процедуры в коде:

         private void AddWorker_Click(object sender, RoutedEventArgs e)
        {
            if (SureName.Text != null && Name.Text != null && Phone.Text.Length == 12 && Birthday.Text.Length == 10 && Series.Text.Length == 4 && Number.Text.Length == 6)
            {               
                WorkersTableAdapter.InsertQuery(SureName.Text, Name.Text, LastName.Text, Phone.Text, Convert.ToDateTime(Birthday.Text), Position.Text, Convert.ToInt32((WorkDays.SelectedItem as DataRowView).Row.ItemArray[0]), Convert.ToInt32((Change.SelectedItem as DataRowView).Row.ItemArray[0]), Convert.ToInt32(Salary.Text), Series.Text, Number.Text);
                Predstavlenie();
                StoryListTableAdapter.InsertQueryStoryList(DateTime.Now, CurrentUser, "Добавил работника");
            }
            else
            {
                MessageBox.Show("Одно или несколько полей заполнены неправильно!");
            }
        }

Процедура в базе:

ALTER PROCEDURE [dbo].[InsertQuery]
(
    @SureName varchar(20),
    @Name varchar(20),
    @LastName varchar(20),
    @Phone varchar(12),
    @Birthday date,
    @Position varchar(20),
    @ID_WorkWeek int,
    @ID_Change int,
    @Salary int,
    @Series varchar(4),
    @Number varchar(6)
)
AS
    SET NOCOUNT OFF;
INSERT INTO [dbo].[Workers] ([SureName], [Name], [LastName], [Phone], [Birthday], [Position], [ID_WorkWeek], [ID_Change], [Salary]) VALUES (@SureName, @Name, @LastName, @Phone, @Birthday, @Position, @ID_WorkWeek, @ID_Change, @Salary);

SELECT ID_Worker, SureName, Name, LastName, Phone, Birthday, Position, ID_WorkWeek, ID_Change, Salary FROM Workers WHERE (ID_Worker = SCOPE_IDENTITY());

INSERT INTO [dbo].[Pasport] ([ID_Pasport], [Series], [Number]) VALUES ((SELECT ID_Worker FROM Workers WHERE (ID_Worker = SCOPE_IDENTITY())), @Series, @Number);

SELECT ID_Pasport, Series, Number FROM Pasport WHERE (ID_Pasport = (SELECT ID_Worker FROM Workers WHERE (ID_Worker = SCOPE_IDENTITY())))
  • Скорее всего, вместо объекта вы ссылаетесь на NULL. Запустите дебагер и посмотрите значения переменных в момент ошибки – Vladimir Afanasyev Dec 26 '19 at 23:53
  • Пишет, что WorkersTableAdapter равен null – Сергей Dec 26 '19 at 23:59

0 Answers0