[英]Grouping when working with parameters and OleDbCommand, Crystal reports
I have an sql statement with group by and parameters: 我有一个带有group by和参数的sql语句:
string comstring =
"SELECT NOVI.GBR as gbrnov,
NOVI.AB as abnov,
NALOG1.DATA as datanov,
Min(NALOG1.POCKM) AS MinOfPOCKM,
Max(NALOG1.KRAJKM) AS MaxOfKRAJKM,
(Max(NALOG1.KRAJKM)-Min(NALOG1.POCKM)) AS RAZLIKA,
Count(IIf(([MAGACIN.SIFRA]='0991000'),[MAGACIN.KOL],Null)) AS Gorivo,
Avg(IIf(([MAGACIN.SIFRA]='0991000'),[MAGACIN.KOL],Null)/100) AS potrosgor100km,
Sum(IIf(([MAGACIN.SIFRA]='0993050' Or [MAGACIN.SIFRA]='0993051'),[MAGACIN.KOL],Null)) AS Motmaslo,
Sum(IIf(([MAGACIN.SIFRA]='0992201'),[MAGACIN.KOL],Null)) AS Addblue,
([Addblue]/[Gorivo])*100 AS Addbluegor,
Sum(IIf(([MAGACIN.SIFRA]='0999001'),[MAGACIN.KOL],Null)) AS Antifriz,
NOVI.DATAP,
NOVI.DATAS,
IIf(([NOVI].[KM]<=([NOVI].[KMS1]+[NOVI].[KMS2])),'ZA SERVIS',(IIf(([NOVI].[KM]<=([NOVI].[KMP1]+[NOVI].[KMP2])),'PROVERKA',''))) AS Zabeleska
FROM (NALOG1 INNER JOIN NOVI ON NALOG1.GBRV = NOVI.GBR)
INNER JOIN MAGACIN ON NOVI.GBR = MAGACIN.GBR
where (((NOVI.GBR)>=? And (NOVI.GBR)<=?)
AND ( ((NOVI.AB)=?)
OR ((NOVI.AB)=?) )
AND ((NALOG1.DATA)<=? and (NALOG1.DATA)>=?) )
GROUP BY NOVI.GBR,
NOVI.AB,
NALOG1.DATA,
([Addblue]/[Gorivo])*100,
NOVI.DATAP,
NOVI.DATAS,
IIf(([NOVI].[KM]<=([NOVI].[KMS1]+[NOVI].[KMS2])),'ZA SERVIS',(IIf(([NOVI].[KM]<=([NOVI].[KMP1]+[NOVI].[KMP2])),'PROVERKA','')))";
I get an error No value given for one or more required parameters
in 我收到一个错误,
No value given for one or more required parameters
提供值
oleDBDataAdapter1.Fill(dataSet2,"Tabela");
When using it with certain values like: 当将其与某些值一起使用时:
string comstring =
"SELECT NOVI.GBR as gbrnov,
NOVI.AB as abnov,
NALOG1.DATA as datanov,
Min(NALOG1.POCKM) AS MinOfPOCKM,
Max(NALOG1.KRAJKM) AS MaxOfKRAJKM,
(Max(NALOG1.KRAJKM)-Min(NALOG1.POCKM)) AS RAZLIKA,
Count(IIf(([MAGACIN.SIFRA]='0991000'),[MAGACIN.KOL],Null)) AS Gorivo,
Avg(IIf(([MAGACIN.SIFRA]='0991000'),[MAGACIN.KOL],Null)/100) AS potrosgor100km,
Sum(IIf(([MAGACIN.SIFRA]='0993050' Or [MAGACIN.SIFRA]='0993051'),[MAGACIN.KOL],Null)) AS Motmaslo,
Sum(IIf(([MAGACIN.SIFRA]='0992201'),[MAGACIN.KOL],Null)) AS Addblue,
([Addblue]/[Gorivo])*100 AS Addbluegor,
Sum(IIf(([MAGACIN.SIFRA]='0999001'),[MAGACIN.KOL],Null)) AS Antifriz,
NOVI.DATAP,
NOVI.DATAS,
IIf(([NOVI].[KM]<=([NOVI].[KMS1]+[NOVI].[KMS2])),'ZA SERVIS',(IIf(([NOVI].[KM]<=([NOVI].[KMP1]+[NOVI].[KMP2])),'PROVERKA',''))) AS Zabeleska
FROM (NALOG1 INNER JOIN NOVI ON NALOG1.GBRV = NOVI.GBR)
INNER JOIN MAGACIN ON NOVI.GBR = MAGACIN.GBR
where (((NOVI.GBR)>='1001' And (NOVI.GBR)<='1080')
AND ( ((NOVI.AB)='AK')
OR ((NOVI.AB)='AK') )
AND ((NALOG1.DATA)<=#10/31/2011#
and (NALOG1.DATA)>=#10/31/2011#) )
GROUP BY NOVI.GBR,
NOVI.AB,
NALOG1.DATA,
([Addblue]/[Gorivo])*100,
NOVI.DATAP,
NOVI.DATAS,
IIf(([NOVI].[KM]<=([NOVI].[KMS1]+[NOVI].[KMS2])),'ZA SERVIS',(IIf(([NOVI].[KM]<=([NOVI].[KMP1]+[NOVI].[KMP2])),'PROVERKA','')))";
there wasn't any problem. 没问题
Could anybody help me please? 有人可以帮我吗?
Its the problem with your query: 这是您查询的问题:
where (((NOVI.GBR)>=? And (NOVI.GBR)<=?)
AND ( ((NOVI.AB)=?)
OR ((NOVI.AB)=?) )
AND ((NALOG1.DATA)<=? and (NALOG1.DATA)>=?) )
You need to supply proper value instead of ?
您需要提供适当的价值而不是
?
, probably you might do '?'
,可能您会这样做
'?'
, but I think it won't work for (NALOG1.DATA)
(By seeing your other query I'm guessing that, its data type is Date
) ,但我认为它不适用于
(NALOG1.DATA)
(通过查看您的其他查询,我猜它的数据类型为Date
)
Edit for Comments: 编辑评论:
If you are using parameters, then you need to pass them on the order on which ?
如果您使用的参数,那么你需要传递的顺序在其上
?
is used. 用来。 You cannot use named parameters like below, in
oledbcommand
您不能在
oledbcommand
使用如下所示的命名参数
command.Parameters.AddWithValue("@param1", "1001");
If you used 6 ?
如果您使用6
?
in your query then, you need to pass 6 arguments according to the order. 然后在您的查询中,您需要根据顺序传递6个参数。
OleDbParameter[] oledbParams = new OleDbParameter[6];
//To be added in proper order.
oledbParams[0] = new OleDbParameter("PN1", "1001");
oledbParams[1] = new OleDbParameter("PN2", "1002");
.
.
oledbParams[6] = new OleDbParameter("DateValue", DateTime.Now.Date);
foreach (var p in oledbParams)
{
command.Parameters.Add(p);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.