Невозможно вставить значение NULL в столбец 'emp_num', таблицу 'comp.task.dbo.employee'; столбец не допускает значений null. Вставить не удается. Заявление было прекращено.
Private Sub dept_num_TextChanged_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles dept_num.TextChanged Dim con As SqlConnection = New SqlConnection("Data Source=S-MHAMEED\SQL2008RTWO;Initial Catalog=comp.task;User ID=..;Password=...") Using (con) Dim dt As New DataTable Dim sqlCom As New SqlCommand() Dim sqlDA As New SqlDataAdapter() sqlCom.Connection = con sqlCom.CommandText = "insert_emp" sqlCom.CommandType = CommandType.StoredProcedure sqlCom.Parameters.AddWithValue("DEBT_NUM", Val(dept_num.Text)) sqlDA = New SqlDataAdapter(sqlCom) sqlDA.Fill(dt) If dt.Rows.Count Then dept_name.Text = dt.Rows(0).Item("debt_name") emp_num.Text = dt.Rows(0).Item("debt_emp") End If End Using End Sub
Что я уже пробовал:
Cannot insert the value NULL into column 'emp_num', table 'comp.task.dbo.Employee'; column does not allow nulls. INSERT fails. The statement has been terminated.
F-ES Sitecore
Сообщение об ошибке не требует пояснений, вы пытаетесь ввести NULL в поле emp_num таблицы Employee, вероятно, внутри вашего insert_emp сохраненного proc. Мы не знаем ваших входных данных или сохраненного текста proc, поэтому никаких конкретных советов мы дать не можем. Посмотрите на сохраненный proc для того, где он вставляет emp_num, посмотрите, что он вставляет, и проследите все оттуда.
Shaddow>dark
Изменить процедуру [dbo].[insert_emp]
@EMP_NUM numeric(18) = null,
@DEBT_NUM числовой(18) ,
@EMP_NAME varchar(150) =null,
@EMP_P_DATE smalldatetime =null,
@EMP_WORK_DATE smalldatetime =null,
@EMP_SAL NUMERIC(18) =null,
@EMP_DESC VARCHAR(250) =null,
@DEBT_NAME VARCHAR(150) =null
АС
НАЧАТЬ
Если не существует(выберите 1 из Employee WHERE EMP_NUM = @EMP_NUM )
НАЧАТЬ
ВСТАВИТЬ В DBO.EMPLOYEE ( DEPT_NUM ,EMP_NAME ,EMP_P_DATE ,EMP_WORK_DATE ,EMP_SAL ,EMP_DESC,DEBT_NAME )
ЗНАЧЕНИЯ (@DEBT_NUM,@EMP_NAME,@EMP_P_DATE,@EMP_WORK_DATE,@EMP_SAL,@EMP_DESC,@DEBT_NAME )
КОНЕЦ
ЕЩЕ
НАЧАТЬ
Обновление dbo.Employee
Установите emp_num =@EMP_NUM ,dept_num =@DEBT_NUM ,emp_name =@EMP_NAME ,emp_p_date =@EMP_P_DATE ,emp_work_date =@EMP_WORK_DATE ,emp_sal =@EMP_SAL ,emp_desc =@EMP_DESC ,debt_name =@DEBT_NAME
Где emp_num =@EMP_NUM
КОНЕЦ
F-ES Sitecore
Вы проходите только debt_num в вашем СП, так что все эти поля имеют значение null. Мы не знаем вашей бизнес-логики, поэтому мы не знаем, что вы хотите сделать, когда у вас есть только одно поле, только вы можете ответить на этот вопрос. Может быть, вы предполагаете, что emp_num будет полем идентификации? Если это уникальный идентификатор таблицы, и вы делаете его идентификатором, вам не нужно давать ему значение, он будет генерировать свой собственный в последовательности.
Ziee-M
Вам просто нужно заполнить все остальные параметры вашей хранимой процедуры. В вашем случае вы добавили только поле DEBT_NUM (emp_num-одно из них).
У вас будет что-то вроде этого :
sqlCom.параметры.AddWithValue("DEBT_NUM", Val(dept_num.Text))
sqlCom.параметры.AddWithValue("someOtherField", Val(поле.Текст))
...
sqlCom.параметры.AddWithValue("emp_num", Val(empNum.Text))
Надеюсь, это поможет.