示例#1
0
        private void backgroundWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
            ProgressBarStruct aValues = (ProgressBarStruct)e.UserState;

            this.labTab2.Text = aValues.labTab;

            this.pgbTables.Value  = aValues.tables;
            this.pgbRecords.Value = aValues.records;

            this.labStAllRec2.Text  = aValues.sumAllRec.ToString();
            this.labStDelRec2.Text  = aValues.sumDeletedRec.ToString();
            this.labStProbRec2.Text = aValues.sumProblemRec.ToString();
        }
示例#2
0
        /// <summary>
        /// Zapoczatkowanie procesu odcinania danych
        /// </summary>
        /// <returns>Listę odciętych wartości z poszczególnych tabel (zlecenia, kartoteki towarów, pracownicy)</returns>
        public bool OdetnijDane(BackgroundWorker worker)
        {
            string          cPathTmp;
            List <TableCut> aTabels = new List <TableCut>();

            this._countAllRec     = 0;
            this._countDeletedRec = 0;
            this._countProblemRec = 0;

            this._sumDeletedRec = 0;
            this._sumProblemRec = 0;

            List <RowObject> aRecords;

            this._error("", true);
            int nLimit = this._sqlLimit;
            ProgressBarStruct oProgressBarStruct = new ProgressBarStruct();

            // Wybrane tabele do odcięcia danych
            aTabels.Add(new TableCut(this._oUstawienia.tabPozycji, this._oUstawienia.kolPozId, TableCut.Types.Pozycja));
            aTabels.Add(new TableCut(this._oUstawienia.tabZlecen, this._oUstawienia.kolZlecId, TableCut.Types.Zlecenie));
            aTabels.Add(new TableCut(this._oUstawienia.tabKartotek, this._oUstawienia.kolKartId, TableCut.Types.Kartoteka));
            aTabels.Add(new TableCut(this._oUstawienia.tabTowarow, this._oUstawienia.kolTowId, TableCut.Types.Towar));
            aTabels.Add(new TableCut(this._oUstawienia.tabPracownikow, this._oUstawienia.kolPracId, TableCut.Types.Pracownik));

            this._export("-- EXPORT ( " + DateTime.Now + " )");
            this._log("/*****************************************************************************/");
            this._log("//            Rozpoczęcie Odcianania danych - " + DateTime.Now + "            //");
            this._log("/*****************************************************************************/");

            this._log("// Sprawdzenie połączenia z bazą: ", false);
            if (this._pgSql.PingConnection())
            {
                this._log(" OK ");
            }
            else
            {
                this._log(" BŁĄD ");
                this._error("Błąd połączenia z bazą danych.");
                return(false);
            }

            cPathTmp = Path.GetTempFileName();

            foreach (TableCut table in aTabels)
            {
                this._countAllRec             = this._pgSql.GetCountRecords(table.name);
                this._countDeletedRec         = 0;
                this._countProblemRec         = 0;
                oProgressBarStruct.sumAllRec += this._countAllRec;
                oProgressBarStruct.labTab     = table.name;

                oProgressBarStruct.records = 0;
                oProgressBarStruct.tables++;
                worker.ReportProgress(0, oProgressBarStruct);

                this._log("-------------------------------------------------------------------------------");
                this._log("* TABELA: " + table.name + " ( " + DateTime.Now + " ) | " + this._countAllRec.ToString() + " rekordów");
                this._tmpexport(cPathTmp, "-- TABLE: " + table.name);

                if (this._countAllRec == 0)
                {
                    this._log("Brak rekordów w tabeli");
                    continue;
                }

                // Pobieramy liste rekordów do operacji
                while ((aRecords = this._getRecordsCut(table, nLimit)).Count > 0)
                {
                    // usunięcie rekordów
                    if (!this._deleteRecords(table, ref aRecords))
                    {
                        this._error("Nie usunięto niektórych rekordów. Sprawdź logi operacji.");
                    }

                    //tworzenie eksportu
                    this._createExport(table, aRecords, cPathTmp);

                    oProgressBarStruct.records       = (int)(((this._countDeletedRec) / (float)this._countAllRec) * 100);
                    oProgressBarStruct.sumDeletedRec = this._sumDeletedRec;
                    oProgressBarStruct.sumProblemRec = this._sumProblemRec;
                    worker.ReportProgress(0, oProgressBarStruct);

                    if (worker.CancellationPending)
                    {
                        break;
                    }

                    System.Threading.Thread.Sleep(1000);

                    //wyjście jeżeli nie ma już rekordów lub error
                    if (aRecords.Count != this._sqlLimit)
                    {
                        break;
                    }
                }

                oProgressBarStruct.records = 100;
                worker.ReportProgress(0, oProgressBarStruct);

                this._log("-------------------------------------------------------------------------------");
                this._log("Ilość rekordów: " + this._countAllRec.ToString());
                this._log("Ilość rekordów usuniętych: " + this._countDeletedRec.ToString());
                this._log("Ilość rekordów, których nie udało się usunąć: " + this._countProblemRec.ToString());

                if (worker.CancellationPending)
                {
                    this._error("");
                    this._error("Przerwano operację.");
                    this._error("Sprawdź w logach, które rekordy zostały  już usunięte lub zaimportuj do bazy plik eksportu.");
                    break;
                }
            }

            // Przeładowanie eksportu
            this._przeładujExport(cPathTmp);
            File.Delete(cPathTmp);

            this._log("/*****************************************************************************/");
            this._log("//              Koniec Odcianania danych - " + DateTime.Now + "               //");
            this._log("/*****************************************************************************/");

            return(true);
        }