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