PDA

View Full Version : سوال: ذخیره datagridview در اکسس - سی شارپ



abbashayali
دوشنبه 05 فروردین 1398, 02:39 صبح
باسلام خدمت دوستان
در کد زیر من قصد ذخیره سازی اطلاعات از سی شارپ در اکسس را دارم ولی خطای زیر رخ میدهد ممنون میشم دوستان راهنمایی بفرمایند


خطا:


System.Data.OleDb.OleDbException: 'Number of query values and destination fields are not the same.'
کد پروژه:

private DataTable GetDataTableFromDGV(DataGridView dgv)
{
var dt = new DataTable();


foreach (DataGridViewColumn column in dgv.Columns)
{
if (column.Visible)
{
dt.Columns.Add();
}


}


object[] cellValues = new object[dgv.Columns.Count];


foreach (DataGridViewRow row in dgv.Rows)
{
for (int i = 0; i < row.Cells.Count; i++)
{
cellValues[i] = row.Cells[i].Value;
}
dt.Rows.Add(cellValues);
}
return dt;
}
private void Exportbutton_Click(object sender, EventArgs e)


{
openFileDialog1.ShowDialog();


if (KindcomboBox.SelectedIndex == 0)
{
OleDbConnection cn = new OleDbConnection(@"Provider=Microsoft.Ace.OLEDB.12.0;Data Source=" + openFileDialog1.FileName + ";Persist Security Info=True");


cn.Open();


DataTable dt = new DataTable();


dt = GetDataTableFromDGV(TtmsdataGridView);


OleDbCommand com = new OleDbCommand();


com.CommandType = CommandType.Text;


com.Connection = cn;


int dtc = dt.Rows.Count;


MessageBox.Show($"{dtc}");


for (int i = 0; i < (dt.Rows.Count); i++)
{
com.CommandText = "INSERT INTO Kharid_Detail(" + dt.Columns[i].ColumnName.Trim() + ")VALUES(" + (i++) + ",'" +
dt.Rows[i].ItemArray.GetValue(i) + "')";


com.ExecuteNonQuery();
}

davidrobert
سه شنبه 06 فروردین 1398, 22:19 عصر
اگه اشتباه نکرده باشم دارید داخل فیلد Number یک مقدار ارسال میکنید چون فیلد نوع Number عددی یا مقداری راسال نمیشه یا ارسال میشه رشته هستش به همین دلیل باعث ایجاد خطا میشه