예제 #1
0
        /// <summary>
        /// Esegue il make delle regole modificate presenti nella tabella sptocompile
        /// </summary>
        /// <param name="Conn">Connessione</param>
        /// <returns>NULL se va a buon fine, altrimenti il msg di errore. In caso di errore
        /// la tabella non viene svuotata</returns>
        public static string MakeRules(DataAccess MainConn)
        {
            if (MainConn.GetSys("filterrule") == null)
            {
                return("Terminare l'aggiornamento, chiudere e riaprire il programma");
            }
            string filterrule = MainConn.GetSys("filterrule").ToString();

            DataAccess Conn = MainConn.Duplicate();

            Conn.SetSys("filterrule", filterrule);
            //Indispensabile per calcolare le regole
            foreach (string k in MainConn.EnumSysKeys())
            {
                Conn.SetSys(k, MainConn.GetSys(k));
            }

            string filtereserc = "(ayear=" + QueryCreator.quotedstrvalue(
                MainConn.GetSys("esercizio"), true) + ")";



            string    filter_rules = "opkind <> 'M'";
            DataTable Tsptocompile = Conn.RUN_SELECT("sptocompile", "tablename,opkind", null, null, null, true);

            if (Tsptocompile == null)
            {
                return("Terminare l'aggiornamento, chiudere e riaprire il programma");
            }
            bool executed = false;

            //compilazione nuove regole
            foreach (DataRow R in Tsptocompile.Select(filter_rules))
            {
                string s = EasyAudits.RecalcAudit(Conn, R["tablename"].ToString(), R["opkind"].ToString(), filterrule);
                if (s != null)
                {
                    return(s);
                }
                executed = true;
            }

            string cmd = "delete from sptocompile where opkind <> 'M'";

            if (executed)
            {
                Conn.SQLRunner(cmd);
            }


            Conn.Destroy();
            return(null);
        }
예제 #2
0
        public void MetaData_AfterPost()
        {
            if (lastdbtable == null)
            {
                return;
            }
            if (lastdboperation == null)
            {
                return;
            }
            string filterrule = Meta.GetSys("filterrule").ToString();
//			RecalcRule(Meta.Conn, lastdbtable, lastdboperation);
            string err = EasyAudits.RecalcAudit(Meta.Conn, lastdbtable, lastdboperation, filterrule);

            if (err != null)
            {
                QueryCreator.ShowError(this, "Errore nella compilazione della s.p. " +
                                       lastdbtable + "(" + lastdboperation + ")" + ".",
                                       err);
            }
        }
예제 #3
0
        public void Run()
        {
            if (Running)
            {
                return;
            }
            Running = true;

            tableexamined = 0;
            foreach (DataRow R in ToRecalc.Rows)
            {
                if (MustStop)
                {
                    DialogResult = DialogResult.Cancel;
                    Close();
                    return;
                }

                tableexamined++;
                txtTable.Text = R["tablename"].ToString();


//				RecalcRule(Conn, R["dbtable"].ToString(), R["dboperation"].ToString());
                string err = EasyAudits.RecalcAudit(Conn, R["tablename"].ToString(), R["opkind"].ToString(), filterrule);
                if (err != null)
                {
                    QueryCreator.ShowError(this, "Errore nella compilazione della s.p. " +
                                           R["tablename"].ToString() + "(" + R["opkind"].ToString() + ").",
                                           err);
                }

                progBar.Value = tableexamined;
                //Application.DoEvents();
            }
            //MessageBox.Show("Ricompilazione eseguita con successo");
            DialogResult = DialogResult.OK;
            Close();
        }