Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.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# 数据类型不匹配条件表达式“3个表之间的联接”_C#_Sql_Ms Access - Fatal编程技术网

C# 数据类型不匹配条件表达式“3个表之间的联接”

C# 数据类型不匹配条件表达式“3个表之间的联接”,c#,sql,ms-access,C#,Sql,Ms Access,我有三张表:供应商、账单和付款。每个供应商都有付款和账单。我想检索这样的报告: 供应商名称|账单总额|付款总额|余额 由2个DateTimePicker指定的特定时间段 这是我的SQL查询: OleDbCommand cmd = new OleDbCommand("select c.sup_Name,c.sup_Place,sum(a.bill_Total),sum(d.pa_Value) from (suppliers c left JOIN bills a on c.sup_Id = a

我有三张表:供应商、账单和付款。每个供应商都有付款和账单。我想检索这样的报告:

供应商名称|账单总额|付款总额|余额

由2个DateTimePicker指定的特定时间段

这是我的SQL查询:

OleDbCommand cmd = new OleDbCommand("select c.sup_Name,c.sup_Place,sum(a.bill_Total),sum(d.pa_Value) 
from (suppliers c left JOIN bills a 
on c.sup_Id = a.bill_From) 
left join payments d on c.sup_Id = d.pa_To 
where (a.bill_Date >= '" + txbFrom.Text + "' and a.bill_Date <= '" + txbTo.Text + "') and (d.pa_EntryDate >= '" + txbFrom.Text + "' and d.pa_EntryDate <= '" + txbTo.Text + "') 
group by c.sup_Name,c.sup_Place order by c.sup_Name asc", objConn);

OleDbDataReader dataReader = cmd.ExecuteReader();// Here the error appear.
对于MySQL,我必须转换date:dt=DateTime,这可以很容易地从DateTimePicker中提取出来


不要将参数格式化为SQL字符串:而是使用OleDbParameter为您执行此操作并帮助避免SQL注入攻击


使用参数化查询,但我非常确定MSAccess中的日期应该用分隔符分隔,而不是“.您可以提供更多信息吗?@ValAsensio,我为其添加了一个图像relations@RonBeyer,Sry我说了没有,但它起作用了。。yAlso请注意,除非还指定了时间,否则时间默认为00:00:00,因此如果检查我是否找到了解决方案,感谢您的帮助,请选择日期而不是日期。
dt.ToString("yyyy-MM-dd H:mm:ss");