メッセージ ボックスの警告をポップアップするこの小さなメソッドがあります。問題は、1 つではなく 3 つのメッセージ ボックスがポップアップすることです! この問題に対処するためにいくつかの方法を試しました (データベースには繰り返し可能な行が含まれていませんが、コード内の bool 変数や sql query で Distinct を使用するなど)。
アイデアは、行ごとに3回ではなく、if条件に違反する行ごとにメッセージボックスを1回ポップアップさせることです。では、このメッセージ ボックスが 1 回ではなく 3 回表示されるのはなぜですか? そしてそれを修正する方法は?
void msds_update()
{
SqlConnection con = new SqlConnection();
con.ConnectionString = "server=(local);database=PhilipsMaterials;Integrated Security=SSPI;";
con.Open();
DataSet ds = new DataSet();
DataTable dt = new DataTable();
string sql = "Select * from [PhilipsMaterials].[dbo].[Materials]";
SqlDataAdapter da = new SqlDataAdapter(sql, con);
da.Fill(ds);
dt = ds.Tables[0];
DateTime longupdate;
DateTime shortupdate;
foreach (DataRow row in dt.Rows)
{
longupdate = Convert.ToDateTime(dt.Rows[0]["Long MSDS Update"]);
shortupdate = Convert.ToDateTime(dt.Rows[0]["Short MSDS Update"]);
TimeSpan longsince = DateTime.Now.Subtract(longupdate);
int longyears = (int)(longsince.Days / 365.25);
TimeSpan shortsince = DateTime.Now.Subtract(shortupdate);
int shortyears = (int)(shortsince.Days / 365.25);
bool flag = false ;
bool shown = false;
if (longyears > 4.5) { flag = true; }
if (flag && !shown)
{
string longmsdsname = Convert.ToString(dt.Rows[0]["Name"]);
string msg = "Long Msds " + longmsdsname + " must be updated";
MessageBox.Show(msg);
shown = true;
}
flag = false;
shown = false;
if (shortyears > 4.5) { flag = true; }
if (flag && !shown)
{
string shortmsdsname = Convert.ToString(dt.Rows[0]["Name"]);
string msg = "Short Msds " + shortmsdsname + " must be updated";
MessageBox.Show(msg);
shown = true;
}
}
con.Close();
}