如何将当前日期插入访问数据库?

时间:2016-07-25 16:33:40

标签: ms-access c#-4.0

实际上我正在创建一个我插入用户销售数量的应用程序,销售数量正在更新,但是当我通过将当前日期更改为不更新细节而在查询中进行编辑时 在这里我把整个代码

private void button1_Click_1(object sender, EventArgs e)
        {

            this.txtinput.MaxLength = 4;
            cmd = new OleDbCommand("update Login set Sales_count= IIF(IsNull(Sales_count), 0, Sales_count) + 1 where [Unique_No]=@Unique_No and [To_Date]='#"+DateTime.Now.ToString("dd/MM/yyyy")+"#'", con);
            cmd.Parameters.AddWithValue("@Unique_No", txtinput.Text);
                con.Open();
                int n = cmd.ExecuteNonQuery();

                    if (n == 0)
                    {
                        MessageBox.Show("Invalid Unique No. pls try again later");// **Debugger come to this line if i insert [To_Date]='#"+DateTime.Now.ToString("dd/MM/yyyy")+"#'** // if i remove above line in code then its updating fine 

                    }
                    else
                    {
                        this.DialogResult = DialogResult.OK;
                    }



                con.Close();
            }

        }

用于参考粘贴访问表详细信息 enter image description here enter image description here

3 个答案:

答案 0 :(得分:1)

Access SQL支持Date()函数,db引擎可以使用该函数来确定当前日期。因此,您不需要c#代码来获取当前日期并将其连接(eek!)到SQL语句的文本中。并且您也不需要将日期作为SQL参数(不那么令人讨厌)提供。只需让db引擎自行确定Date()

cmd = new OleDbCommand("update Login set Sales_count= IIF(IsNull(Sales_count), 0, Sales_count) + 1 where [Unique_No]=@Unique_No and [To_Date]=Date()", con);

该建议基于您问题中的SQL语句。但是,在评论中,您似乎希望将某些记录的To_Date值更改为今天的日期。我不清楚哪些记录应该更改,所以不知道你需要什么WHERE条款。但要将To_Date值更新为今天的日期,Access SQL应该像这样开始......

UPDATE Login SET To_Date = Date() WHERE ...

答案 1 :(得分:0)

试试这个:

private void button1_Click_1(object sender, EventArgs e)
    {
        DateTime toDay = DateTime.Now;

        this.txtinput.MaxLength = 4;
        cmd = new OleDbCommand("update Login set Sales_count= IIF(IsNull(Sales_count), 0, Sales_count) + 1 where [Unique_No]=@Unique_No and [To_Date]= @to_day", con);
        cmd.Parameters.AddWithValue("@Unique_No", txtinput.Text);
        cmd.Parameters.AddWithValue("@date_now", toDay.ToString("yyyyMMdd"));
            con.Open();
            int n = cmd.ExecuteNonQuery();

                if (n == 0)
                {
                    MessageBox.Show("Invalid Unique No. pls try again later");// **Debugger come to this line if i insert [To_Date]='#"+DateTime.Now.ToString("dd/MM/yyyy")+"#'** // if i remove above line in code then its updating fine 

                }
                else
                {
                    this.DialogResult = DialogResult.OK;
                }



            con.Close();
        }

    }

答案 2 :(得分:0)

根据提供的评论,您需要SET日期。在原始查询中,您在WHERE子句中使用它:

private void button1_Click_1(object sender, EventArgs e)
{
    DateTime toDay = DateTime.Now;

    this.txtinput.MaxLength = 4;
    cmd = new OleDbCommand("update Login set Sales_count= IIF(IsNull(Sales_count), 0, Sales_count) + 1, [To_Date]= @to_day where [Unique_No]=@Unique_No", con);
    cmd.Parameters.AddWithValue("@Unique_No", txtinput.Text);
    cmd.Parameters.AddWithValue("@to_Day", toDay.ToString("yyyyMMdd"));
        con.Open();
        int n = cmd.ExecuteNonQuery();

            if (n == 0)
            {
                MessageBox.Show("Invalid Unique No. pls try again later");// **Debugger come to this line if i insert [To_Date]='#"+DateTime.Now.ToString("dd/MM/yyyy")+"#'** // if i remove above line in code then its updating fine 

            }
            else
            {
                this.DialogResult = DialogResult.OK;
            }



        con.Close();
    }

}

您的语法也不正确,我已更新。如果上述查询有效,请告诉我。