I use MS Access database as a database for my C# windows application. I want to get one row for every date as a result from my queries, instead of several. In my C# application I made these command strings with which I fill the dataset tables:
comstring1=
"SELECT MAGACIN.GBR, MAGACIN.DATA, NOVI.AB, Sum(IIf([sifra]='0992201',[kol],Null)) AS Addblue,Sum(IIf([sifra]='0999001',[kol],Null)) AS Antifriz, Sum(IIf([sifra]='0991000',[kol],Null)) AS Gorivo, Sum(IIf([sifra]='0993050',[kol],Null)) AS Motmaslo, Sum(IIf([sifra]='0992201',[kol],Null))/Sum(IIf([sifra]='0991000',[kol],Null))*100 AS Addbluegorivo FROM MAGACIN INNER JOIN NOVI ON MAGACIN.GBR = NOVI.GBR GROUP BY MAGACIN.GBR, MAGACIN.DATA, NOVI.AB HAVING (((MAGACIN.GBR)=[@gbr1]) AND ((NOVI.AB)=[@ab1] or (NOVI.AB)=[@ab2]) AND ((MAGACIN.DATA)>=[data1] And (MAGACIN.DATA)<=[data2])) ORDER BY MAGACIN.DATA";
the resul for the date>=10.10.20111 and date<=13.10.2011 is
| GBR | DATA | AB | Addblue | Antifriz | Gorivo | Motmaslo | Addbluegorivo |
|---|---|---|---|---|---|---|---|
| 1001 | 10.10.2011 | GP | 115 | ||||
| 1001 | 11.10.2011 | GP | 40 | ||||
| 1001 | 12.10.2011 | GP | 12 | 110 | 10,9090909090909 | ||
| 1001 | 13.10.2011 | GP | 12 | 125 | 9,6 |
comstring2 =
"SELECT NALOG1.GBRV, NALOG1.DATA, Min(IIf(([NALOG1].[POCKM]>0),[NALOG1.POCKM],Null)) AS pockm, Max([NALOG1.KRAJKM]) AS krajkm, Max([NALOG1.KRAJKM])-Min(IIf(([NALOG1].[POCKM]>0),[NALOG1.POCKM],Null)) AS RAZLIKA, Max(NOVI.DATAP) AS Poslprov, Max(NOVI.KMP1) AS KMP, Max(NOVI.DATAS) AS Poslserv, Max(NOVI.KMS1) AS KMS, Sum(NALOG1.km) AS SUMKM, IIf(Sum(NALOG1.km)>=(([NOVI].[KMS1]+[NOVI].[KMS2])-1000),'ZA SERVIS',(IIf(Sum(NALOG1.KM)>=(([NOVI].[KMP1]+[NOVI].[KMP2])-1000),'PROVERKA',' '))) AS Zabeleska FROM NALOG1 INNER JOIN NOVI ON NALOG1.GBRV = NOVI.GBR GROUP BY NALOG1.GBRV, NALOG1.DATA, NOVI.KMP1, NOVI.KMP2, NOVI.KMS1, NOVI.KMS2, NOVI.AB HAVING (((NALOG1.GBRV)=[@gbr1])and ((NOVI.AB)=[@ab1] or (NOVI.AB)=[@ab2]) AND ((NALOG1.DATA)>=[@data1] And (NALOG1.DATA)<=[@data2]))";
the result from the second query is
| GBRV | DATA | pockm | krajkm | Razlika | MaxOfDATAP | MaxOfDATAS | sumkm | MaxOfKMP1 | MaxOfKMS1 |
|---|---|---|---|---|---|---|---|---|---|
| 1001 | 10.10.2011 | 43580 | 43867 | 287 | 27.09.2011 | 287 | 41400 | 41400 | |
| 1001 | 11.10.2011 | 43867 | 43967 | 100 | 27.09.2011 | 100 | 41400 | 41400 | |
| 1001 | 12.10.2011 | 43967 | 44254 | 287 | 27.09.2011 | 287 | 41400 | 41400 | |
| 1001 | 13.10.2011 | 44254 | 44541 | 287 | 27.09.2011 | 287 | 41400 | 41400 |
in the C# windows application I have:
......
command1.CommandText = comstring1;
command2.CommandText = comstring2;
......
oleDBDataAdapter1.SelectCommand = command1;
oleDBDataAdapter1.Fill(dataSet2, "baraniotselect")
oleDBDataAdapter1.SelectCommand = command2;
oleDBDataAdapter1.Fill(dataSet2, "PocKrajRazl1");
When I run the strings separatelly as queries in Access, I get what I want (for each query), correct result, i.e. one row for every date, but when I use the strings for filling two tables in the dataset, I get several rows for one date, which is not what I am aiming at. I.e. I get several rows for one date with different values for addblue, antifriz, Motmaslo, Addbluegor, gorivo and I want to get for every date of the range a single rows with values for the fields in one row. In other words, I want just to merge both tables which I get as a result from the queries above.
Could anybody help me please?
Thanks in advance
Replies
Know the answer? Post it — somebody with the same question will find it here.