У меня есть проблема с хранимой процедурой
привет джентльмены это мой код
это дало мне ошибку в том, что
ID = конвертировать.ToInt32(cmd.ExecuteScalar());
System.Data.SqlClient.SqlException: 'ошибка преобразования типа данных nvarchar в date.'
Что я уже пробовал:
protected void btnSubmit_Click(object sender, EventArgs e) { int ID = 0; string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString; using (SqlConnection con = new SqlConnection(constr)) { using (SqlCommand cmd = new SqlCommand("1400-88")) { using (SqlDataAdapter sda = new SqlDataAdapter()) { cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddWithValue("@FROM", txtStartDate.Text.Trim()); cmd.Parameters.AddWithValue("@TO", txtEndDate.Text.Trim()); cmd.Parameters.AddWithValue("@TYPE_ASSESSMENT", DropDownList1.Text.Trim()); cmd.Parameters.AddWithValue("@BASE_WING", DropDownList20.Text.Trim()); cmd.Parameters.AddWithValue("@SQUADRON", DropDownList3.Text.Trim()); cmd.Parameters.AddWithValue("@FLIGHT_STAFF", DropDownList4.Text.Trim()); cmd.Parameters.AddWithValue("@BRANCH", DropDownList5.Text.Trim()); cmd.Parameters.AddWithValue("@WORK_CENTER", DropDownList6.Text.Trim()); cmd.Parameters.AddWithValue("@REPEAT", DropDownList7.Text.Trim()); cmd.Parameters.AddWithValue("@MAJOR", DropDownList8.Text.Trim()); cmd.Parameters.AddWithValue("@SAFETY", DropDownList9.Text.Trim()); cmd.Parameters.AddWithValue("@MINOR", DropDownList10.Text.Trim()); cmd.Parameters.AddWithValue("@SPECIAL", DropDownList11.Text.Trim()); cmd.Parameters.AddWithValue("@AQLA", DropDownList12.Text.Trim()); cmd.Parameters.AddWithValue("@OTHER", DropDownList13.Text.Trim()); cmd.Parameters.AddWithValue("@REPORT_CONTROL", TextBox6.Text.Trim()); cmd.Parameters.AddWithValue("@OBSERVATION", TextBox2.Text.Trim()); cmd.Parameters.AddWithValue("@REFERENCE", TextBox5.Text.Trim()); cmd.Parameters.AddWithValue("@MOST_PROBABLE_CAUSE", DropDownList15.Text.Trim()); cmd.Parameters.AddWithValue("@REFERENCE_AS_APPROPERIATE", TextBox3.Text.Trim()); cmd.Parameters.AddWithValue("@RECOMMANDED_CORRECTIVE_ACTION", DropDownList17.Text.Trim()); cmd.Parameters.AddWithValue("@QMA_CHECKLIST_TASK", drbTaskList.Text.Trim()); cmd.Parameters.AddWithValue("@INSPECTOR_INFO", DropDownList18.Text.Trim()); cmd.Parameters.AddWithValue("@INTERVAL", DropDownList19.Text.Trim()); cmd.Parameters.AddWithValue("@CORRECTIVE_ACTION", TextBox7.Text.Trim()); cmd.Parameters.AddWithValue("@OPR", DropDownList21.Text.Trim()); cmd.Parameters.AddWithValue("@CORRECTED_BY", TextBox9.Text.Trim()); cmd.Parameters.AddWithValue("@DATE_CORRECTED", TextBox8.Text.Trim()); cmd.Connection = con; con.Open(); ID = Convert.ToInt32(cmd.ExecuteScalar()); con.Close(); }
Sandeep Mewara
Ошибка исходит из вашего stroed proc, где у вас есть некоторые данные преобразования на месте. Вы не поделились тем, что так трудно было бы точно указать линию.
Вторая мысль - учитывая ошибку, она должна быть в основном решена в самой стороне C# (с кодом, которым вы поделились), поэтому мы поделимся тем, как ее решить.
Jin Vincent Necesario
Я считаю, что когда вы сталкиваетесь с ошибкой: "ошибка преобразования типа данных varchar в дату", вы передали строку, которая не может быть проанализирована в дату. Другими словами, вам нужно проверить, правильно ли вы отформатировали дату. Вы можете проверить следующее: @DATE_CORRECTED, @FROM и @TO.