我有这个弹出消息框警告的小方法,问题是它弹出3个消息框而不是一个!我尝试了几种方法来解决这个问题(包括代码中的 bool 变量和在 sql 查询中使用 Distinct ,尽管数据库不包含任何可重复的行)。
这个想法是让违反我的 if 条件的每一行弹出一次消息框,而不是每行弹出 3 次。那么,为什么这个消息框会弹出 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();
}