Witam,
Mam dość dziwny problem z wyświetleniem danych. Chodzi o to, że "te same zapytanie" w MS SQL MNAGMENT STDUIO zwraca inne wartości niż w gridview asp.net
Co śmieszniejsze nie zawsze np. dla jednego zakresu dat potrafi zwrócić takie same wartości a już inne daty powodują, że zwraca złą wartość w gridview natomiast w mssms zwraca poprawne wartości.
Zapytanie:
SELECT b.id_maszyna, c.Maszyna, SUM(a.Sztuki_dobre) AS Sztuki_dobre, SUM(a.Sztuki_braki_operator + a.Sztuki_braki_ustawiacz) AS Braki,
SUM(b.ilosc) AS ilosc, AVG(a.czas_cyklu) AS czas_cyklu,
((SUM(a.Sztuki_dobre + a.Sztuki_braki_operator + a.Sztuki_braki_ustawiacz) *AVG(a.czas_cyklu)/3600))AS czas_produktywny,
((1*3*8) - (((SUM(a.Sztuki_dobre + a.Sztuki_braki_operator + a.Sztuki_braki_ustawiacz) *AVG(a.czas_cyklu)/3600)))) AS brak_planu,
(SUM(a.Sztuki_dobre) + SUM(a.Sztuki_braki_operator + a.Sztuki_braki_ustawiacz)) AS Ilosc
FROM formularz AS a
INNER JOIN zlecenia AS b ON a.Id_zlecenia = b.id
INNER JOIN maszyny AS c ON b.id_maszyna = c.Id_maszyny
WHERE CONVERT(datetime, a.Data, 101) BETWEEN '2016-04-04' and '2016-04-04' AND a.Usuniety_flaga=0
GROUP BY b.id_maszyna, c.Maszyna
Dla daty '2016-04-04' zwraca poprawne wartości w obu przypadkach:
<image>
</image>
Np dla daty '2016-04-05' w managment studio zwraca poprawne dane
<image>
</image>
Mój GridView
<asp:GridView ID="GridViewRaport1" runat="server" CssClass="gv" ShowHeaderWhenEmpty="True" EmptyDataText="Brak wpisów w Bazie" AlternatingRowStyle-BackColor="#AAB3BB" EmptyDataRowStyle-ForeColor="Red" AutoGenerateColumns="False" DataKey="Maszyna" Width="600px" >
<AlternatingRowStyle BackColor="#AAB3BB" />
<Columns>
<asp:TemplateField HeaderText="" FooterStyle-BackColor ="red">
<ItemTemplate>
<asp:Label ID="lblMaszynyRaport" runat="server" Text='<%# Eval("Maszyna")%>'></asp:Label>
</ItemTemplate>
<FooterStyle BackColor="#5D7B9D" />
</asp:TemplateField>
<asp:TemplateField HeaderText="Produkcja dobre">
<ItemTemplate>
<asp:Label ID="lblProdukcjaDobre" runat="server" Text='<%# Eval("Sztuki_dobreTmp")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Braki">
<ItemTemplate>
<asp:Label ID="lblBrakiRaport" runat="server" Text='<%# Eval("BrakiTmp")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Czas produktywny">
<ItemTemplate>
<asp:Label ID="lblCzasProduktywny" runat="server" Text='<%# Eval("czas_produktywnyTmp")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Brak planu">
<ItemTemplate>
<asp:Label ID="lblBrakPlanuRaport" runat="server" Text='<%# Eval("brak_planuTmp")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<EmptyDataRowStyle ForeColor="Red" />
</asp:GridView>
Kod c#
public DataTable generujRaport1(SqlConnection sqlPolaczenie, GridView gridViewRaport1, string dataOd, string dataDo,
int zmiana, int iloscDniPomiedzyDatami)//Metoda- pobiera dane do gridViewRaport1 z bazy danych z formularz
{
string raport1WszystkieZmiany = "SELECT b.id_maszyna, c.Maszyna, SUM(a.Sztuki_dobre) AS Sztuki_dobreTmp, SUM(a.Sztuki_braki_operator + a.Sztuki_braki_ustawiacz) AS BrakiTmp,SUM(b.ilosc) AS iloscTmp, AVG(a.czas_cyklu)AS czas_cykluTmp, ((SUM(a.Sztuki_dobre + a.Sztuki_braki_operator + a.Sztuki_braki_ustawiacz) * AVG(a.czas_cyklu)/3600))AS czas_produktywnyTmp," +"((" + iloscDniPomiedzyDatami + "*3*8) - (((SUM(a.Sztuki_dobre + a.Sztuki_braki_operator + a.Sztuki_braki_ustawiacz) *AVG(a.czas_cyklu)/3600)))) AS brak_planuTmp, (SUM(a.Sztuki_dobre) + SUM(a.Sztuki_braki_operator + a.Sztuki_braki_ustawiacz)) AS IloscTmp FROM formularz AS a INNER JOIN zlecenia AS b ON a.Id_zlecenia = b.id INNER JOIN maszyny AS c ON b.id_maszyna = c.Id_maszyny WHERE CONVERT(datetime, a.Data, 101) BETWEEN '" + dataOd + "'and'" + dataDo + "'" + "AND a.Usuniety_flaga=0 AND a.id_ GROUP BY b.id_maszyna=@id_maszyna, c.Maszyna";
string raport1WybraneZmiany = "";
DataTable dt = new DataTable();
try
{
if (zmiana == 0)
{
using (SqlCommand cmd = new SqlCommand(raport1WszystkieZmiany, sqlPolaczenie))
{
SqlDataAdapter adpt = new SqlDataAdapter(cmd);
adpt.Fill(dt);
gridViewRaport1.DataSource = dt;
gridViewRaport1.DataBind();
}
}
else if (zmiana != 0)
{
using (SqlCommand cmd = new SqlCommand(raport1WybraneZmiany, sqlPolaczenie))
{
SqlDataAdapter adpt = new SqlDataAdapter(cmd);
adpt.Fill(dt);
gridViewRaport1.DataSource = dt;
gridViewRaport1.DataBind();
}
}
}
catch
{
}
return dt;
}
Tutaj kilka zmiennych jest podstawianych z kontrolek, ale sprawdziłem wartości na 100% są poprawne.