private void btnProcent_Click(object sender, EventArgs e) { textBox1Focus(); if (Prevzema) { return; } Prevzema = true; if (CurrSortiranje.Equals(Sortiranje.ProcentOpagjacki)) { pbProcent.Image = Resources.LightArrowUp; CurrSortiranje = Sortiranje.ProcentRastecki; } else { pbProcent.Image = Resources.LightArrowDown; pbStara.Image = Resources.DarkArrowDown; pbNova.Image = Resources.DarkArrowDown; pbIme.Image = Resources.DarkArrowDown; CurrSortiranje = Sortiranje.ProcentOpagjacki; } Thread oThread = new Thread(new ThreadStart(PrevzemiStavki)); oThread.Start(); LoadingSemaphore.Release(); }
public void PrevzemiStavki() { string sql = @"SELECT A.IME_STAVKA AS STAVKA, A.CENA_STAVKA || ' ден.' AS CENA, NVL(A.PROSEK, 0) || ' ком/ден' AS NOV, NVL(B.PROSEK, 0) || ' ком/ден' AS STAR, ROUND((A.PROSEK - B.PROSEK)*100/B.PROSEK, 2) || '%' AS PROCENT_NA_PORAST FROM ( SELECT S.IME_MENI, S.IME_STAVKA, S.OPIS_STAVKA, S.CENA_STAVKA, VALIDNOST_STAVKA, ROUND(SUM(V.KOLICHINA_STAVKA) / TO_NUMBER(MAX(N.VREME) - MIN(N.VREME) + 1), 1) AS PROSEK FROM ( SELECT RESTORAN_ID, IME_MENI, STAVKA_ID, IME_STAVKA, VALIDNOST_STAVKA, OPIS_STAVKA, CENA_STAVKA FROM ( SELECT RESTORAN_ID, IME_MENI, STAVKA_ID, IME_STAVKA, VALIDNOST_STAVKA, OPIS_STAVKA, CENA_STAVKA FROM STAVKA WHERE RESTORAN_ID = :RES_ID AND VALIDNOST_STAVKA = 1 ) WHERE (RESTORAN_ID, IME_MENI, IME_STAVKA) IN ( SELECT RESTORAN_ID, IME_MENI, IME_STAVKA FROM STAVKA WHERE RESTORAN_ID = :RES_ID1 AND VALIDNOST_STAVKA = 0 ) ) S LEFT OUTER JOIN VKLUCHUVA V ON S.RESTORAN_ID = V.RESTORAN_ID AND S.IME_MENI = V.IME_MENI AND S.STAVKA_ID = V.STAVKA_ID LEFT OUTER JOIN NARACHKA N ON V.RESTORAN_ID = N.RESTORAN_ID AND V.NARACHKA_ID = N.NARACHKA_ID GROUP BY (S.RESTORAN_ID, S.IME_MENI, S.STAVKA_ID, S.IME_STAVKA, S.VALIDNOST_STAVKA, S.OPIS_STAVKA, S.CENA_STAVKA) ) A JOIN ( SELECT IME_MENI, IME_STAVKA, OPIS_STAVKA, AVG(PROSEK) AS PROSEK FROM ( SELECT S.IME_MENI, S.IME_STAVKA, S.OPIS_STAVKA, VALIDNOST_STAVKA, ROUND(SUM(V.KOLICHINA_STAVKA) / TO_NUMBER(MAX(N.VREME) - MIN(N.VREME) + 1), 1) AS PROSEK FROM ( SELECT RESTORAN_ID, IME_MENI, STAVKA_ID, IME_STAVKA, VALIDNOST_STAVKA, OPIS_STAVKA FROM ( SELECT RESTORAN_ID, IME_MENI, STAVKA_ID, IME_STAVKA, VALIDNOST_STAVKA, OPIS_STAVKA FROM STAVKA WHERE RESTORAN_ID = :RES_ID2 AND VALIDNOST_STAVKA = 0 ) WHERE (RESTORAN_ID, IME_MENI, IME_STAVKA) IN ( SELECT RESTORAN_ID, IME_MENI, IME_STAVKA FROM STAVKA WHERE RESTORAN_ID = :RES_ID3 AND VALIDNOST_STAVKA = 0 ) ) S LEFT OUTER JOIN VKLUCHUVA V ON S.RESTORAN_ID = V.RESTORAN_ID AND S.IME_MENI = V.IME_MENI AND S.STAVKA_ID = V.STAVKA_ID LEFT OUTER JOIN NARACHKA N ON V.RESTORAN_ID = N.RESTORAN_ID AND V.NARACHKA_ID = N.NARACHKA_ID GROUP BY (S.RESTORAN_ID, S.IME_MENI, S.STAVKA_ID, S.IME_STAVKA, S.VALIDNOST_STAVKA, S.OPIS_STAVKA) ) GROUP BY (IME_MENI, IME_STAVKA, OPIS_STAVKA) ) B ON A.IME_STAVKA = B.IME_STAVKA AND A.IME_MENI = B.IME_MENI AND NVL(A.OPIS_STAVKA, 0) = NVL(B.OPIS_STAVKA, 0)" ; if (CurrSortiranje.Equals(Sortiranje.ImeOpagjacki)) { sql += "\nORDER BY STAVKA desc"; } else if (CurrSortiranje.Equals(Sortiranje.ImeRastecki)) { sql += "\nORDER BY STAVKA asc"; } else if (CurrSortiranje.Equals(Sortiranje.ProcentOpagjacki)) { sql += "\nORDER BY ROUND((A.PROSEK - B.PROSEK)*100/B.PROSEK, 2) desc, STAVKA"; } else if (CurrSortiranje.Equals(Sortiranje.ProcentRastecki)) { sql += "\nORDER BY ROUND((A.PROSEK - B.PROSEK)*100/B.PROSEK, 2) asc, STAVKA"; } else if (CurrSortiranje.Equals(Sortiranje.StaraOpagjacki)) { sql += "\nORDER BY NVL(B.PROSEK, 0) desc, STAVKA"; } else if (CurrSortiranje.Equals(Sortiranje.StaraRastecki)) { sql += "\nORDER BY NVL(B.PROSEK, 0) asc, STAVKA"; } else if (CurrSortiranje.Equals(Sortiranje.NovaOpagjacki)) { sql += "\nORDER BY NVL(A.PROSEK, 0) desc, STAVKA"; } else if (CurrSortiranje.Equals(Sortiranje.NovaRastecki)) { sql += "\nORDER BY NVL(A.PROSEK, 0) asc, STAVKA"; } OracleCommand cmd = new OracleCommand(sql, Conn); OracleParameter prm = new OracleParameter("RES_ID", OracleDbType.Int32); prm.Value = Restoran.RestoranID; cmd.Parameters.Add(prm); prm = new OracleParameter("RES_ID1", OracleDbType.Int32); prm.Value = Restoran.RestoranID; cmd.Parameters.Add(prm); prm = new OracleParameter("RES_ID2", OracleDbType.Int32); prm.Value = Restoran.RestoranID; cmd.Parameters.Add(prm); prm = new OracleParameter("RES_ID3", OracleDbType.Int32); prm.Value = Restoran.RestoranID; cmd.Parameters.Add(prm); Stavki = new List <StavkaPorast>(); try { cmd.CommandType = CommandType.Text; OracleDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { StavkaPorast st = new StavkaPorast(dr.GetString(0), dr.GetString(3), dr.GetString(2), dr.GetString(1), dr.GetString(4)); Stavki.Add(st); } } catch (Exception ex) { SetText(lblErrorMessage, "Имате проблем со поврзување на конекцијата"); SetVisible(lblErrorMessage, true); } LoadingSemaphore.WaitOne(); PostaviTabela(); }