我正在制作一个小型计划,员工将进出时间。 员工有一个员工ID,这是必须用来进出的时间。
时间安排还可以,但我的问题是,员工可以在很多时间内完成工作而不会超时。
我想要做的是,每当员工入住时,他/她都不允许再次入住,除非他/她超时。
这是我到目前为止所做的:
private void TimeIN()
{
//check if Employee ID belongs to the tbl_humans table
Connection();
sql_connect.Close();
sql_connect.Open();
sql_command = new MySqlCommand("Select * from tbl_humans where ID = '" + textBox1.Text + "' ;", sql_connect);
sql_reader = sql_command.ExecuteReader();
string username;
//string password;
username = (textBox1.Text);
// password = (textBox2.Text);
int count = 0;
while (sql_reader.Read())
{
count = count + 1;
}
//checks if the Employee ID has been already timed in on tbl_loginout
// if it's already timed in, it will display "You time out first"
// but unfortunately, it's not working and still continues to time in the employee even if the employee is already timed in
if (count == 0)
{
try
{
Connection();
sql_connect.Close();
sql_connect.Open();
sql_command = new MySqlCommand
("Select * from tbl_loginout where ID = '" + textBox1.Text +
"' and timein_date = '" + DateTime.Today.ToString() + // checks if the employee is timed in on that day(today)
"' and timeout_time = '" + DateTime.Now.ToString("00:00:00") + // checks if the employee is still not time out
"';", sql_connect);
sql_reader = sql_command.ExecuteReader();
MessageBox.Show("You Time Out first");
}
catch (Exception aa)
{
MessageBox.Show(aa.Message);
}
}
我们将不胜感激。谢谢!
答案 0 :(得分:0)
尝试从查询中删除"' and timeout_time = '" + DateTime.Now.ToString("00:00:00") + "';"
或将其替换为"' and timeout_time = null;"
。
通常,您应该手动编写要使用的SQL并直接执行它以确保它返回您想要的内容。
还有一条评论:执行阅读器sql_reader = sql_command.ExecuteReader();
并且不对结果做任何事情,无论实际结果如何,您都只需显示消息框。