我不知道这可能是什么问题。
标准表达式中的数据类型不匹配
这是我目前的代码:
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
namespace NiceyBurgerJunction
{
public partial class frmSales : Form
{
OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source = C:\Users\mariel\Desktop\NiceyBurgerJunction\NiceyBurgerJunctionDB.accdb");
int count;
public frmSales()
{
InitializeComponent();
}
private void btnWeeklySales_Click(object sender, EventArgs e)
{
try
{
count = 0;
DateTime from, to;
from = Convert.ToDateTime(dateTimePicker1.Value);
to = Convert.ToDateTime(dateTimePicker2.Value);
dateTimePicker1.Format = DateTimePickerFormat.Short;
dateTimePicker2.Format = DateTimePickerFormat.Short;
con.Open();
OleDbCommand cmd = con.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "SELECT ProdName,SubTotal,OrderDate from EmployeeSale WHERE OrderDate BETWEEN '" + from.ToString("MM/dd/yyyy") + "' AND '" + to.ToString("MM/dd/yyyy") + "' ";
cmd.ExecuteNonQuery();
DataTable dt = new DataTable();
OleDbDataAdapter da = new OleDbDataAdapter(cmd);
da.Fill(dt);
da.SelectCommand = cmd;
count = Convert.ToInt32(dt.Rows.Count.ToString());
dataGridView1.DataSource = dt;
if (count == 0)
{
MessageBox.Show("No records found!");
}
con.Close();
}
catch (Exception ex)
{
MessageBox.Show(" ERROR " + ex);
}
}
}
我的数据库设计格式正确为“OrderDate”,其属性为日期/时间......
答案 0 :(得分:0)
看起来传递给SQL语句的日期格式不正确。
我想它应该是YYYY-MM-DD而不是MM / DD / YYYY。
还要考虑使用带参数的语句。这样你就可以传递你拥有的DateTime,驱动程序将负责格式化。您可以使用DbCommand.Paramerers.Add
API,然后将参数引用为@from
和@to
。
在此处阅读使用参数:https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.parameters(v=vs.110).aspx
你的代码中也存在一些缺陷(比如用ExecuteNonQuery
执行一次命令,在你无缘无故地读取它们的值之后设置日期时间选择器的格式......)。
欢呼声