■13040 |
Re[4]: エクセルデータとDataSetをマージする |
□投稿者/ まぐねしうむ -(2008/01/23(Wed) 20:13:18)
| > getUserDbDataが無いので不明な部分がありますが、
下記にCopyさせて頂きます。
> dsUserData.Merge(ds, false);
> この行の実行結果のDataSetのTablesを見てみて下さい。
ご指摘の通り、Talbesが増えておりました。
そこで、表示するテーブルを変更した所正しくマージされたデータが表示されました。
ただ、このままだとスキーマ?が変更されていると思うので
dsUserData.Tables[0].TableName = "UserData";
でTable名を変更した所、またマージされなくなってしまいました。
(変更前はMDBから取得したDataSet側のTableNameが「Table」になっていました。
TableName変更後マージしたDataSetのTablesの個数を確認した所
1個なのでなんらかのマージの処理は行っていると思います。
お手数ですが引き続き、お付き合いください。
また、
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/cpref/html/frlrfSystemDataDataSetClassMergeTopic2.asp
によると、
「Merge メソッドが呼び出されたときは、スキーマが変更されている可能性があるため、
2 つの DataSet オブジェクトのスキーマが比較されます。」と記載があります。
エクセル側のスキーマとは一体どれになるのでしょうか?
◆以下getUserDbDataのコード
private bool getUserDbData(string strOlecommand, ref DataSet ds)
{
if (!Class.Cls_Sql.getSqlData(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\m\user.mdb;Jet OLEDB:Database Password=????", strOlecommand, ref ds))
{
return false;
}
return true;
}
public static bool getSqlData(string strOleDbConn, string strOlecommand, ref DataSet ds)
{
OleDbConnection oleDBcon = null;
OleDbDataAdapter oleDbAda = null;
try
{
oleDBcon = new OleDbConnection(strOleDbConn.ToString());
oleDbAda = new OleDbDataAdapter(strOlecommand, strOleDbConn.ToString());
ds = new DataSet();
oleDbAda.Fill(ds);
}
catch (OleDbException Oex)
{
//ExceptionCheck.run(Oex, true);
return false;
}
finally
{
//ds.Dispose();
oleDbAda.Dispose();
oleDBcon.Dispose();
}
return true;
} |
|