Пример #1
0
        /// <summary>
        /// Fo Button Click
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public virtual void fobuttonok_Click(object sender, EventArgs e)
        {
            if (FakUserInterface.EventTilt)
                return;
            DataRow dr = null;
            int ig = 2;
            if (!listae)
                ig = 4;
            ToolStripButton but = (ToolStripButton)sender;
            switch (but.Name)
            {
                //case "uj":
                //    break;
                //case "elozoverzio":
                //    break;
                //case "kovetkezoverzio":
                //    break;
                //case "teljestorles":
                //    break;
                case "ellenorzes":
                    int matrixpontok = 0;
                    int oszlopfeltek = 0;
                    int sorfeltek = 0;
                    if (!listae)
                    {
                        sorfeltek = ((DataView)osszesview[2]).Count;
                        oszlopfeltek = ((DataView)osszesview[3]).Count;
                    }
                    bool volthiba = Hibavizsg();
                    string hiba = "";
                    DataView view = (DataView)osszesview[0];
                    string sort = view.Sort;
                    ComboBox[] combok;
                    ComboBox combo;
                    string[] sortok;
                    string[] filterek;
                    string[] hibak;
                    if (!volthiba)
                    {
                        if (listae)
                        {
                            combok = new ComboBox[] { sorrendsorszaml, oszlopsorszaml };
                            sortok = new string[] { "SORRENDSORSZAM", "OSZLOPSORSZAM" };
                            filterek = new string[] { "SORRENDSORSZAM NOT = 0", "OSZLOPSORSZAM NOT = 0" };
                            hibak = new string[] { "Sorrendszint sorszáma nem folytonos!", "Oszlopok sorszámozása nem folytonos!" };
                        }
                        else
                        {
                            combok = new ComboBox[] { sorrendsorszams, oszlopsorszams };
                            sortok = new string[] { "SORRENDSORSZAM", "MATRIXSORSZAM" };
                            filterek = new string[] { "SORRENDSORSZAM NOT = 0", "MATRIXSORSZAM NOT = 0" };
                            hibak = new string[] { "Sorrendszint sorszáma nem folytonos!", "Mátrixpontok sorszámozása nem folytonos!" };
                        }
                        for (int i = 0; i < sortok.Length; i++)
                        {
                            view.Sort = sortok[i];
                            view.RowFilter = filterek[i];
                            combo = combok[i];
                            combo.Tag = "0";
                            FakUserInterface.ErrorProvider.SetError(combo, "");
                            if (view.Count != 0)
                            {
                                if (!listae)
                                {
                                    if (i == 1)
                                    {
                                        matrixpontok = view.Count;
                                        if (matrixpontok == 0 || oszlopfeltek == 0 || sorfeltek == 0)
                                        {
                                            volthiba = true;
                                            MessageBox.Show("Hiányos feladatmegadás!\nEllenörizze a mátrixpontokat, sor-/oszlopfeltételeket!");
                                            break;
                                        }
                                        else if (1 + (oszlopfeltek + 1) * matrixpontok > 10)
                                        {
                                            volthiba = true;
                                            MessageBox.Show("Nem fér el a listán!\n Vagy a mátrixpontokat vagy az \noszlopmeghatározásokat csökkenteni kell");
                                            break;
                                        }
                                    }
                                }
                                for (int j = 0; j < view.Count; j++)
                                {
                                    if (j + 1 != Convert.ToInt32(view[j][sortok[i]].ToString()))
                                    {
                                        hiba = hibak[i];
                                        volthiba = true;
                                        combo.Tag = "1";
                                        FakUserInterface.ErrorProvider.SetError(combo, hiba);
                                        break;
                                    }
                                }
                            }
                            if (!volthiba && hiba == "" && i == 0 && view.Count>1)           // sorrend
                            {
                                ArrayList ar = new ArrayList();
                                Tablainfo tabinfo;
                                for (int j = 0; j < view.Count; j++)
                                {
                                    dr = view[j].Row;
                                    tabinfo = FakUserInterface.GetByAzontip(dr["AZONTIP"].ToString());
                                    if (ar.IndexOf(tabinfo) == -1)
                                        ar.Add(tabinfo);
                                }
                                if (ar.Count > 1)
                                {

                                    for (int j = 1; j < ar.Count-1; j++)
                                    {
                                        tabinfo = (Tablainfo)ar[j];
                                        Tablainfo szulo = tabinfo.TermParentTabinfo;
                                        if (szulo == null)
                                        {
                                            hiba = " Sorrendszintek nem felelnek meg az adatbázis táblasorrendjének!";
                                            volthiba = true;
                                            combo.Tag = "1";
                                            FakUserInterface.ErrorProvider.SetError(combo, hiba);
                                            break;
                                        }
                                    }
                                }
                            }
                        }
                    }
                    view.Sort = sort;
                    view.RowFilter = "";
                    if (!volthiba)
                    {
                        ArrayList comboar;
                        for (int i = 1; i < ig; i++)
                        {
                            comboar = (ArrayList)osszescombo[i];
                            ComboBox esvagy = (ComboBox)comboar[comboar.Count - 1];
                            esvagy.Tag = 0;
                            view = (DataView)osszesview[i];
                            if (view.Count != 0)
                            {
                                hiba = "";
                                dr = view[view.Count - 1].Row;
                                aktivsorindex[i] = view.Count - 1;
                                Feltetelrendezes(i);
                                if (esvagy.Text != "")
                                {
                                    esvagy.Tag = 1;
                                    volthiba = true;
                                    hiba = "Utolsó sorban üresnek kell lennie!";
                                    Tabinfo.ModositasiHiba = true;
                                }
                                else
                                {
                                    esvagy.Tag = 0;
                                    Tabinfo.ModositasiHiba = false;
                                }
                                FakUserInterface.ErrorProvider.SetError(esvagy, hiba);
                                if (!volthiba)
                                {
                                    if (i == 1)
                                    {
                                        for (int k = 0; k < view.Count; k++)
                                        {
                                            dr = view[k].Row;
                                            aktivsorindex[i] = k;
                                            Feltetelrendezes(i);
                                            if (k != view.Count - 1 && esvagy.Text == "")
                                            {
                                                esvagy.Tag = 1;
                                                volthiba = true;
                                                hiba = "Közbülsö sorban nem lehet üres!";
                                                Tabinfo.ModositasiHiba = true;
                                            }
                                        }
                                    }
                                    FakUserInterface.ErrorProvider.SetError(esvagy, hiba);
                                }
                                int nyitozcount = 0;
                                int zarozcount = 0;
                                for (int k = 0; k < view.Count; k++)
                                {
                                    dr = view[k].Row;
                                    if (dr["NYITOZAROJEL"].ToString() != "")
                                        nyitozcount++;
                                    if (dr["ZAROZAROJEL"].ToString() != "")
                                        zarozcount++;
                                }
                                if (nyitozcount != zarozcount)
                                {
                                    if (hiba != "")
                                        hiba += "\n";
                                    hiba += "Nyitózárójelszám = " + nyitozcount.ToString() + " Zárózárójelszám = " + zarozcount.ToString();
                                    volthiba = true;
                                }
                                FakUserInterface.ErrorProvider.SetError(esvagy, hiba);
                            }
                        }
                    }
                    AlbuttonokAllit(pageindex, HozferJog);
                    VerziobuttonokAllit(HozferJog);
                    if (volthiba)
                        rogzit.Enabled = false;
                    else
                        rogzit.Enabled = true;
                    break;
                case "preview":
                    if (altlistazo == null)
                        altlistazo = new Altlistazoalap(FakUserInterface, this, Vezerles);
//                    ValtozasBeallit();
                    altlistazo.Tabinfo = Tabinfo;
                    altlistazo.listae = listae;
                    altlistazo.listakodtipus = Kodtipus;
                    altlistazo.listaazontip = Azontip;
                    altlistazo.TeljesHonap = TeljesHonap;
                    altlistazo.VanDatum = VanDatum;
                    panel1.Controls.Clear();
                    panel1.Controls.Add(altlistazo);
                    altlistazo.Dock = DockStyle.Fill;
                    altlistazo.TabStop = false;
                    altlistazo.TabStop = true;
                    break;
                case "vissza":
                    panel1.Controls.Clear();
                    panel1.Controls.AddRange((Control[])savcont.ToArray(typeof(Control)));
                    VerziobuttonokAllit(HozferJog);
                    break;
                case "help":
                    string azon = but.Tag.ToString();
                    FakUserInterface.ShowHelp(azon,false,this);
                    break;
                case "rogzit":
                    if (Tabinfo.DataView.Count == 0)
                        Tabinfo.Ujsor();
                    dr = Tabinfo.DataView[0].Row;
                    dr["KODTIPUS"] = Kodtipus;
                    dr["SZOVEG"] = megnevezes.Text;
                    string szov = comboBox2.Text.Substring(0, 1);
                    dr["VANDATUMINT"] = szov;
                    szov = comboBox3.Text.Substring(0, 1);
                    dr["TELJESHONAP"] = szov;
                    TeljesHonap = szov == "I";
                    szov = comboBox4.Text.Substring(0, 1);
                    dr["TELJESEV"] = szov;
                    TeljesEv = szov == "I";
                    rogzit.Enabled = false;
                    OsszesListaelemGyart(dr);
                    string[] feltcol = new string[] { "", "FELTETEL", "SORFELTETEL", "OSZLOPFELTETEL" };
                    for (int i = 1; i < ig; i++)
                    {
                        dr[feltcol[i]] = FeltetelSorbarak(i);
                    }
                    Tabinfo.Modositott = true;
                    FakUserInterface.Rogzit(Tabinfo);
                    if (megnevezes.Text != tartalsor["SZOVEG"].ToString())
                    {
                        tartalsor["SZOVEG"] = megnevezes.Text;
                        tartalsor["MODOSITOTT_M"] = 1;
                        tartalinfo.Modositott = true;
                        FakUserInterface.Rogzit(tartalinfo);
                    }
                    RogzitesUtan();
                    VerziobuttonokAllit(HozferJog);
                    UjTag = true;
                    ValtozasBeallit();
                    AltalanosInit();
                    break;
                case "elolrolalap":
                    FakUserInterface.ForceAdattolt(Tabinfo);
                    UjTag = true;
                    ValtozasBeallit();
                    AltalanosInit();
                    break;
            }
        }
Пример #2
0
        /// <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();
        }