Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 单击一个按钮将创建两个事件_C#_Database_Connection_Oledbconnection_Oledbcommand - Fatal编程技术网

C# 单击一个按钮将创建两个事件

C# 单击一个按钮将创建两个事件,c#,database,connection,oledbconnection,oledbcommand,C#,Database,Connection,Oledbconnection,Oledbcommand,我需要创建一个按钮,使两个事件,并保存到数据库中(员工的到达和离开时间) 我需要做的第一次点击按钮将员工的到达时间保存到数据库中,第二次点击相同的按钮将保存员工的离开时间(当然不是有两个按钮) 我想我需要一种计数器来计算按钮点击次数,或者类似的东西,但我真的不知道如何编写这样的程序,所以如果你能帮我的话 这就是我目前所拥有的请注意,代码不起作用,所以除了我不知道如何编程之外,没有任何问题。多谢各位 int counter = 0; public void button1_Click(ob

我需要创建一个按钮,使两个事件,并保存到数据库中(员工的到达和离开时间)

我需要做的第一次点击按钮将员工的到达时间保存到数据库中,第二次点击相同的按钮将保存员工的离开时间(当然不是有两个按钮)

我想我需要一种计数器来计算按钮点击次数,或者类似的东西,但我真的不知道如何编写这样的程序,所以如果你能帮我的话

这就是我目前所拥有的请注意,代码不起作用,所以除了我不知道如何编程之外,没有任何问题。多谢各位

int counter = 0;
    public void button1_Click(object sender, EventArgs e)
    {
        counter++;
        try
        {
            if (counter == 1)
            {

                OleDbConnection myConnection= new OleDbConnection("\\CONNECTION PATH");
                OleDbCommand cmd = new OleDbCommand();
                cmd.Connection = myConnection;
                cmd.CommandText = "Insert into Weekdays (Arrival)" + "values(@Arrival)";

                cmd.Parameters.AddWithValue("@Arrival", DateTime.Now);

                myConnection.Open();
                cmd.ExecuteNonQuery();
                MessageBox.Show("Arrival added.");
                myConnection.Close();

            }
            else if (counter == 2)
            {
                OleDbConnection myConnection= new OleDbConnection("\\CONNECTION PATH");
                OleDbCommand cmd = new OleDbCommand();
                cmd.Connection = myConnection;
                cmd.CommandText = "Insert into Weekdays (Departure)" + "values(@Departure)";

                cmd.Parameters.AddWithValue("@Departure", DateTime.Now);

                myConnection.Open();
                cmd.ExecuteNonQuery();
                MessageBox.Show("Departure added.");
                myConnection.Close();
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }
快速和肮脏的方式:

    private void button1_Click(object sender, EventArgs e)
    {
        if (button1.Tag == null)
        {
            button1.Tag = "toogled";

            // run event 1
        }
        else
        {
            button1.Tag = null;

            // run event 2
        }
    }

您可以创建一个bool来指示员工是否已打卡

bool clockedIn = false;

public void button1_Click(object sender, EventArgs e)
{
    if (!clockedIn)
    {
        // employee just arrived - log arrival time
    }
    else
    {
        // employee leaving - log departure time
    }

    clockedIn = !clockedIn;
}

哦,行得通。准确地说,是两次;直到计数器变为3。我同意Grant的回答,但另外还更改了按钮的文本(如在“到达”和“离开”之间交替切换)以强调其当前功能并避免混淆。@elgonzo它在条件表达式中提供了数据类型不匹配。错误为-->cmd.ExecuteNonQuery()…datetime有问题。现在?@GrantWinney两人都在约会/Time@fkr,很抱歉,我没有查看您的全部代码。我的评论是专门针对您切换按钮功能的逻辑,而不是关于您处理数据库的代码。很抱歉造成混淆:)@GrantWinney它现在可以工作了,但它在两个不同ID下设置了日期…and日期设置为1990 lol-。-它给我条件表达式中的数据类型不匹配。错误为-->cmd.ExecuteNonQuery();…日期时间有问题。现在?它可能工作正常,但给我条件表达式中的数据类型不匹配。错误为-->cmd.ExecuteNonQuery();…日期时间有问题。现在?