/// <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(); }