Пример #1
0
        private void TablainfoTagIni(AdatTabla dt, int sorindex, Tablainfo tabinfo, TablainfoTag eredetitag, TablainfoTag parenttag, FakUserInterface fak, bool forditott)
        {
            termtablae = false;
            _fak = fak;
            _fak.ProgressRefresh();
            _adattabla = dt;
            _sorindex = sorindex;
            _tabinfo = tabinfo;
            _parenttag = parenttag;
            _forditott = forditott;
            if (_node == null)
                _node = new TreeNode();
            DataRow dr = null;
            if (sorindex != -1)
            {
                dr = dt.Rows[sorindex];
                if (dt.Columns.IndexOf("SORREND") != -1)
                    _sorrend = Convert.ToInt32(dr["SORREND"].ToString());
            }
            if (tabinfo == null || forditott && eredetitag._fordtag == null)
            {
                _azonositok = new Azonositok(this, dr, _sorindex, dt.TableName, fak);
                string szint = _azonositok.Szint;
                if (!"RUC".Contains(szint))
                    fak.Szintstring = szint;
                _leiroazonositok = new Azonositok(this, dr, _sorindex, dt.TableName, fak, true);
                fak.ProgressRefresh();
                switch (dt.TableName)
                {
                    case "LEIRO":
                        _azonositok.Szoveg = "Leiró tábla";
                        _leirotabinfo = new Tablainfo(dt, sorindex, this, _leiroazonositok, fak, true);
                        _leirotabinfo.NaploTablainfo = _fak.NaploTablainfok[0];
                        _leirotabinfo.NaploTabla = _fak.NaploTablak[0];
                        _leirotabinfo.Init(true);
                        _tabinfo = new Tablainfo(this, _azonositok, _fak);
                        _tabinfo.NaploTablainfo = _fak.NaploTablainfok[0];
                        _tabinfo.LeiroTablainfo = _leirotabinfo;
                        _tabinfo.Adattabla = _leirotabinfo.Adattabla;
                        _tabinfo.Adattabla.Tablainfo = _tabinfo;
                        _tabinfo.Beallit();
                        _tabinfo.LeiroVizsg();
                        if (_azonositok.Azon == "LEIR")
                            _tabinfo.Adattabla.LastSel = _azonositok.Selectstring;
                        break;
                    case "BASE":
                        if (sorindex == -1)     // BASE sajatmaga
                        {
                            _azonositok.Szoveg = "BASE tábla";
                            AdatTabla leirotabla = new AdatTabla("LEIRO");
                            _leirotabinfo = new Tablainfo(leirotabla, -1, this, _leiroazonositok, fak, true);
                            _leirotabinfo.NaploTablainfo = _fak.NaploTablainfok[0];
                            _leirotabinfo.NaploTabla = _fak.NaploTablak[0];
                            _leirotabinfo.Init(false);
                            _tabinfo = new Tablainfo(dt, sorindex, this, _azonositok, _fak, false);
                            _tabinfo.NaploTablainfo = _fak.NaploTablainfok[0];
                            _tabinfo.LeiroTablainfo = _leirotabinfo;
                            _tabinfo.Init(false);
                            _tabinfo.LeiroVizsg();
                            _fak.Combokupdate(this);
                        }
                        else if (_azonositok.Tablanev != "" && !forditott)
                        {
                            fak.ProgressRefresh();
                            AdatTabla tartaltabla = new AdatTabla("TARTAL");
                            AdatTabla leirotabla = new AdatTabla("LEIRO");
                            _leirotabinfo = new Tablainfo(leirotabla, -1, this, _leiroazonositok, fak, true);
                            _leirotabinfo.NaploTablainfo = _fak.NaploTablainfok[0];
                            _leirotabinfo.NaploTabla = _fak.NaploTablak[0];
                            _leirotabinfo.Init(true);
                            _tabinfo = new Tablainfo(tartaltabla, -1, this, _azonositok, fak);
                            _tabinfo.LeiroTablainfo = _leirotabinfo;
                            _tabinfo.Init(true);
                            _tabinfo.LeiroVizsg();
                            if (!fak.BajVan)
                            {
                                for (int i = 0; i < tartaltabla.Rows.Count; i++)
                                {
                                    fak.ProgressRefresh();
                                    DataRow dr1 = tartaltabla.Rows[i];
                                    owner = dr1["OWNER"].ToString();
                                    bool kell = false;
                                    if (fak.Alkalmazas == "TERVEZO" || owner == fak.AlkalmazasId || owner == fak.Alkalmazas)
                                        kell = true;
                                    else
                                    {
                                        char[] vesszo = new char[1];
                                        vesszo[0] = Convert.ToChar(",");
                                        string[] userek = dr1["USEREK"].ToString().Split(vesszo);
                                        if (owner == "" && userek[0] == "")
                                            kell = true;
                                        else
                                        {
                                            for (int j = 0; j < userek.Length; j++)
                                            {
                                                if (userek[j] != "" && userek[j] == fak.Alkalmazas)
                                                {
                                                    kell = true;
                                                    break;
                                                }
                                            }
                                        }
                                    }
                                    if (kell)
                                    {
                                        TablainfoTag tartaltag = new TablainfoTag(tartaltabla, i, null, null, this, fak);
                                        if ("CO".Contains(_azonositok.Adatfajta))
                                        {
                                            fak.ProgressRefresh();
                                            tartaltag.FordTag = new TablainfoTag(tartaltabla, i, _tabinfo, tartaltag, this, fak, true);
                                        }
                                    }
                                }
                            }
                        }
                        break;
                    case "TARTAL":
                        if (!forditott)
                        {
                            akttablanev = _azonositok.Tablanev;
                            string akttermszarm = _azonositok.Termszarm.Trim();
                            aktszint = _azonositok.Szint;
                            string kodtipus = _azonositok.Kodtipus;
                            termtablae = akttermszarm == "T";
                            owner = _azonositok.Ownerid;
                            user = _azonositok.User;
                            AdatTabla adattabla = new AdatTabla(akttablanev);
                            if (akttablanev == "LEIRO")
                                _leirotabinfo = fak.LeiroTag.Tablainfo;
                            else
                            {
                                if (adattabla.TableName == "KODTAB" || adattabla.TableName == "OSSZEF" || adattabla.TableName == "LISTA" || 
                                    adattabla.TableName=="STATISZTIKA" || adattabla.TableName=="ADATSZOLG" || adattabla.TableName=="NAPTARAK")
                                {
                                    _leirotabinfo = fak.SpecialisLeiroTabinfok.GetByAzontip(_leiroazonositok.Azontip);
                                    if(_leirotabinfo==null)
                                    {
                                        AdatTabla leiroadattabla = new AdatTabla("LEIRO");
                                        _leirotabinfo = new Tablainfo(leiroadattabla, -1, this, _leiroazonositok, fak, true);
                                        _leirotabinfo.NaploTablainfo = _fak.NaploTablainfok[0];
                                        _leirotabinfo.NaploTabla = _fak.NaploTablak[0];
                                        _leirotabinfo.Init(false);
                                        fak.SpecialisLeiroTabinfok.Add(_leirotabinfo);
                                    }
                                }
                                else
                                {
                                    AdatTabla leiroadattabla = new AdatTabla("LEIRO");
                                    _leirotabinfo = new Tablainfo(leiroadattabla, -1, this, _leiroazonositok, fak, true);
                                    _leirotabinfo.NaploTablainfo = _fak.NaploTablainfok[0];
                                    _leirotabinfo.NaploTabla = _fak.NaploTablak[0];
                                    _leirotabinfo.Init(false);
                                }

                            }
                            if (akttablanev == "LEIRO")
                            {
                                _tabinfo = fak.Tablainfok.GetBySzintPluszTablanev(kodtipus.Substring(0, 1), kodtipus.Substring(1));
                                if (_tabinfo != null)
                                    _tabinfo = _tabinfo.LeiroTablainfo;
                                else
                                    return;
                            }
                            else
                            {
                                _tabinfo = new Tablainfo(adattabla, -1, this, _azonositok, fak);
                                _tabinfo.LeiroTablainfo = _leirotabinfo;
                                if (_azonositok.Verzioinfok.AktualConnection != "")
                                {
                                    _tabinfo.Init(true);
                                    _tabinfo.LeiroVizsg();
                                    if (!fak.BajVan)
                                        fak.Combokupdate(this);
                                }
                            }
                        }
                        else
                        {
                            eredetitag.FordTag = this;
                            _tabinfo = eredetitag._tabinfo;
                            _leirotabinfo = eredetitag._leirotabinfo;
                        }
                        break;
                }
                if (_parenttag != null)
                {
                    Insert();
                    if (_parenttag.Azonositok.Szulotabla != "" && _parenttag.Azonositok.Szuloszint != "")
                    {
                        _azonositok.Szulotabla = _parenttag.Azonositok.Szulotabla;
                        _azonositok.Szuloszint = _parenttag.Azonositok.Szuloszint;
                    }
                    if (termtablae)
                    {
                        tartalinfo = fak.Tablainfok.GetByAzontip("SZRMTARTAL");
                        TablainfoTag parent = tartalinfo.TablaTag;
                        int sorrend;
                        if (tartalinfo.DataView.Count == 0)
                            sorrend = 100;
                        else
                            sorrend = Convert.ToInt32(tartalinfo.DataView[tartalinfo.DataView.Count - 1]["SORREND"].ToString()) + 1000;
                        string megnevezes = _azonositok.Szoveg + " tábla mezöi";
                        string kodtipus = aktszint + akttablanev;
                        string azontip = "SZRM" + aktszint + akttablanev;
                        DataRow row = tartalinfo.Find("KODTIPUS", aktszint + akttablanev);
                        if (row == null)
                        {
                            row = tartalinfo.Ujsor();
                            row["SORREND"] = sorrend;
                            sorrend = sorrend + 1000;
                        }
                        if (row["KODTIPUS"].ToString() != kodtipus)
                        {
                            tartalinfo.Modositott = true;
                            row["KODTIPUS"] = kodtipus;
                        }
                        if (row["SZOVEG"].ToString() != megnevezes)
                        {
                            tartalinfo.Modositott = true;
                            row["SZOVEG"] = megnevezes;
                        }
                        if (row["AZONTIP"].ToString() != azontip)
                        {
                            tartalinfo.Modositott = true;
                            row["AZONTIP"] = azontip;
                        }
                        if (row["OWNER"].ToString() != owner)
                        {
                            tartalinfo.Modositott = true;
                            row["OWNER"] = owner;
                        }
                        if (row["USEREK"].ToString() != user)
                        {
                            tartalinfo.Modositott = true;
                            row["USEREK"] = user;
                        }
                        row = tartalinfo.Find("KODTIPUS", aktszint + akttablanev);
                        tartalinfosorindex = tartalinfo.Rows.IndexOf(row);
                        TablainfoTag tag = tartalinfo.TablaTag.ChildTablainfoTagok[azontip];
                        if (tartalinfo.Modositott)
                        {
                            row["MODOSITOTT_M"] = 1;
                            fak.UpdateTransaction(new Tablainfo[] { tartalinfo });
                        }
                        if (tag == null) 
                        {
                            fak.ProgressRefresh();
                            tag = new TablainfoTag(tartalinfo.Adattabla, tartalinfosorindex, null, null, parent, fak);
                            fak.Combokupdate(tag);
                        }
                    }
                }
                _node.Text = _azonositok.Szoveg;
                _node.Tag = this;
                _azonositok.ToolTipText();
            }
        }