DataSet ds_combined = new DataSet();
foreach (String file1 in openFileDialog1.FileNames)
{
ds = mdbDataset.ReadMdbData(file1, false);
ds_combined = ds_combined.merge(ds);
}
then refer to ds_combinedforeach (String file1 in openFileDialog1.FileNames)
{
ds.merge(mdbDataset.ReadMdbData(file1, false));
}
ds_combined.merge(ds);
foreach (String file1 in openFileDialog1.FileNames)
{
DataSet ds_combined = new DataSet();
DataTable res = new DataTable();
ds = mdbDataset.ReadMdbData(file1, false);
res = frmMain.MergeMultiplemdb(ds);
ds_combined.Merge(ds); // Nothing will display
}
private static DataTable MergeMultiplemdb(DataSet ds1)
{
DataTable retval = new DataTable();
string tablename1 = "EMP_TABLE";
DataTable DTRes1 = ds1.Tables[tablename1];
var results = (from myRow in DTRes1.AsEnumerable()
select myRow).CopyToDataTable();
DataTable dtTemp = (DataTable)results;
retval = dtTemp;
return retval;
}
public static DataSet ReadMdbData(string mdbname, bool pass)
{
DataSet ds = new DataSet(mdbname);
string connectionstring = string.Empty;
if (pass == true)
{
connectionstring = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + mdbname + ";" + "Jet OLEDB:Database Password=XXXXXXXXX";
}
else
{
connectionstring = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + mdbname + ";";
}
using (OleDbConnection cn = new OleDbConnection(connectionstring))
{
cn.Open();
DataTable Schema = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] {null,null,null,"TABLE"});
for (int i = 0; i <= Schema.Rows.Count - 1; i++)
{
try
{
DataTable dt = new DataTable((Schema.Rows[i]["TABLE_NAME"]).ToString());
using (OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * FROM " + (Schema.Rows[i]["TABLE_NAME"]).ToString(), cn))
{
adapter.Fill(dt);
}
ds.Tables.Add(dt);
}
catch (Exception)
{
}
}
cn.Close();
}
return ds;
}
openFileDialog1.FileName = "";
openFileDialog1.ShowDialog();
if (openFileDialog1.FileName != "")
{
DataSet ds_combined = new DataSet();
foreach (String file1 in openFileDialog1.FileNames)
{
DataTable res = new DataTable();
ds = mdbDataset.ReadMdbData(file1, false);
res = frmMain.MergeMultiplemdb(ds);
ds_combined.Merge(ds);
}
dataGridView1.AutoGenerateColumns= true;
dataGridView1.DataSource = ds_combined.Tables[0];
}
How to specify the particular column in the below code.
DataTable res = ds_combined.Tables["EMP_TABLE"];
DataTable res = ds_combined.Tables["EMP_TABLE"];
String fieldToKeep = "Field1";
int recCnt = res.Columns.Count;
for (int i = recCnt - 1; i >= 0; i--)
{
if (res.Columns[i].ColumnName != fieldToKeep)
{
res.Columns.RemoveAt(i);
}
}
DataTable res = ds_combined.Tables["EMP_TABLE"];
String fieldToKeep1 = "Field1";
string fieldToKeep2 = "field2";
string fieldToKeep3 = "field3:'
//etc....
int recCnt = res.Columns.Count;
for (int i = recCnt - 1; i >= 0; i--)
{
if (res.Columns[i].ColumnName != fieldToKeep1)
{
res.Columns.RemoveAt(i);
}
if (res.Columns[i].ColumnName != fieldToKeep2)
{
res.Columns.RemoveAt(i);
}
if (res.Columns[i].ColumnName != fieldToKeep3)
{
res.Columns.RemoveAt(i);
}
}
DataTable res = ds_combined.Tables["EMP_TABLE"];
String[] fieldsToKeep = new string[] { "ID", "Field1" };
int recCnt = res.Columns.Count;
for (int i = recCnt - 1; i >= 0; i--)
{
Boolean KeepIt = false;
for (int j = 0; j < fieldsToKeep.Length; j++)
{
if (res.Columns[i].ColumnName == fieldsToKeep[j])
{
KeepIt = true;
break;
}
}
if (KeepIt == false)
{
res.Columns.RemoveAt(i);
}
}
you probably can load the records into a datatable, and merge them together as per your requirement. then you should able to output the datatable to Excel when necessary.