I am trying to get a value from my database, I get the following error: “OleDbException (0x80040e07): Data type mismatch in criteria expression. System.Data.OleDb.OleDbCommand.ExecuteReader(CommandBehavior behavior). My code is as follows:
private void stockOutWardsDetailsDataGridView_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
int itemcolindex = 1;
int unitcolindex = 3;
int ratecolindex = 4;
if (stockOutWardsDetailsDataGridView.Columns[e.ColumnIndex].Name == "dataGridViewTextBoxColumn5")
{
itemid = Convert.ToString(stockOutWardsDetailsDataGridView.CurrentRow.Cells[itemcolindex].Value);
unitid = Convert.ToString(stockOutWardsDetailsDataGridView.CurrentRow.Cells[unitcolindex].Value);
try
{
OleDbConnection con = new OleDbConnection(constring);
string getRate = "SELECT ItemRates.Rate FROM UnitMaster INNER JOIN (ItemMaster INNER JOIN ItemRates ON ItemMaster.ItemCode = ItemRates.ItemCode) ON UnitMaster.UnitId = ItemRates.UnitId WHERE (((ItemMaster.ItemCode)=" + itemid + ") AND ((UnitMaster.UnitId)= " + unitid + "));";
OleDbCommand com1 = new OleDbCommand(getRate, con);
con.Open();
OleDbDataReader datareader;
datareader = com1.ExecuteReader();
datareader.Read();
rate = Convert.ToDouble(datareader);
stockOutWardsDetailsDataGridView.CurrentRow.Cells[ratecolindex].Value = rate;
datareader.Close();
con.Close();
}
catch (Exception err) { MessageBox.Show(err.ToString()); }
}
}