在access中建了个查询,类似于存储过程,name= queryReportData
对日期类型参数传入string类型,过程内使用CDate函数来转换, 如下select Format(sum(t.pay_amount),'0.00')
from sell_report_info t
where t.pay_date >= CDate(@startDate)
and t.pay_date <= CDate(@endDate)
and Format(t.fcd,'yyyy-mm-dd') = Format(now(),'yyyy-mm-dd')
and left(t.re,3) = ''''+[@uname]
and t.order_status = @statusC#调用查询过程,实现代码如下 using (OleDbCommand cmd = new OleDbCommand("queryReportData", DBHelper.getConn()))
{
cmd.CommandType = CommandType.StoredProcedure;
if (cmd.Connection.State != ConnectionState.Open)
cmd.Connection.Open();
OleDbTransaction trans = null; trans = cmd.Connection.BeginTransaction();
cmd.Transaction = trans;
cmd.Parameters.Add("@uname", OleDbType.VarWChar);
cmd.Parameters.Add("@startDate", OleDbType.VarWChar);
cmd.Parameters.Add("@endDate", OleDbType.VarWChar);
cmd.Parameters.Add("@status", OleDbType.VarWChar); cmd.Parameters["@uname"].Value = uname;
cmd.Parameters["@startDate"].Value = startData;
cmd.Parameters["@endDate"].Value = endDate;
cmd.Parameters["@status"].Value = status;
cmd.ExecuteNonQuery(); OleDbDataAdapter da = new OleDbDataAdapter(cmd);
DataSet ds = new DataSet();
try
{
//填充ds
da.Fill(ds);
// 清除cmd的参数集合
cmd.Parameters.Clear();
//返回ds
return ds;
}
catch
{
throw;
}
finally {
trans.Commit();
//关闭连接,抛出异常
cmd.Connection.Close();
}
}
结果执行到cmd.ExecuteNonQuery();时抛出异常,标准表达式中的数据类型不匹配,
我把参数放进sql中查询是OK的,这个问题纠结了我两天了,请各位大神帮忙看看, 谢谢!accessc#winform
对日期类型参数传入string类型,过程内使用CDate函数来转换, 如下select Format(sum(t.pay_amount),'0.00')
from sell_report_info t
where t.pay_date >= CDate(@startDate)
and t.pay_date <= CDate(@endDate)
and Format(t.fcd,'yyyy-mm-dd') = Format(now(),'yyyy-mm-dd')
and left(t.re,3) = ''''+[@uname]
and t.order_status = @statusC#调用查询过程,实现代码如下 using (OleDbCommand cmd = new OleDbCommand("queryReportData", DBHelper.getConn()))
{
cmd.CommandType = CommandType.StoredProcedure;
if (cmd.Connection.State != ConnectionState.Open)
cmd.Connection.Open();
OleDbTransaction trans = null; trans = cmd.Connection.BeginTransaction();
cmd.Transaction = trans;
cmd.Parameters.Add("@uname", OleDbType.VarWChar);
cmd.Parameters.Add("@startDate", OleDbType.VarWChar);
cmd.Parameters.Add("@endDate", OleDbType.VarWChar);
cmd.Parameters.Add("@status", OleDbType.VarWChar); cmd.Parameters["@uname"].Value = uname;
cmd.Parameters["@startDate"].Value = startData;
cmd.Parameters["@endDate"].Value = endDate;
cmd.Parameters["@status"].Value = status;
cmd.ExecuteNonQuery(); OleDbDataAdapter da = new OleDbDataAdapter(cmd);
DataSet ds = new DataSet();
try
{
//填充ds
da.Fill(ds);
// 清除cmd的参数集合
cmd.Parameters.Clear();
//返回ds
return ds;
}
catch
{
throw;
}
finally {
trans.Commit();
//关闭连接,抛出异常
cmd.Connection.Close();
}
}
结果执行到cmd.ExecuteNonQuery();时抛出异常,标准表达式中的数据类型不匹配,
我把参数放进sql中查询是OK的,这个问题纠结了我两天了,请各位大神帮忙看看, 谢谢!accessc#winform
解决方案 »
- C#如何做出这样的,点击上面四个不同的大项,下面显示不同的面板
- 使用线程如何更新主界面上的datagridview控件
- 100分请教串口数据读取?
- 2003的工程转成2005的老是出现“不存在类型或命名空间名称”怎么解决
- c#做的图形界面从从c/s程序,后期出现几个问题,期待解决方案。
- 程序无法运行,请大家看看是什么问题?
- 如何通过Microsoft OLE DB Provider For Oracle连接ORACLE9i?
- 串口还是串口-问题有点奇怪了-收发数据不正常
- 兄弟们,Win8开发里,怎么在一个应用里调用另一个应用?
- 谁能帮助我写这样一个正则表达式?
- 请问下protected,private,public修饰类是什么情况?
- 关于二维码扫描枪录入的触发事件问题
select Format(sum(t.pay_amount),'0.00')
from sell_report_info t
where t.pay_date >= CDate(@startDate)
and t.pay_date <= CDate(@endDate)
and Format(t.fcd,'yyyy-mm-dd') = Format(now(),'yyyy-mm-dd')
and left(t.re,3) = ''''+[@uname]
and t.order_status = @statusAccess内有Format函数吗?还有CDate不知道你转换的结果是什么?我记得日期应该用#来格式化它,如果上面语句你在Access中使用,你可以先预览sql代码的结果是什么?