没有关联关系的!
我只是将新添加的内容写到数据集,然后将数据集的内容合并到另外一个数据集(dataGrid的数据源)!
谢谢!
我只是将新添加的内容写到数据集,然后将数据集的内容合并到另外一个数据集(dataGrid的数据源)!
谢谢!
解决方案 »
- 初学者问题之五:关于C#中的using
- 关于水晶报表rpt文件
- 前台javascript改变dropdownlist控件的选中项时,为何不能引发该控件的change事件自动回发呢?
- Oracle返回类型为SYS_REFCURSOR,如何根据字段名称得到对应的值
- 关于treeview的问题
- C#如何实现屏幕的监控-分不够我再加
- 请问VS2005中如何使用框架
- 关于Hashtable容器,希望高手,孟子进来指导,在线等啊。。。
- 怎么赋给dataset
- 有关Windows Service 的麻烦!
- expert:help—另一个class调用界面上的控件的一个问题
- 如何把HTML文件作为嵌入资源,在运行的时候显示?
//由于大量表是基于多表查询的结果,C#不支持自动保存,但软件实际上只修改了其中一个表的数据
//其余表的数据只是显示用,因此,本软件中,另外打开待修改的表,从当前dataset中获取修改的数据,
//并填入,然后自动保存一个表即可。
public static bool SaveRecord(DataSet myDataSet,string strTableName,string strKeyField)
{
bool result=true;
DataSet Xdataset;
Xdataset=myDataSet.GetChanges(); //没有改变,自动返回
if(Xdataset==null)
return true; if(Xdataset!=null)
{
//添加必要的数据库变量
DataSet tempDataSet;
#if SQLDATABASE //网络版
SqlDataAdapter tempDataAdapter;
SqlCommandBuilder tempCommandBuilder;
#else //单机版
OleDbDataAdapter tempDataAdapter;
OleDbCommandBuilder tempCommandBuilder;
#endif tempDataSet=new DataSet();
//从查询表中获取当前行数据
DataRow row1=Xdataset.Tables[0].Rows[0],row2;
try
{
#if SQLDATABASE
tempDataAdapter=new SqlDataAdapter("select * from "+strTableName+
" where "+strKeyField+"="+row1[strKeyField],MyTools.ConnectionString);
tempCommandBuilder=new SqlCommandBuilder(tempDataAdapter);
#else
tempDataAdapter=new OleDbDataAdapter("select * from "+strTableName+
" where "+strKeyField+"="+row1[strKeyField],MyTools.ConnectionString);
tempCommandBuilder=new OleDbCommandBuilder(tempDataAdapter);
#endif tempDataAdapter.Fill(tempDataSet,"temp"); //得到从数据库中直接获取的当前行
if(tempDataSet.Tables["temp"].Rows.Count==0)//添加状态,增加一新行
{
row2=tempDataSet.Tables["temp"].NewRow();
tempDataSet.Tables["temp"].Rows.Add(row2);
//自动填写编号
int num=MyTools.GetMaxNum(strTableName,strKeyField);
foreach(DataRow r in myDataSet.Tables[strTableName].Rows)
{
Application.DoEvents();
if(r[strKeyField].ToString().Trim()==row1[strKeyField].ToString().Trim())
{
r[strKeyField]=row1[strKeyField]=num.ToString();
break;
}
}
} row2=tempDataSet.Tables["temp"].Rows[0]; //逐一从查询表中将新数据更换到原表中
for(int i=0;i<tempDataSet.Tables["temp"].Columns.Count;i++)
{
string strColumnName=tempDataSet.Tables["temp"].Columns[i].Caption.Trim();
if(row1[strColumnName].ToString().Trim()=="")
row1[strColumnName]=DBNull.Value;
if(row2[strColumnName]!=row1[strColumnName])
row2[strColumnName]=row1[strColumnName];
} //保存到数据库中
DataSet tempXDataSet=tempDataSet.GetChanges();
tempDataAdapter.Update(tempXDataSet,"temp"); }
catch(Exception ee)
{
MessageBox.Show(ee.Message);
result=false;
}
}
return result;
}