实际上我正在创建一个我插入用户销售数量的应用程序,销售数量正在更新,但是当我通过将当前日期更改为不更新细节而在查询中进行编辑时 在这里我把整个代码
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();
}
}
答案 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();
}
}
您的语法也不正确,我已更新。如果上述查询有效,请告诉我。