Не подставляется значение в представление через windows forms

Существует таблица Заказ, имеющая следующую структуру:

CREATE TABLE [dbo].[Заказ](
    [IDзаказа] [int] NOT NULL,
    [IDкурьера] [int] NOT NULL,
    [IDклиента] [int] NOT NULL,
    [IDадресата] [int] NOT NULL,
    [IDдоставки] [int] NOT NULL,
    [НомерЗаказа] [int] NOT NULL,
    [Вес] [float] NULL,
    [МанипуляционныйЗнак] [varchar](20) NULL,
    [Комментарий] [varchar](50) NULL,
    [ВидДоставки] [varchar](20) NOT NULL,
    [ДатаОформления] [date] NOT NULL,
    [ДатаИсполнения] [date] NOT NULL

В windows forms создается форма, где данные этой таблицы представлены с неким изменением через созданное представление: ID людей заменены на их ФИО из соответствующих таблиц (пример: IDкурьера - ФИОкурьера из таблицы Курьер) ФИО выбираются из комбобоксов

Представление имеет следующую структуру:

ALTER PROCEDURE [dbo].[NewOrder]
    @id_order INT OUTPUT, @id_courier INT OUTPUT, @fio_courier VARCHAR(50), @id_client INT OUTPUT, @fio_client VARCHAR(50), @id_adresat INT OUTPUT, @fio_adresat VARCHAR(50), 
    @id_delivery INT OUTPUT, @number INT, @weight FLOAT, @sign VARCHAR(50), @comment VARCHAR(100), @kind_delivery VARCHAR(20), @reg_date DATE, @exec_date DATE, @res INT OUTPUT
AS
BEGIN
    IF NOT EXISTS (SELECT НомерЗаказа FROM Заказ WHERE НомерЗаказа = @number)
        BEGIN
                SET @id_order = (SELECT MAX(IDзаказа)+1 FROM Заказ)
                SET @id_courier = (SELECT IDкурьера FROM Курьер WHERE ФИО = @fio_courier)
                SET @id_client = (SELECT IDклиента FROM Клиент WHERE ФИО = @fio_client)
                SET @id_adresat = (SELECT IDадресата FROM Адресат WHERE ФИО = @fio_adresat)
                SET @id_delivery = (SELECT IDдоставки FROM Доставка WHERE ВидДоставки = @kind_delivery)
                INSERT INTO Заказ VALUES (@id_order, @id_courier, @id_client, @id_adresat, @id_delivery, @number, @weight, @sign, @comment, @kind_delivery, @reg_date, @exec_date)
                SET @res = 1
        END
    ELSE
        SET @res = 0
END

Но при работе с формой, при подставлении значений, вылезает исключение "Не удалось вставить значение NULL в столбец "IDкурьера", таблицы "Chi.dbo.Заказ"; в столбце запрещены значения NULL. Ошибка в INSERT.Выполнение данной инструкции было прервано." Коллекция в sqlcommand и само подключение настроены верно (все переменные с собачкой, инпуты и аутпуты прописаны). Код C#:

myCommand.Connection = mySqlConnection;
                myCommand.CommandType = System.Data.CommandType.StoredProcedure;

                
                myCommand.Parameters["@fio_courier"].Value = comboBoxCourier.SelectedValue;
                myCommand.Parameters["@fio_client"].Value = comboBoxClient.SelectedValue;
                myCommand.Parameters["@fio_adresat"].Value = comboBoxAdresat.SelectedValue;
                myCommand.Parameters["@weight"].Value = Convert.ToInt32(txtWeight.Text);
                myCommand.Parameters["@number"].Value = Convert.ToInt32(txtNumber.Text);
                myCommand.Parameters["@sign"].Value = txtSign.Text;
                myCommand.Parameters["@comment"].Value = txtCom.Text;
                myCommand.Parameters["@kind_delivery"].Value = comboBoxKind.SelectedValue;
                myCommand.Parameters["@reg_date"].Value = dateTimePickerReg.Value;
                myCommand.Parameters["@exec_date"].Value = dateTimePickerExec.Value;

                mySqlConnection.Open();
                myCommand.ExecuteNonQuery();
                mySqlConnection.Close();

                int result = (int)myCommand.Parameters["@res"].Value;
                if (result == 1)
                {
                    MessageBox.Show("Заказ успешно добавлен!");
                }
                if (result == 0)
                {
                    MessageBox.Show("Что-то пошло не так... Проверьте таблицу и повторите действие, если потребуется.");
                }

Почему так происходит и как решить данную проблему? уже что только не пробовала, быть может глаза не замечают чего-то простого? очень прошу, помогите


Ответы (1 шт):

Автор решения: Юлия

Ошибка заключалась в том, что эти строки комбобоксов, а именно:

myCommand.Parameters["@id_courier"].Value = comboBoxCourier.SelectedValue;
myCommand.Parameters["@id_client"].Value = comboBoxClient.SelectedValue;
myCommand.Parameters["@id_adresat"].Value = comboBoxAdresat.SelectedValue;

возвращали не ФИО (которые в них высвечивались), а как раз нужные мне IDшники

→ Ссылка