MS Visual Studio 2012 Expressの使用、C#.NET4.0の使用。
こんにちはみんな、これは単純なものだと思います。
上司の依頼で急いでプログラムをやっていたのですが、今はもっと自由な時間があります。
だから私はそれをよりコンパクトでクリーンにするなどのコードを調べています。
私はこの1つの機能を持っています.....
public void RunMonth()
{
//** top 10 listings*********************//
SetTxtBox1(DateTime.Now.ToString() + " ==== END OF MONTH REPORTS starting.........\r\n");
SetTxtBox1(" **************************************************************************************\r\n");
try
{
VRMtableDESC = querys.TopVRM("DESC");
SetTxtBox1(DateTime.Now.ToString() + " ==== VRM Top has been loaded\r\n");
}
catch
{
SetTxtBox1(DateTime.Now.ToString() + " ==== VRM Top has FAILED\r\n");
}
}
「VRMtableDESC」は、約18のデータテーブルの1つであるデータテーブルです。データテーブルごとに、このtryステートメントが実行されます。
お分かりのように、これは現在、すべてのテーブルに対して18回繰り返されています。代わりに、代わりにテーブルにループして、そこにデータを入力したいと思います。
これを行う方法はありますか?私が知る限り、datatablesとquery.function呼び出しのためにある種のコレクションが必要になります。
これまでのところ、私は空白を打ったので、何かが足りないことを望んでいます。
前もって感謝します
:::: UPDATE ::::わかりました、これまでにこれを設定しました...。
foreach (DataTable tbl in MyDataSet.Tables)
{
tbl.TableName.Equals(querys.TopVRM(""));
}
equalsメソッドは、メソッドの選択においても動的である必要があります。
:: UPDATE(31/10/12)::
こんにちは、エラーが発生しました。一般的なエラー「オブジェクトがオブジェクトのインスタンスに送信されていません」
foreachループのマージで表示されます。
クエリ呼び出しをデバッグしましたが、問題ないようです。
var tables = new SortedDictionary<string, Func<DataTable>>()
{
{"VRMtableDESC", () => querys.TopVRM("DESC")},
{"VRMtableASC", () => querys.BotVRM("ASC")},
{"SpectableDESC", () => querys.TopSpec("DESC")},
{"SpectableASC", () => querys.botSpec("ASC")},
{"ParttableDESC", () => querys.TopPart("DESC")},
{"ParttableASC", () => querys.BotPart("ASC")},
{"MantableDESC", () => querys.TopManual("DESC")},
{"MantableASC", () => querys.BotMan("ASC")}, //why is this first to run?????
{"UsersLockedTbl",() => querys.UserLocked()},
{"NewUsersTbl", () => querys.NewUsers()},
{"VRMtotaltblTOP", () => querys.VRMtotalTOP("")},
{"PARTtotaltblTOP", () => querys.PARTtotalTOP("")},
{"SPECtotaltblTOP", () => querys.SPECtotalTOP("")},
{"MANtotaltblTOP", () => querys.MANtotalTOP("")},
{"VRMtotaltblBOT", () => querys.VRMtotalBOT("")},
{"PARTtotaltblBOT", () => querys.PARTtotalBOT("")},
{"SPECtotaltblBOT", () => querys.SPECtotalBOT("")},
{"MANtotaltblBOT", () => querys.MANtotalBOT("")},
};
foreach(var kvp in tables)
{
try
{
MyDataSet.Tables[kvp.Key].Merge(kvp.Value());//error occurs here
SetTxtBox1(String.Format("{0} ==== {1} has been Loaded\r\n", DateTime.Now.ToString(), kvp.Key));
}catch(Exception e)
{
SetTxtBox1(String.Format("{0} ==== {1} has FAILED\r\n", DateTime.Now.ToString(), kvp.Key));
MessageBox.Show("error:::" + e);
}
}
AutoRunApp();
どんな助けでも素晴らしいでしょう。
アップデート::
これが「bunchofquerys」クラスからのクエリ呼び出しです
public DataTable BotMan(string order)
{
SqlConnection conn = new SqlConnection(myConnString32);
SqlCommand vrm = new SqlCommand();
//BindingSource bindme = new BindingSource();
SqlDataAdapter adapt1 = new SqlDataAdapter(vrm);
// DataSet dataSet1 = new DataSet();
DataTable table1 = new DataTable();
try
{
vrm.Connection = conn;
vrm.CommandType = CommandType.StoredProcedure;
if (order.Equals("DESC"))
{
vrm.CommandText = "dbo.TopManual";
}
vrm.CommandText = "dbo.BotManual";
vrm.CommandTimeout = 360;
vrm.Parameters.AddWithValue("@OrderBy", order);
adapt1.Fill(table1);
return table1;
}
catch (Exception e)
{
MessageBox.Show("eeror::zomg::: " + e);
}
return table1;
}