System.Data.OleDb.OleDbException: 'Несоответствие типов данных в выражении критериев.' Обновление представления сетки - PullRequest
0 голосов
/ 13 июля 2020

Я работаю над обновлением представления сетки, но System.Data.OleDb.OleDbException: 'Ошибка несоответствия типа данных в выражении критерия. Пожалуйста, помогите кому-нибудь. protected void ResultGridView_RowUpdating (отправитель объекта, GridViewUpdateEventArgs e) {

    TextBox txtFName2 = (TextBox)ResultGridView.Rows[e.RowIndex].FindControl("txtFName");
    TextBox txtDate2 = (TextBox)ResultGridView.Rows[e.RowIndex].FindControl("txtSM");
    TextBox txtCaseType2 = (TextBox)ResultGridView.Rows[e.RowIndex].FindControl("txtCaseType");
    TextBox txtFileno2 = (TextBox)ResultGridView.Rows[e.RowIndex].FindControl("txtFileno");
    TextBox txtCustName2 = (TextBox)ResultGridView.Rows[e.RowIndex].FindControl("txtCustName");
    TextBox txtAddress2 = (TextBox)ResultGridView.Rows[e.RowIndex].FindControl("txtCustName");
    TextBox txtConno2 = (TextBox)ResultGridView.Rows[e.RowIndex].FindControl("txtConno");
    TextBox txtPlotarea2 = (TextBox)ResultGridView.Rows[e.RowIndex].FindControl("txtPlotarea");
    TextBox txtPlotRate2 = (TextBox)ResultGridView.Rows[e.RowIndex].FindControl("txtPlotRate");
    TextBox txtconstarea2 = (TextBox)ResultGridView.Rows[e.RowIndex].FindControl("txtconstarea");
    TextBox txtConstFloor2 = (TextBox)ResultGridView.Rows[e.RowIndex].FindControl("txtConstFloor");
    TextBox txtconstrate2 = (TextBox)ResultGridView.Rows[e.RowIndex].FindControl("txtconstrate");
    TextBox txtPlotvalue2 = (TextBox)ResultGridView.Rows[e.RowIndex].FindControl("txtPlotvalue");
    TextBox txtconstvalue2 = (TextBox)ResultGridView.Rows[e.RowIndex].FindControl("txtconstvalue");
    TextBox txttotalvalue2 = (TextBox)ResultGridView.Rows[e.RowIndex].FindControl("txttotalvalue");
    TextBox txtRemarks2 = (TextBox)ResultGridView.Rows[e.RowIndex].FindControl("txtRemarks");

    **TextBox txtDatee2 = (TextBox)ResultGridView.Rows[e.RowIndex].FindControl("txtDate2");**

    string da = txtDatee2.Text.ToString();

    DateTime dt =
 DateTime.ParseExact(da, "dd-MM-yyyy HH:mm:ss", CultureInfo.InvariantCulture);
    string dateshort = dt.ToShortDateString();

    string ID = ResultGridView.DataKeys[e.RowIndex].Values[0].ToString();

    cmd.Connection = conn;
    cmd.CommandText = "UPDATE Final SET Finance ='" + txtFName2.Text + "' ,SM ='" + txtDate2.Text + "',Case_Type ='" + txtCaseType2.Text + "',File_no ='" + txtFileno2.Text + "',Cust_Name ='" + txtCustName2.Text + "' ,Address ='" + txtAddress2.Text + "',Con_no ='" + txtConno2.Text + "' ,Plot_area ='" + txtPlotarea2.Text + "' ,Plot_Rate ='" + txtPlotRate2.Text + "' ,const_area ='" + txtconstarea2.Text + "' ,Const_Floor ='" + txtConstFloor2.Text + "' ,const_rate ='" + txtconstrate2.Text + "' ,Plot_value ='" + txtPlotvalue2.Text + "' ,const_value ='" + txtConno2.Text + "' ,total_value ='" + txttotalvalue2.Text + "' ,Remarks ='" + txtRemarks2.Text + "'**,Date2 = '"+ dateshort +"'** WHERE ID=" + ID + "";


    conn.Open();
    cmd.ExecuteNonQuery();
    ResultGridView.EditIndex = -1;
    FillVendorGrid();
    conn.Close();


}

1 Ответ

1 голос
/ 13 июля 2020

По крайней мере, первые текстовые выражения для значений даты должны быть отформатированы в соответствии с последовательностью ISO:

string dateshort = dt.ToString("yyyy'/'MM'/'dd");

во-вторых, в Access они должны быть заключены в octothorpes:

"', Date2 = #" + dateshort + "# WHERE ID="

Это должно быть изменено и для других полей даты и времени.

Или сделайте себе большую услугу и вызовите параметризованный запрос .

...