我有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.
答案 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