百分相送,很简单的问题,在线结贴
有段代码如下 
 string   strSql   =    "select   *   from   tblItem "; 
 OleDbDA   =   new   OleDbDataAdapter(strSql,Connection); 
 dataSet   =   new   DataSet(); 
 OleDbCommandBuilder   cmdBuilder   =   new   OleDbCommandBuilder(OleDbDA); 
 OleDbDA.Fill(dataSet); 
 dataSet.Tables[0].Rows[0][1]   =   88;//加上这句就报错 
 OleDbDA.Update(dataSet,   dataSet.Tables[0].TableName); 
 dataSet.AcceptChanges();   
 也就是说我一旦想修改dataset中的值就报错,报错信息为 "语法错误   (操作符丢失)   在查询表达式    '((item   =   ?)   AND   ((?   =   1   AND   Description   IS   NULL)   OR   (Description   =   ?)).... ",但是我在调试的时候输出dataset.Tables[0].Rows[0][1]本来也是有值的,不知为什么会报错,希望达人指点. 
------解决方案--------------------DataSet.Tables[0].Rows[0][1]是指DataSet中的表0,行0,列1      
 尝试下 
 DataSet.Tables[0].Rows[0][1]=Convert.ToInt32( "88 ");
------解决方案--------------------你现看看你Fill后的dataset的表中是否有数据.我怎么感觉你的dataset中没有数据呢?
------解决方案--------------------1. 
 ((item = ?) AND ((? = 1 AND Description IS NULL) OR (Description = ?))   
 =========   
 如果单纯这句,就少了最外层的一个右扣号   
 > > >    
 ((item = ?) AND ((? = 1 AND Description IS NULL) OR (Description = ?)))   
 2. 
 string strSql =  "select * from tblItem "; 
 =========== 
 LZ 勤快点, 显示指定列名,否则,错了都不知道哪里调试
------解决方案--------------------改下顺序   
 string strSql =  "select * from tblItem "; 
 OleDbDA = new OleDbDataAdapter(strSql,Connection); 
 dataSet = new DataSet(); 
 OleDbCommandBuilder cmdBuilder = new OleDbCommandBuilder(OleDbDA); 
 OleDbDA.Fill(dataSet); 
 dataSet.Tables[0].Rows[0][1] = 88;//加上这句就报错 
 OleDbDA.Update(dataSet, dataSet.Tables[0].TableName); 
 dataSet.AcceptChanges(); 
 ==================================== 
 string strSql =  "select * from tblItem "; 
 OleDbDA = new OleDbDataAdapter(strSql,Connection); 
 dataSet = new DataSet(); 
 OleDbDA.Fill(dataSet); 
 dataSet.Tables[0].Rows[0][1] = 88; 
 OleDbCommandBuilder cmdBuilder = new OleDbCommandBuilder(OleDbDA); 
 OleDbDA.Update(dataSet, dataSet.Tables[0].TableName); 
 dataSet.AcceptChanges(); 
------解决方案--------------------把dataSet.Tables[0].Rows[0][1]用MESSAGE报出来也是有数据的 
    ------------------------------------------------- 
    那就是没有数据了。你的dataSet.Tables[0].RowCount=0或者dataSet.Tables[0].ColumnCount=1,看看是否这样。你可以现在数据库中给tblItem插入几条数据,在这样看看。 
    另外你的tblItem有没有主键啊。用CommandBuilder需要有主键的。 
 另外,能不能把那个错误的Stacktrace都贴出来,让大家给你参考参考。   
------解决方案--------------------你可以试试这样 
 .... 
 if(dataSet.Tables[0].RowsCount==0) 
 { 
    DataRow row=dataSet.Tables[0].NewRow(); 
    dataSet.Tables[0].Rows.Add(row); 
 } 
 if(dataSet.Tables[0].ColumnCount> 1) 
    dataSet.Tables[0].Rows[0][1] = 88; 
 else if(dataSet.Tables[0].ColumnCount==0) 
    dataSet.Tables[0].Rows[0][0] = 88;   
 dataSet.Tables[0].Rows[0].EndEdit(); 
 ....   
------解决方案--------------------根据提示信息感觉错误信息不在dataSet.Tables[0].Rows[0][1] = 88;这句。     
 ((item = ?) AND ((? = 1 AND Description IS NULL) OR (Description = ?)).... ",   
 这个里面的第二个”?“怎么在前面? 
 还有括弧什么的都查下
------解决方案--------------------