Meer Wajeed Ali Ответов: 1

Не существует сопоставления типа объекта system.windows.forms.datetimepicker с известным собственным типом управляемого поставщика


Необработанное исключение возникло во время выполнения текущей формы. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде
Пожалуйста, предложите мне.

Что я уже пробовал:

Я попробовал с нижеприведенным кодом.

private void btnSave_Click(object sender, EventArgs e)
        {
            try
            {
                if (txtAdmissionNo.Text == "")
                {
                    MessageBox.Show("Please Select Student's  AdmissionNo", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    txtAdmissionNo.Focus();
                    return;
                }
                Calculate1();
                String ConnectionString = ConfigurationManager.ConnectionStrings["WinLogconn"].ConnectionString.ToString();
                SqlConnection con = new SqlConnection(ConnectionString);
                
                string cb = @"INSERT INTO tbl_CourseFeePayment(FeePayementID,AdmissionNo,StudentName,Class,Section,SessionYear,PreviousDue,PaymentDate,ModeOfPayment,Fees,PaymentModeDetails,Fine,TotalPaid,CurrentDue)VALUES (@d1,@d2,@d3,@d4,@d5,@d6,@d7,@d8,@d9,@d10,@d11,@d12,@d13,d14)";
                cmd = new SqlCommand(cb);
                cmd.Connection = con;
                cmd.Parameters.AddWithValue("@FeePayementID", FeePaymentID.Text);
                cmd.Parameters.AddWithValue("@AdmissionNo", txtAdmissionNo.Text);
                cmd.Parameters.AddWithValue("@StudentName", txtStudentName.Text);
                cmd.Parameters.AddWithValue("@Class", txtclass.Text);
                cmd.Parameters.AddWithValue("@Section", txtSection.Text);
                cmd.Parameters.AddWithValue("@SessionYear", txtSession.Text);
                cmd.Parameters.AddWithValue("@PreviousDue", txtPrevDue.Text);
                cmd.Parameters.AddWithValue("@PaymentDate", dtpPaymentDate.Text);
                cmd.Parameters.AddWithValue("@ModeOfPayment", txtModeOfPayment.Text);
                cmd.Parameters.AddWithValue("@Fees", txtFee);
                cmd.Parameters.AddWithValue("@PaymentModeDetails", txtPaymentModeDetails.Text);
                cmd.Parameters.AddWithValue("@Fees", txtFine.Text);
                cmd.Parameters.AddWithValue("@TotalPaid", txtTotalPaid.Text);
                cmd.Parameters.AddWithValue("@CurrentDue", txtCurentDueFees.Text);
                con.Open();
                cmd.ExecuteNonQuery();
                con.Close();
                MessageBox.Show("Successfully saved", "Record", MessageBoxButtons.OK, MessageBoxIcon.Information);
                st1 = lblUser.Text;
                st2 = " ClassFee Payment Is Done admissionNo='" + txtAdmissionNo.Text + "' having PaymentID ='" + FeePaymentID.Text + "'";
                btnSave.Enabled = false;
                btnPrint.Enabled = true;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

CHill60

Какую информацию дает трассировка стека?

CHill60

Также следите за txtFee .. если это текстовое поле, то вам нужно использовать txtFee.Text

1 Ответов

Рейтинг:
8

OriginalGriff

Попробуй:

cmd.Parameters.AddWithValue("@PaymentDate", dtpPaymentDate.Value);

И свяжите ваши имена параметров с именами, которые вы даете в SQL.
Они не совпадают:
VALUES (@d1,@d2,@d3,@d4,@d5,@d6,@d7,@d8,@d9,@d10,@d11,@d12,@d13,d14)
Так и должно быть
VALUES (@FeePayementID, @AdmissionNo, @StudentName, @Class, ...
Чтобы соответствовать параметрам:
cmd.Parameters.AddWithValue("@FeePayementID", FeePaymentID.Text);
cmd.Parameters.AddWithValue("@AdmissionNo", txtAdmissionNo.Text);
cmd.Parameters.AddWithValue("@StudentName", txtStudentName.Text);
cmd.Parameters.AddWithValue("@Class", txtclass.Text);
...