数据类型不匹配条件表达式“在3个表之间连接”

时间:2015-06-16 14:18:06

标签: c# sql ms-access

enter image description here 我有3个表:供应商,账单和付款。每个供应商都有付款和账单。我想要检索一个像这样的报告:

  

供应商名称|总票据|总付款|平衡

对于由DateTimePickers指定的特定时间段。

这是我的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.

2 个答案:

答案 0 :(得分:0)

对于MySQL我必须转换日期:dt = DateTime,可以很容易地从DateTimePicker中提取。

dt.ToString("yyyy-MM-dd H:mm:ss");

答案 1 :(得分:0)

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

https://msdn.microsoft.com/en-us/library/system.data.oledb.oledbparameter(v=vs.110).aspx