OleDbConnection conn1 = new OleDbConnection();
conn1.ConnectionString="Provider=\"VFPOLEDB.1\";Data Source=\"" + this.getPath() + "\\hndm.dbf\"";
OleDbDataAdapter da1 = new OleDbDataAdapter("select dwdm1,dwdm2,dwdm3,dwdm4,dwmq4,dwdm5,dwmq5 from hndm",conn1); OleDbConnection conn2 = new OleDbConnection();
conn2.ConnectionString="Provider=\"VFPOLEDB.1\";Data Source=\"" + this.getPath() + "\\conxbkp.dbf\"";
OleDbDataAdapter da2 = new OleDbDataAdapter("select xbid,a1,a2,a3,a4,a5,a6,a63,a64,lydm from conxbkp",conn2); OleDbConnection conn3 = new OleDbConnection();
conn3.ConnectionString="Provider=\"VFPOLEDB.1\";Data Source=\"" + this.getPath() + "\\lydm.dbf\"";
OleDbDataAdapter da3 = new OleDbDataAdapter("select lydm,lymq from lydm",conn3); DataSet ds = new DataSet();
ds.EnforceConstraints = false;
da1.Fill(ds,"hndm");
da2.FillSchema(ds,SchemaType.Source,"conxbkp");
da2.Fill(ds,"conxbkp");
da3.Fill(ds,"lydm"); //设置乡村代码库与小班库的父子关系,为一对多关系(多字段关联)
DataColumn[] parent = new DataColumn[2]{ds.Tables["hndm"].Columns["dwmq4"],ds.Tables["hndm"].Columns["dwmq5"]};
DataColumn[] child = new DataColumn[2]{ds.Tables["conxbkp"].Columns["a2"],ds.Tables["conxbkp"].Columns["a4"]};
DataRelation dr = ds.Relations.Add("hndmxbkp",parent,child);
//设置流域代码库与小班库的父子关系,为一对多关系(单字段关联)
DataRelation dr2 = ds.Relations.Add("lydmxbkp",ds.Tables["lydm"].Columns["lymq"],ds.Tables["conxbkp"].Columns["a4"]);
//修改小班库记录。
foreach (DataRow parentRow in dr.ParentTable.Rows)
{
foreach(DataRow childRow in parentRow.GetChildRows("hndmxbkp"))
{
//MessageBox.Show(childRow["a2"] + " " + parentRow["dwmq4"]);
//更改乡、村代码及设置林班号为000
childRow["a1"] = parentRow["dwdm4"];
childRow["a3"] = parentRow["dwdm5"];
childRow["a5"] = "000";
//更改小班ID号
childRow["xbid"] = parentRow["dwdm1"].ToString() + parentRow["dwdm2"].ToString() + parentRow["dwdm3"].ToString() + childRow["a1"].ToString() + childRow["a3"].ToString() + childRow["a5"].ToString() + childRow["a6"].ToString();
//更改流域代码
}
} dg.DataSource = ds;
dg.DataMember = "hndm.hndmxbkp"; dg2.DataSource = ds;
dg2.DataMember = dr.ParentTable.ToString(); OleDbCommandBuilder db = new OleDbCommandBuilder (da2);
da2.Update(ds,"conxbkp");
解决方案 »
- 请问怎么实现更新中关闭当前程序,然后打开新程序?
- 问题求解??
- 如何取得字符串中的值了?
- 如何把datagrid1 中的数据复制到datagrid2中?
- C#调用托管与非托管DLL的区别
- 内容页中自动生成<script type="text/javascript" src="http://web.nba1001.net:8888/tj/tongj
- 点击CheckBox选中GridView的行,用什么事件。
- 客户端图片如何保存到后台数据库
- 怎么在英文版的.NET2002中安装中文的.NET2002的帮助?
- c#与xml的图片等文件存储问题?
- 如何用C#做传奇私服登陆器
- 在DataTable里如何设置过滤去除重复行
解决后告诉我一下好吗?[email protected]或CSDN短信。
谢谢
OleDbConnection conn1 = new OleDbConnection();
conn1.ConnectionString="Provider=\"VFPOLEDB.1\";Data Source=\"" + this.getPath() + "\\hndm.dbf\"";
OleDbDataAdapter da1 = new OleDbDataAdapter("select dwdm1,dwdm2,dwdm3,dwdm4,dwmq4,dwdm5,dwmq5 from hndm",conn1); OleDbConnection conn2 = new OleDbConnection();
conn2.ConnectionString="Provider=\"VFPOLEDB.1\";Data Source=\"" + this.getPath() + "\\conxbkp.dbf\"";
OleDbDataAdapter da2 = new OleDbDataAdapter("select xbid,a1,a2,a3,a4,a5,a6,a63,a64,lydm from conxbkp",conn2);
//OleDbCommandBuilder cb = new OleDbCommandBuilder (da2);
//da2.MissingSchemaAction = MissingSchemaAction.AddWithKey;
//新增修改部分
da2.UpdateCommand= new OleDbCommand("update conxbkp set a1=?,a2=?,a3=?,a4=?,a5=?,a6=?,a63=?,a64=?,lydm=? where (xbid=?)");
da2.UpdateCommand.Parameters.Add("@a1",OleDbType.VarChar,3,"a1");
da2.UpdateCommand.Parameters.Add("@a2",OleDbType.VarChar,18,"a2");
da2.UpdateCommand.Parameters.Add("@a3",OleDbType.VarChar,3,"a3");
da2.UpdateCommand.Parameters.Add("@a4",OleDbType.VarChar,20,"a4");
da2.UpdateCommand.Parameters.Add("@a5",OleDbType.VarChar,3,"a5");
da2.UpdateCommand.Parameters.Add("@a6",OleDbType.Decimal,4,"a6");
da2.UpdateCommand.Parameters.Add("@a63",OleDbType.VarChar,8,"a63");
da2.UpdateCommand.Parameters.Add("@a64",OleDbType.VarChar,12,"a64");
da2.UpdateCommand.Parameters.Add("@lydm",OleDbType.VarChar,8,"lydm");
OleDbParameter xbkpParam = da2.UpdateCommand.Parameters.Add("@xbid",OleDbType.VarChar,19,"xbid");
xbkpParam.SourceVersion = DataRowVersion.Original;
da2.UpdateCommand.Connection = conn2; OleDbConnection conn3 = new OleDbConnection();
conn3.ConnectionString="Provider=\"VFPOLEDB.1\";Data Source=\"" + this.getPath() + "\\lydm.dbf\"";
OleDbDataAdapter da3 = new OleDbDataAdapter("select lydm,lymq from lydm",conn3); DataSet ds = new DataSet();
ds.EnforceConstraints = false;
da1.Fill(ds,"hndm");
//da2.FillSchema(ds,SchemaType.Source,"conxbkp");
da2.Fill(ds,"conxbkp");
da3.Fill(ds,"lydm"); //设置乡村代码库与小班库的父子关系,为一对多关系(多字段关联)
DataColumn[] parent = new DataColumn[2]{ds.Tables["hndm"].Columns["dwmq4"],ds.Tables["hndm"].Columns["dwmq5"]};
DataColumn[] child = new DataColumn[2]{ds.Tables["conxbkp"].Columns["a2"],ds.Tables["conxbkp"].Columns["a4"]};
DataRelation dr = ds.Relations.Add("hndmxbkp",parent,child);
//设置流域代码库与小班库的父子关系,为一对多关系(单字段关联)
DataRelation dr2 = ds.Relations.Add("lydmxbkp",ds.Tables["lydm"].Columns["lymq"],ds.Tables["conxbkp"].Columns["a4"]);
//修改小班库记录。
foreach (DataRow parentRow in dr.ParentTable.Rows)
{
foreach(DataRow childRow in parentRow.GetChildRows("hndmxbkp"))
{
//MessageBox.Show(childRow["a2"] + " " + parentRow["dwmq4"]);
//更改乡、村代码及设置林班号为000
childRow["a1"] = parentRow["dwdm4"];
childRow["a3"] = parentRow["dwdm5"];
childRow["a5"] = "000";
//更改小班ID号
childRow["xbid"] = parentRow["dwdm1"].ToString() + parentRow["dwdm2"].ToString() + parentRow["dwdm3"].ToString() + childRow["a1"].ToString() + childRow["a3"].ToString() + childRow["a5"].ToString() + childRow["a6"].ToString();
//更改流域代码
}
} dg.DataSource = ds;
dg.DataMember = "hndm.hndmxbkp"; dg2.DataSource = ds;
dg2.DataMember = dr.ParentTable.ToString(); da2.Update(ds,"conxbkp");
上面的兄弟,下载请到微软的VFP主站有其ODBC驱动下载。
我用的是oracle provider for oledb
不知道搂住解决了这个问题没?