private void OsszegsorOsszeallit(Mezoinfo info, ref Decimal szintosszeg, ref int darabszam, DataRow dr) { int oszl = Mezoinfok.IndexOf(info); bool atlagolando = info.Atlagolando; if (atlagolando) { if (darabszam == 0 || darabszam == -1) szintosszeg = 0; else szintosszeg = szintosszeg / darabszam; } string s = szintosszeg.ToString(); string[] split = s.Split(new char[] { Convert.ToChar(",") }); if (split.Length == 2 && split[1].Length > 2) s = split[0] + "," + split[1].Substring(0, 2); dr[oszl] = s; szintosszeg = 0; if (darabszam != -1) darabszam = 0; }
/// <summary> /// mezoinfo aktualis tartalmanak feladasa Osszegek-be /// </summary> /// <param name="info"> /// mezoinfo /// </param> public virtual void Osszegfeladasok(Mezoinfo info) { if (info.Osszegzendo) Osszegfeladasok(info, true); if (info.Atlagolando) Osszegfeladasok(info, false); }
private void Osszegfeladasok(Mezoinfo info, bool osszege) { Tablainfo tabinfo = info.ColumnInfo.Tablainfo; tabinfo.GetOszlopTartalom(info); MezoinfoCollection osszegzendok = Osszegzendok; if (!osszege) osszegzendok = Atlagolandok; for (int i = 0; i < osszegzendok.Count; i++) { if (info == osszegzendok[i]) { Decimal feladando = Convert.ToDecimal(info.AktualisTartalom); string feladstring = info.AktualisTartalom; if (feladstring != "") { string[] split; split = info.AktualisTartalom.Split(new char[] { Convert.ToChar(",") }); if (split.Length == 2 && split[1].Length > 2) { split[1] = split[1].Substring(0, 2); feladstring = split[0] + "," + split[1]; feladando = Convert.ToDecimal(feladstring); } } //Decimal feladando = egesz + tized; if (osszege) { foreach (Decimal[] osszegek in Osszegek) osszegek[i] = osszegek[i] + feladando; } else { foreach (int[] darabok in AtlagDarabszam) darabok[i]++; foreach (Decimal[] atlosszegek in AtlagOsszegek) atlosszegek[i] = atlosszegek[i] + feladando; } } } if (info.Atlagolando) { } }
/// <summary> /// objectum letrehozasa /// </summary> /// <param name="hivo"> /// hivo /// </param> /// <param name="osszesview"> /// viewk listaja /// </param> public ListaInfok(Altlistazoalap hivo, ArrayList osszesview) { Hivo = hivo; Tabinfo = Hivo.Tabinfo; Listae = hivo.listae; FakUserInterface = hivo.FakUserInterface; TablainfoRow = Tabinfo.DataView[0].Row; int ig; if (Listae) ig = 2; else ig = 4; for (int l = 0; l < ig; l++) { view = (DataView)osszesview[0]; // parameterview table = view.Table; sort = view.Sort; view.Sort = "AZONTIP,MEZONEV"; if (l == 0) { azontip = ""; for (int i = 0; i < table.Columns.Count; i++) { string colnev = table.Columns[i].ColumnName; if (colnev.Contains("SORSZAM")) view.Sort = colnev + ",AZONTIP,MEZONEV"; else view.Sort = "AZONTIP,MEZONEV"; azontip = ""; for (int j = 0; j < view.Count; j++) { dr = view[j].Row; egyazontip = dr["AZONTIP"].ToString(); if (egyazontip != azontip) tabinfo = FakUserInterface.GetByAzontip(egyazontip); MezoinfoOsszeallit(dr); if (vanfeltben || vansorfeltben || vanoszlfeltben || sorrendsorszam != "0" || kellosszegzes || osszegzendo || atlagolando || csakosszegsorba || oszlopsorszam != "0" || matrixsorszam != "0") { if (Tablainfok.IndexOf(tabinfo) == -1) { Tablainfok.Add(tabinfo); Clear(tabinfo); } Mezoinfo mezoinfo = new Mezoinfo(tabinfo, mezonev, sorrendsorszam, kellosszegzes, osszegzendo, atlagolando, csakosszegsorba, oszlopsorszam, matrixsorszam); switch (colnev) { case "OSZLOPSORSZAM": if (oszlopsorszam != "0") Oszlopinfok.Mezoinfok.Add(tabinfo, mezoinfo); break; case "SORRENDSORSZAM": if (sorrendsorszam != "0") { Sorrendinfok.Mezoinfok.Add(tabinfo, mezoinfo); string ssort = tabinfo.Sort; if (ssort != "") ssort += ","; ssort += mezoinfo.ColumnInfo.ColumnName; tabinfo.Sort = ssort; } break; case "MATRIXSORSZAM": if (matrixsorszam != "0") { Matrixpontinfok.Mezoinfok.Add(tabinfo, mezoinfo); } break; } } azontip = egyazontip; } } } else { azontip = ""; string filt = view.RowFilter; view.RowFilter = "VANFELTBEN = 'Igen'"; if (l != 1) view.RowFilter += " OR VANSORFELTBEN = 'Igen' OR VANOSZLFELTBEN = 'Igen '"; for (int i = 0; i < view.Count; i++) { dr = view[i].Row; egyazontip = dr["AZONTIP"].ToString(); if (egyazontip != azontip) tabinfo = FakUserInterface.GetByAzontip(egyazontip); azontip = egyazontip; MezoinfoOsszeallit(dr); Tablainfok.Add(tabinfo); Mezoinfo mezoinfo = new Mezoinfo(tabinfo, mezonev, sorrendsorszam, kellosszegzes, osszegzendo, atlagolando, csakosszegsorba, oszlopsorszam, matrixsorszam); switch (l) { case 1: if(dr["VANFELTBEN"].ToString()=="Igen") Feltetelinfok.Mezoinfok.Add(tabinfo, mezoinfo); break; case 2: if(dr["VANSORFELTBEN"].ToString()=="Igen") Sorfeltetelinfok.Mezoinfok.Add(tabinfo, mezoinfo); break; case 3: if(dr["VANOSZLFELTBEN"].ToString()=="Igen") Oszlopfeltetelinfok.Mezoinfok.Add(tabinfo, mezoinfo); break; } } view.RowFilter = filt; DataView feltview = (DataView)osszesview[l]; switch (l) { case 1: FeltColl = Feltetelinfok.FeltetelinfoCollection; break; case 2: FeltColl = Sorfeltetelinfok.FeltetelinfoCollection; break; case 3: FeltColl = Oszlopfeltetelinfok.FeltetelinfoCollection; break; } for (int i = 0; i < feltview.Count; i++) FeltColl.Add(new Feltetelinfo(this, FakUserInterface, feltview, i)); } view.Sort = sort; } if (Matrixpontinfok.Mezoinfok.Count == 0) { Oszlopinfok.OszlopokOsszeAllit(); Oszlopinfok.Osszegzesek(Sorrendinfok); } else { Oszlopfeltetelinfok.OszlopokOsszeAllit(); Matrixpontinfok.OszlopokOsszeAllit(); } Parameterhiba = false; Tablainfo gyoker = null; if (Tablainfok.Count == 0) { Parameterhiba = true; MessageBox.Show("Nincs még paraméterezés!"); return; } for (int ii = 0; ii < Tablainfok.Count; ii++) { if (gyoker == null) { gyoker = Tablainfok[ii].FirstTermParentTabinfo; if (gyoker == null) gyoker = Tablainfok[ii]; } else { Tablainfo ujgyoker = Tablainfok[ii].FirstTermParentTabinfo; if(ujgyoker==null) ujgyoker=Tablainfok[ii]; if (gyoker != ujgyoker) { string hibaszov = ""; for (int j = 0; j < Tablainfok.Count; j++) { if (gyoker != Tablainfok[j]) { if (gyoker.TermChildTabinfo.IndexOf(Tablainfok[j]) == -1) { if (hibaszov != "") hibaszov += ",\n"; hibaszov += Tablainfok[j].TablaTag.Azonositok.Szoveg; } } } hibaszov += "\n Nem elérhetö " + gyoker.TablaTag.Azonositok.Szoveg + "-ból\nParaméterezze újra!"; MessageBox.Show(hibaszov); Parameterhiba = true; return; } } } TablainfoCollection teljeschain = new TablainfoCollection(); TablainfoCollection chain; int maxchain = 1; foreach (Tablainfo egyinfo1 in gyoker.TermChildTabinfo) { int ii = egyinfo1.TermChildTabinfo.Count; if (ii > maxchain) maxchain = ii; } for(int i=0;i<gyoker.TermChildTabinfo.Count;i++) teljeschain.Add(gyoker.TermChildTabinfo[i]); int chaincount = teljeschain.Count; for (int i = 0; i < gyoker.TermChildTabinfo.Count; i++) { chain = gyoker.TermChildTabinfo[i].TermChildTabinfo; for (int j = 0; j < chain.Count; j++) teljeschain.Add(chain[j]); } int teljescount = teljeschain.Count; if (chaincount < teljeschain.Count) { chain = teljeschain; do { int ij = 0; do { for (int i = 0; i < chain.Count; i++) { TablainfoCollection egychain = chain[i].TermChildTabinfo; for (int j = 0; j < egychain.Count; j++) teljeschain.Add(egychain[j]); chaincount = teljeschain.Count; } ij++; if (chain.Count > ij) chain = chain[ij].TermChildTabinfo; else if(chaincount!=teljeschain.Count) { ij = 0; chain = teljeschain[chaincount - 1].TermChildTabinfo; } else break; } while (true); } while (chaincount != teljeschain.Count); } TablainfoCollection newtabinfok = new TablainfoCollection(); string elsotabinfoid = ""; ArrayList tabsorrend = new ArrayList(); int maxindex=-1; object[] egyobj; ArrayList indexar = new ArrayList(); for (int i = 0; i < Tablainfok.Count; i++) { egyobj = new object[2]; egyobj[1] = Tablainfok[i]; int j = -1; if (gyoker != Tablainfok[i]) { j = teljeschain.IndexOf(Tablainfok[i]); } egyobj[0] = j; indexar.Add(j); if (maxindex < j) maxindex = j; tabsorrend.Add(egyobj); } int egyindex = -1; do { for (int i = 0; i < tabsorrend.Count; i++) { egyobj = (object[])tabsorrend[i]; if (egyobj[0].ToString() == egyindex.ToString()) { newtabinfok.Add((Tablainfo)egyobj[1]); tabsorrend.RemoveAt(i); } } egyindex++; } while (tabsorrend.Count > 0); if (newtabinfok[0].TermParentTabinfo != null) elsotabinfoid = newtabinfok[0].TermParentTabinfo.IdentityColumnName; else elsotabinfoid = newtabinfok[0].IdentityColumnName; ElsoTabinfo = newtabinfok[0]; if (ElsoTabinfo.TermParentTabinfo != null) elsotabinfoid = ElsoTabinfo.TermParentTabinfo.IdentityColumnName; else elsotabinfoid = ElsoTabinfo.IdentityColumnName; Tablainfok = newtabinfok; for (int i = 0; i < Tablainfok.Count; i++) Tablainfok[i].ElsoTabinfo = ElsoTabinfo; Feltetelinfok.Rendezes(this); if (!Listae) { Oszlopfeltetelinfok.Rendezes(this); Sorfeltetelinfok.Rendezes(this); Matrixpontinfok.Osszegzesek(this); } TablainfoCollection parentchain = ElsoTabinfo.TermParentTabinfoChain; TablainfoCollection childchain = ElsoTabinfo.TermChildTabinfo; OsszesBeallitandoId = ElsoTabinfo.BeallitandoIdkArray("", ElsoTabinfo,Tablainfok, OsszesBeallitandoId, OsszesBeallitottIdErtek); foreach (Tablainfo info in Tablainfok) { if (info.TablaColumns.IndexOf("DATUMTOL") != -1) info.DatumString = Hivo.Datumtoligfeltetel; else if (info.TablaColumns.IndexOf("KEZDETE") != -1) info.DatumString = Hivo.Kezdetefeltetel; if (info != ElsoTabinfo) { info.BeallitandoIdkArray(elsotabinfoid, ElsoTabinfo,Tablainfok, OsszesBeallitandoId, OsszesBeallitottIdErtek); } } if (Feltetelinfok.Mezoinfok.Count != 0) Feltetelinfok.SortOsszeallit(); if (Oszlopfeltetelinfok.Mezoinfok.Count != 0) Oszlopfeltetelinfok.SortOsszeallit(); if (Sorfeltetelinfok.Mezoinfok.Count != 0) Sorfeltetelinfok.SortOsszeallit(); }
/// <summary> /// uj mezoinfo hozzaadas a kollekciohoz /// </summary> /// <param name="tabinfo"> /// tablainformacio /// </param> /// <param name="mezoinfo"> /// a mezoinformacio /// </param> public void Add(Tablainfo tabinfo, Mezoinfo mezoinfo) { Tablainfok.Add(tabinfo); string mezonev = mezoinfo.ColumnInfo.ColumnName; int i = Colok.IndexOf(mezonev); if (i == -1) { Colok.Add(mezoinfo.ColumnInfo); mezonevek.Add(mezonev); tabinfo.SorrendInfok(mezoinfo, this); tabinfo.OszlopInfok(mezoinfo, this); i = base.Add(mezoinfo); string sortelem = mezoinfo.ColumnInfo.ColumnName; TabinfoSortok.Add(sortelem); } }
/// <summary> /// Altalanos listazashoz /// </summary> public string GetOszlopTartalom(Mezoinfo mezoinfo) { DataRow aktrow = AktualViewRow; string tart = ""; int i = oszlopmezoinfok.IndexOf(mezoinfo); if (aktrow != null) { string tartoszlnev = mezoinfo.TartalomOszlopNev; tart = aktrow[tartoszlnev].ToString(); } if(tart!="") { if (mezoinfo.ColumnInfo.DataType.ToString() == "System.DateTime") tart = Convert.ToDateTime(tart).ToShortDateString(); } else if (!mezoinfo.ColumnInfo.Numeric(mezoinfo.ColumnInfo.DataType)) tart = ""; else tart = "0"; mezoinfo.AktualisTartalom = tart; return tart; }
/// <summary> /// Altalanos listazashoz /// </summary> public void OszlopInfok(Mezoinfo mezoinfo, MezoinfoCollection mezocoll) { Cols columninfo = mezoinfo.ColumnInfo; Tablainfo tabinfo = columninfo.Tablainfo; if (mezocoll.Tablainfok.IndexOf(tabinfo) == -1) { oszlopmezonevek.Clear(); oszloptartalomnevek.Clear(); oszlopszelessegek.Clear(); oszlopnumericek.Clear(); oszlopmezoinfok.Clear(); } if (mezoinfo.OszlopSorszam != "0") { oszlopmezonevek.Add(columninfo.ColumnName); oszloptartalomnevek.Add(mezoinfo.TartalomOszlopNev); oszlopszelessegek.Add(mezoinfo.OszlopSzelesseg); oszlopnumericek.Add(columninfo.Numeric(columninfo.DataType) && !columninfo.Comboe); oszlopmezoinfok.Add(mezoinfo); } }
/// <summary> /// Altalanos listazashoz /// </summary> public string GetSorrendtartalom(Mezoinfo mezoinfo) { DataRow aktrow = null; string tart=""; if (ViewSorindex != -1) aktrow = AktualViewRow; int i = sorrendmezoinfok.IndexOf(mezoinfo); if (aktrow != null) { string tartoszlnev = mezoinfo.TartalomOszlopNev; if (mezoinfo.ColumnInfo.DataType.ToString() == "System.DateTime") tart = Convert.ToDateTime(aktrow[tartoszlnev].ToString()).ToShortDateString(); else tart = aktrow[tartoszlnev].ToString(); } if (sorrendtartalmak[i].ToString() != tart) { mezoinfo.ElozoSorrendTartalom = tart; sorrendtartalmak[i] = tart; if (Convert.ToBoolean(csakosszegsorba[i].ToString())) return mezoinfo.FejSzoveg+ " "+ tart; else return ""; } else tart = ""; return tart; }
/// <summary> /// Altalanos listazashoz /// </summary> public bool Sorrendvaltozas(Mezoinfo mezoinfo) { if (ViewSorindex == -1) { if (EredetiLehetUres) return true; else return false; } DataRow aktrow = AktualViewRow; string tartoszlnev = mezoinfo.TartalomOszlopNev; string tart; if (mezoinfo.ColumnInfo.DataType.ToString() == "System.DateTime") tart = Convert.ToDateTime(aktrow[tartoszlnev].ToString()).ToShortDateString(); else tart = aktrow[tartoszlnev].ToString(); int i = sorrendmezoinfok.IndexOf(mezoinfo); if (sorrendtartalmak[i].ToString() != tart) return true; else return false; }
/// <summary> /// Altalanos listazashoz /// </summary> public void SorrendInfok(Mezoinfo mezoinfo, MezoinfoCollection mezocoll) { Cols columninfo = mezoinfo.ColumnInfo; Tablainfo tabinfo = columninfo.Tablainfo; if (mezocoll.Tablainfok.IndexOf(tabinfo) == -1) { sorrendazonositok.Clear(); sorrendtartalmak.Clear(); sorrendtartalomoszlopnevek.Clear(); csakosszegsorba.Clear(); sorrendmezoinfok.Clear(); } if (mezoinfo.SorrendSorszam != "0") { csakosszegsorba.Add(mezoinfo.CsakOsszegsorba); sorrendazonositok.Add(columninfo.ColumnName); sorrendtartalomoszlopnevek.Add(mezoinfo.TartalomOszlopNev); sorrendtartalmak.Add(""); sorrendmezoinfok.Add(mezoinfo); } }