请看一下哪里出错了?
string constr="provider=microsoft.Jet.OleDb.4.0;Data Source=supermarket.mdb",price;
			string str_price="select Goods_price from store where Goods_id= '"+tb_id.Text+"'";
             string str=" begin transaction update store set Goods_quality=Goods_quality -'"+
				Convert.ToInt32(tb_quality.Text)+"' where Goods_id='"
				+tb_id.Text+
                 "' insert into buy(buy_goods_id,Goods_quality,Goods_by_per_id,Goods_time) values('"+tb_id.Text+"','"
				+tb_quality.Text+"','"+work_personid.Text+"''"
				+DateTime.Now.ToShortDateString()+"') commit transaction";                 
			try
			{
				OleDbDataAdapter dap=new OleDbDataAdapter(str_price,constr);  
				System.Data.DataSet ds=new System.Data.DataSet();
				OleDbConnection conn=new OleDbConnection(constr);
				System.Data.OleDb.OleDbCommand cmd;
				conn.Open();
				cmd=new OleDbCommand(str,conn);
				cmd.ExecuteNonQuery();
//////////////////价格计算
				dap.Fill(ds,"price");  
				price=ds.Tables["price"].Rows[0][0].ToString().Trim();//查询得到的单价								
				lab_price.Text="单价:"+price+" 总价是:"+Convert.ToString(Convert.ToInt32(tb_quality.Text)*float.Parse(price))+"元";
				conn.Close();
			}
			catch(Exception f)
			{
               MessageBox.Show(f.Message);
			}
f.Message提示:
IErrorInfo.GetDescription因E_FAIL(8x0004005)而失败
------解决方案--------------------Sql和Oracle的研究得多,OleDb还没用过。
但是楼主您用来创建命令对象的CommandText字符串把我弄昏了。
还有我不知道一串字符串相+,中间为什么会出现Convert.ToInt32(tb_quality.Text)这个东东?
------解决方案--------------------建议你不要用这个方式来处理事务,使用连接对象来管理事务更清晰一些。
------解决方案--------------------我怎么回复老出错呢?
建议你不要用这种方式来管理事务,使用连接对象来管理事务更清晰一些。