diff --git a/TBF/BenchControl/Output/DB/SensusOracle/Database.cs b/TBF/BenchControl/Output/DB/SensusOracle/Database.cs index 37d84279f..5d481e577 100644 --- a/TBF/BenchControl/Output/DB/SensusOracle/Database.cs +++ b/TBF/BenchControl/Output/DB/SensusOracle/Database.cs @@ -91,9 +91,9 @@ namespace TBF.BenchControl.Output.DB.SensusOracle /// Results.Entities.Batch batch; - OracleConnection productionDB; /// Production Oracle DB connection - OracleConnection qualityDB; /// Quality Oracle DB connection - OracleConnection testDB; /// Test Oracle DB connection + public OracleConnection ProductionDB; /// Production Oracle DB connection + public OracleConnection QualityDB; /// Quality Oracle DB connection + public OracleConnection TestDB; /// Test Oracle DB connection public OracleConnection SelectedDB { @@ -101,9 +101,9 @@ namespace TBF.BenchControl.Output.DB.SensusOracle { switch (DBUsed) { - case DBUsed.Production: return productionDB; - case DBUsed.Quality: return qualityDB; - case DBUsed.Test: return testDB; + case DBUsed.Production: return ProductionDB; + case DBUsed.Quality: return QualityDB; + case DBUsed.Test: return TestDB; default: case DBUsed.None: @@ -137,9 +137,9 @@ namespace TBF.BenchControl.Output.DB.SensusOracle if (dbCfg.DebugLevel == DebugMode.Normal) { - productionDB = new OracleConnection("Data Source=STARA01.WORLD;User Id=deltachef;Password=deltachef;"); - qualityDB = new OracleConnection("Data Source=STARA01.WORLD;User Id=deltaqual;Password=test;"); - testDB = new OracleConnection("Data Source=STARA_TEST.WORLD;User Id=deltachef;Password=deltachef;"); + ProductionDB = new OracleConnection("Data Source=STARA01.WORLD;User Id=deltachef;Password=deltachef;"); + QualityDB = new OracleConnection("Data Source=STARA01.WORLD;User Id=deltaqual;Password=test;"); + TestDB = new OracleConnection("Data Source=STARA_TEST.WORLD;User Id=deltachef;Password=deltachef;"); /// /// Do something with the database to see if the connection works well @@ -173,9 +173,9 @@ namespace TBF.BenchControl.Output.DB.SensusOracle /// public void StopDevice() { - if (testDB != null) testDB.Dispose(); - if (qualityDB != null) qualityDB.Dispose(); - if (productionDB != null) productionDB.Dispose(); + if (TestDB != null) TestDB.Dispose(); + if (QualityDB != null) QualityDB.Dispose(); + if (ProductionDB != null) ProductionDB.Dispose(); } public void StopDevice2() {} @@ -810,7 +810,7 @@ namespace TBF.BenchControl.Output.DB.SensusOracle procedureSignatureSB.Append("~"); } - if ((oracleTestInfo == null) || (wmTypeId != b.WaterMeters[0].WaterMeterData.WMTypeId) || (wmTypeRevision == 0) || (procedureSignature != procedureSignatureSB.ToString())) + if ((oracleTestInfo == null) || (wmTypeId != b.WaterMeters[1].WaterMeterData.WMTypeId) || (wmTypeRevision == 0) || (procedureSignature != procedureSignatureSB.ToString())) { int wmTR = 0; string wzTypStr; @@ -820,12 +820,12 @@ namespace TBF.BenchControl.Output.DB.SensusOracle double q3 = 0; DateTime timeStamp; string remark; - IList ti = GetOracleTestInfo(conn, b.WaterMeters[0].WaterMeterData.WMTypeId, out wmTR, out wzTypStr, out metroKlasse, out zulasszeichen, out materialNr, out q3, out timeStamp, out remark); + IList ti = GetOracleTestInfo(conn, b.WaterMeters[1].WaterMeterData.WMTypeId, out wmTR, out wzTypStr, out metroKlasse, out zulasszeichen, out materialNr, out q3, out timeStamp, out remark); if (ti != null) { /// All 5 updated together - wmTypeId = b.WaterMeters[0].WaterMeterData.WMTypeId; + wmTypeId = b.WaterMeters[1].WaterMeterData.WMTypeId; wmTypeRevision = wmTR; procedureSignature = procedureSignatureSB.ToString(); oracleTestInfo = ti; @@ -860,7 +860,7 @@ namespace TBF.BenchControl.Output.DB.SensusOracle cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = Anbid_StaraTura }); cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = 18000 + b.TestBenchId }); cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = b.BatchNr }); - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = b.WaterMeters[0].WaterMeterData.WMTypeId }); + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = b.WaterMeters[1].WaterMeterData.WMTypeId }); cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = wmTypeRevision }); cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = 1 }); cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.TimeStamp, Value = b.StartTime }); @@ -876,11 +876,11 @@ namespace TBF.BenchControl.Output.DB.SensusOracle cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = string.Format("TBF v.{0}", b.ProgramVersion) }); cmd.ExecuteNonQuery(); /// Returns nr. of updated rows - log.InfoFormat("VT_PRUEFREIHE_PD inserted, BatchNr={0}, TypeId={1}, TypeRev={2}, Start={3}", b.BatchNr, b.WaterMeters[0].WaterMeterData.WMTypeId, wmTypeRevision, b.StartTime); + log.InfoFormat("VT_PRUEFREIHE_PD inserted, BatchNr={0}, TypeId={1}, TypeRev={2}, Start={3}", b.BatchNr, b.WaterMeters[1].WaterMeterData.WMTypeId, wmTypeRevision, b.StartTime); } else { - log.WarnFormat("SIM: VT_PRUEFREIHE_PD inserted, BatchNr={0}, TypeId={1}, TypeRev={2}, Start={3}", b.BatchNr, b.WaterMeters[0].WaterMeterData.WMTypeId, wmTypeRevision, b.StartTime); + log.WarnFormat("SIM: VT_PRUEFREIHE_PD inserted, BatchNr={0}, TypeId={1}, TypeRev={2}, Start={3}", b.BatchNr, b.WaterMeters[1].WaterMeterData.WMTypeId, wmTypeRevision, b.StartTime); } foreach (var testInfo in completeTestInfo) @@ -1019,13 +1019,29 @@ namespace TBF.BenchControl.Output.DB.SensusOracle int sekundaere_Adr = wm.Passed ? 1 : 0; int idBenutzer = 6; // = wm.Batch.UserNumber; - if (max_Pruefindex % 100 == 1) - { - if (!dbCfg.TestMode) - { - OracleCommand cmd = new OracleCommand("INSERT INTO vt_zaehler_pd(auftragsnummer, vt_identnummer, vt_fernum, max_pruefindex," + - " zaehlernummer, sekundaere_adr, hydr_pruefung, id_benutzer, anbid, baujahr) " + - "VALUES (:1, :2, :3, :4, :5, :6, :7, :8, :9, :10)", conn); + if (!dbCfg.TestMode) + { + OracleCommand cmd = new OracleCommand("UPDATE vt_zaehler_pd " + + "SET auftragsnummer=:1, vt_identnummer=:2, max_pruefindex=:3, hydr_pruefung=:4, id_benutzer=:5, baujahr=:6 " + + "WHERE vt_fernum = :7 AND anbid = :8", conn); + + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = wm.PurchaseOrder }); + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = "IPBATMXX" }); + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = max_Pruefindex }); + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = hydr_Pruefung }); + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = idBenutzer }); + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = YearOfManufacture }); + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = wm.SerialNr }); + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = Anbid_StaraTura }); + + int updatedRows = cmd.ExecuteNonQuery(); + int insertedRows = 0; + + if (updatedRows == 0) + { + cmd = new OracleCommand("INSERT INTO vt_zaehler_pd(auftragsnummer, vt_identnummer, vt_fernum, max_pruefindex," + + " zaehlernummer, sekundaere_adr, hydr_pruefung, id_benutzer, anbid, baujahr) " + + "VALUES (:1, :2, :3, :4, :5, :6, :7, :8, :9, :10)", conn); cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = wm.PurchaseOrder }); cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = "IPBATMXX" }); @@ -1038,38 +1054,26 @@ namespace TBF.BenchControl.Output.DB.SensusOracle cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = Anbid_StaraTura }); cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = YearOfManufacture }); - cmd.ExecuteNonQuery(); - log.InfoFormat("VT_ZAEHLER_PD inserted, PcbNr={0}, pos={1}, maxPruefix={2}", wm.SerialNr, wm.WMPosition, max_Pruefindex); + insertedRows = cmd.ExecuteNonQuery(); + + if (insertedRows == 0) + { + throw new Exception(string.Format("Failed to insert or update VT_ZAEHLER_PD: PcbNr={0}, pos={1}, maxPruefix={2}", wm.SerialNr, wm.WMPosition, max_Pruefindex)); + } + } + + if (insertedRows > 0) + { + log.InfoFormat("VT_ZAEHLER_PD {0} row inserted, PcbNr={1}, pos={2}, maxPruefix={3}", insertedRows, wm.SerialNr, wm.WMPosition, max_Pruefindex); } else { - log.WarnFormat("SIM: VT_ZAEHLER_PD inserted, PcbNr={0}, pos={1}, maxPruefix={2}", wm.SerialNr, wm.WMPosition, max_Pruefindex); + log.InfoFormat("VT_ZAEHLER_PD: {0} rows updated, PcbNr={1}, pos={2}, maxPruefix={3}", updatedRows, wm.SerialNr, wm.WMPosition, max_Pruefindex); } } - else - { - if (!dbCfg.TestMode) - { - OracleCommand cmd = new OracleCommand("UPDATE vt_zaehler_pd " + - "SET auftragsnummer=:1, vt_identnummer=:2, max_pruefindex=:3, hydr_pruefung=:4, id_benutzer=:5, baujahr=:6 " + - "WHERE vt_fernum = :7 AND anbid = :8", conn); - - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = wm.PurchaseOrder }); - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = "IPBATMXX" }); - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = max_Pruefindex }); - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = hydr_Pruefung }); - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = idBenutzer }); - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = YearOfManufacture }); - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = wm.SerialNr }); - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = Anbid_StaraTura }); - - cmd.ExecuteNonQuery(); - log.InfoFormat("VT_ZAEHLER_PD updated, PcbNr={0}, pos={1}, maxPruefix={2}", wm.SerialNr, wm.WMPosition, max_Pruefindex); - } - else - { - log.WarnFormat("SIM: VT_ZAEHLER_PD updated, PcbNr={0}, pos={1}, maxPruefix={2}", wm.SerialNr, wm.WMPosition, max_Pruefindex); - } + else + { + log.WarnFormat("SIM: VT_ZAEHLER_PD inserted or updated, PcbNr={0}, pos={1}, maxPruefix={2}", wm.SerialNr, wm.WMPosition, max_Pruefindex); } if (!dbCfg.TestMode) @@ -1217,14 +1221,43 @@ namespace TBF.BenchControl.Output.DB.SensusOracle { int idBenutzer = 6; // = wm.Batch.UserNumber; - if (max_Pruefindex % 100 == 1) + if (!dbCfg.TestMode) { - if (!dbCfg.TestMode) + OracleCommand cmd = new OracleCommand("UPDATE vt_zaehler_pd " + + "SET auftragsnummer=:1, vt_identnummer=:2, max_pruefindex=:3, mbus_adr=:4, liegenschafts_nr=:5," + + " sekundaere_adr=:6, hydr_pruefung=:7, mark_date=:8, baujahr=:9, eich_jahr=:10, umkarton_nr=:11," + + " palette_nr=:12, zaehlernummer=:13, prefix=:14, suffix=:15, z_nr_komplett=:16, id_benutzer=:17 " + + "WHERE vt_fernum = :18 AND anbid = :19", conn); + + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = wm.PurchaseOrder }); /// :1 + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = "88888888" }); /// :2 + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = max_Pruefindex }); /// :3 + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = 0 }); /// :4 MBUS_ADR + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = 0 }); /// :5 LIEGENSCHAFTS_NR + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = 0 }); /// :6 Sekundaere_Adr + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = hydr_Pruefung }); /// :7 + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.TimeStamp, Value = wm.Batch.EndTime }); /// :8 + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = YearOfManufacture }); /// :9 + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = YearOfManufacture }); /// :10 + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = 0 }); /// :11 UMKARTON_NR + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = 0 }); /// :12 PALETTE_NR + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = wm.AssignedSerialNr }); /// :13 + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = wm.Prefix }); /// :14 + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = wm.Suffix }); /// :15 + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = wm.CompleteSerialNr }); /// :16 + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = idBenutzer }); /// :17 + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = wm.SerialNr }); /// :18 + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = Anbid_StaraTura }); /// :19 + + int updatedRows = cmd.ExecuteNonQuery(); + int insertedRows = 0; + + if (updatedRows == 0) { - OracleCommand cmd = new OracleCommand("INSERT INTO vt_zaehler_pd(auftragsnummer, vt_identnummer, vt_fernum, max_pruefindex," + - " mbus_adr, liegenschafts_nr, sekundaere_adr, hydr_pruefung, mark_date, baujahr, eich_jahr," + - " umkarton_nr, palette_nr, zaehlernummer, prefix, suffix, z_nr_komplett, anbid, id_benutzer) " + - "VALUES (:1, :2, :3, :4, :5, :6, :7, :8, :9, :10, :11, :12, :13, :14, :15, :16, :17, :18, :19)", conn); + cmd = new OracleCommand("INSERT INTO vt_zaehler_pd(auftragsnummer, vt_identnummer, vt_fernum, max_pruefindex," + + " mbus_adr, liegenschafts_nr, sekundaere_adr, hydr_pruefung, mark_date, baujahr, eich_jahr," + + " umkarton_nr, palette_nr, zaehlernummer, prefix, suffix, z_nr_komplett, anbid, id_benutzer) " + + "VALUES (:1, :2, :3, :4, :5, :6, :7, :8, :9, :10, :11, :12, :13, :14, :15, :16, :17, :18, :19)", conn); cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = wm.PurchaseOrder }); /// :1 cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = "88888888" }); /// :2 @@ -1246,51 +1279,26 @@ namespace TBF.BenchControl.Output.DB.SensusOracle cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = Anbid_StaraTura }); /// :18 cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = idBenutzer }); /// :19 - cmd.ExecuteNonQuery(); - log.InfoFormat("VT_ZAEHLER_PD inserted, PcbNr={0}, pos={1}, maxPruefix={2}", wm.SerialNr, wm.WMPosition, max_Pruefindex); + insertedRows = cmd.ExecuteNonQuery(); + + if (insertedRows == 0) + { + throw new Exception(string.Format("Failed to insert or update VT_ZAEHLER_PD: PcbNr={0}, pos={1}, maxPruefix={2}", wm.SerialNr, wm.WMPosition, max_Pruefindex)); + } + } + + if (insertedRows > 0) + { + log.InfoFormat("VT_ZAEHLER_PD {0} row inserted, PcbNr={1}, pos={2}, maxPruefix={3}", insertedRows, wm.SerialNr, wm.WMPosition, max_Pruefindex); } else { - log.WarnFormat("SIM: VT_ZAEHLER_PD inserted, PcbNr={0}, pos={1}, maxPruefix={2}", wm.SerialNr, wm.WMPosition, max_Pruefindex); + log.InfoFormat("VT_ZAEHLER_PD: {0} rows updated, PcbNr={1}, pos={2}, maxPruefix={3}", updatedRows, wm.SerialNr, wm.WMPosition, max_Pruefindex); } } else { - if (!dbCfg.TestMode) - { - OracleCommand cmd = new OracleCommand("UPDATE vt_zaehler_pd " + - "SET auftragsnummer=:1, vt_identnummer=:2, max_pruefindex=:3, mbus_adr=:4, liegenschafts_nr=:5," + - " sekundaere_adr=:6, hydr_pruefung=:7, mark_date=:8, baujahr=:9, eich_jahr=:10, umkarton_nr=:11," + - " palette_nr=:12, zaehlernummer=:13, prefix=:14, suffix=:15, z_nr_komplett=:16, id_benutzer=:17 " + - "WHERE vt_fernum = :18 AND anbid = :19", conn); - - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = wm.PurchaseOrder }); /// :1 - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = "88888888" }); /// :2 - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = max_Pruefindex }); /// :3 - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = 0 }); /// :4 MBUS_ADR - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = 0 }); /// :5 LIEGENSCHAFTS_NR - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = 0 }); /// :6 Sekundaere_Adr - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = hydr_Pruefung }); /// :7 - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.TimeStamp, Value = wm.Batch.EndTime }); /// :8 - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = YearOfManufacture }); /// :9 - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = YearOfManufacture }); /// :10 - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = 0 }); /// :11 UMKARTON_NR - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = 0 }); /// :12 PALETTE_NR - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = wm.AssignedSerialNr }); /// :13 - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = wm.Prefix }); /// :14 - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = wm.Suffix }); /// :15 - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = wm.CompleteSerialNr }); /// :16 - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = idBenutzer }); /// :17 - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = wm.SerialNr }); /// :18 - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = Anbid_StaraTura }); /// :19 - - cmd.ExecuteNonQuery(); - log.InfoFormat("VT_ZAEHLER_PD updated, PcbNr={0}, pos={1}, maxPruefix={2}", wm.SerialNr, wm.WMPosition, max_Pruefindex); - } - else - { - log.WarnFormat("SIM: VT_ZAEHLER_PD updated, PcbNr={0}, pos={1}, maxPruefix={2}", wm.SerialNr, wm.WMPosition, max_Pruefindex); - } + log.WarnFormat("SIM: VT_ZAEHLER_PD inserted or updated, PcbNr={0}, pos={1}, maxPruefix={2}", wm.SerialNr, wm.WMPosition, max_Pruefindex); } if (!dbCfg.TestMode) diff --git a/TBF/Properties/AssemblyInfo.cs b/TBF/Properties/AssemblyInfo.cs index 7bbf3e5bc..5de139919 100644 --- a/TBF/Properties/AssemblyInfo.cs +++ b/TBF/Properties/AssemblyInfo.cs @@ -29,5 +29,5 @@ using System.Runtime.InteropServices; // Build Number // Revision // -[assembly: AssemblyVersion("2.26.1717.0")] -[assembly: AssemblyFileVersion("2.26.1717.0")] +[assembly: AssemblyVersion("2.26.1719.0")] +[assembly: AssemblyFileVersion("2.26.1719.0")] diff --git a/TBF/TBF.csproj b/TBF/TBF.csproj index ec09134ec..f4342ed13 100644 --- a/TBF/TBF.csproj +++ b/TBF/TBF.csproj @@ -2559,6 +2559,12 @@ ProcessTabPageExCtrl.cs + + Form + + + DeleteFromOracleForm.cs + UserControl @@ -3558,6 +3564,9 @@ ProcessTabPageExCtrl.cs + + DeleteFromOracleForm.cs + PreviousResultCtrl.cs diff --git a/TBF/UI/ResultsMI/DeleteFromOracleForm.Designer.cs b/TBF/UI/ResultsMI/DeleteFromOracleForm.Designer.cs new file mode 100644 index 000000000..18204e733 --- /dev/null +++ b/TBF/UI/ResultsMI/DeleteFromOracleForm.Designer.cs @@ -0,0 +1,243 @@ +namespace TBF.UI.ResultsMI +{ + partial class DeleteFromOracleForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.selectWhatToDeleteGroupBox = new System.Windows.Forms.GroupBox(); + this.waterMetersTextBox = new System.Windows.Forms.TextBox(); + this.waterMetersRadioButton = new System.Windows.Forms.RadioButton(); + this.batchRadioButton = new System.Windows.Forms.RadioButton(); + this.startButton = new System.Windows.Forms.Button(); + this.activityGroupBox = new System.Windows.Forms.GroupBox(); + this.activityTextBox = new System.Windows.Forms.TextBox(); + this.wmTypeGroupBox = new System.Windows.Forms.GroupBox(); + this.s640RadioButton = new System.Windows.Forms.RadioButton(); + this.s620RadioButton = new System.Windows.Forms.RadioButton(); + this.iPerlRadioButton = new System.Windows.Forms.RadioButton(); + this.splitContainer1 = new System.Windows.Forms.SplitContainer(); + this.batchNrTextBox = new System.Windows.Forms.TextBox(); + this.selectWhatToDeleteGroupBox.SuspendLayout(); + this.activityGroupBox.SuspendLayout(); + this.wmTypeGroupBox.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit(); + this.splitContainer1.Panel1.SuspendLayout(); + this.splitContainer1.Panel2.SuspendLayout(); + this.splitContainer1.SuspendLayout(); + this.SuspendLayout(); + // + // selectWhatToDeleteGroupBox + // + this.selectWhatToDeleteGroupBox.Controls.Add(this.waterMetersRadioButton); + this.selectWhatToDeleteGroupBox.Controls.Add(this.batchRadioButton); + this.selectWhatToDeleteGroupBox.Location = new System.Drawing.Point(117, 16); + this.selectWhatToDeleteGroupBox.Name = "selectWhatToDeleteGroupBox"; + this.selectWhatToDeleteGroupBox.Size = new System.Drawing.Size(134, 110); + this.selectWhatToDeleteGroupBox.TabIndex = 0; + this.selectWhatToDeleteGroupBox.TabStop = false; + this.selectWhatToDeleteGroupBox.Text = "Select what to delete"; + // + // waterMetersTextBox + // + this.waterMetersTextBox.Location = new System.Drawing.Point(267, 70); + this.waterMetersTextBox.Multiline = true; + this.waterMetersTextBox.Name = "waterMetersTextBox"; + this.waterMetersTextBox.Size = new System.Drawing.Size(211, 56); + this.waterMetersTextBox.TabIndex = 2; + // + // waterMetersRadioButton + // + this.waterMetersRadioButton.AutoSize = true; + this.waterMetersRadioButton.Location = new System.Drawing.Point(16, 45); + this.waterMetersRadioButton.Name = "waterMetersRadioButton"; + this.waterMetersRadioButton.Size = new System.Drawing.Size(88, 17); + this.waterMetersRadioButton.TabIndex = 1; + this.waterMetersRadioButton.Text = "Water meters"; + this.waterMetersRadioButton.UseVisualStyleBackColor = true; + // + // batchRadioButton + // + this.batchRadioButton.AutoSize = true; + this.batchRadioButton.Checked = true; + this.batchRadioButton.Location = new System.Drawing.Point(16, 23); + this.batchRadioButton.Name = "batchRadioButton"; + this.batchRadioButton.Size = new System.Drawing.Size(53, 17); + this.batchRadioButton.TabIndex = 0; + this.batchRadioButton.TabStop = true; + this.batchRadioButton.Text = "Batch"; + this.batchRadioButton.UseVisualStyleBackColor = true; + // + // startButton + // + this.startButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.startButton.Location = new System.Drawing.Point(494, 24); + this.startButton.Name = "startButton"; + this.startButton.Size = new System.Drawing.Size(70, 40); + this.startButton.TabIndex = 1; + this.startButton.Text = "Start"; + this.startButton.UseVisualStyleBackColor = true; + this.startButton.Click += new System.EventHandler(this.startButton_Click); + // + // activityGroupBox + // + this.activityGroupBox.Controls.Add(this.activityTextBox); + this.activityGroupBox.Dock = System.Windows.Forms.DockStyle.Fill; + this.activityGroupBox.Location = new System.Drawing.Point(0, 0); + this.activityGroupBox.Name = "activityGroupBox"; + this.activityGroupBox.Size = new System.Drawing.Size(584, 317); + this.activityGroupBox.TabIndex = 2; + this.activityGroupBox.TabStop = false; + this.activityGroupBox.Text = "Activity"; + // + // activityTextBox + // + this.activityTextBox.Dock = System.Windows.Forms.DockStyle.Fill; + this.activityTextBox.Location = new System.Drawing.Point(3, 16); + this.activityTextBox.Multiline = true; + this.activityTextBox.Name = "activityTextBox"; + this.activityTextBox.ScrollBars = System.Windows.Forms.ScrollBars.Both; + this.activityTextBox.Size = new System.Drawing.Size(578, 298); + this.activityTextBox.TabIndex = 0; + // + // wmTypeGroupBox + // + this.wmTypeGroupBox.Controls.Add(this.s640RadioButton); + this.wmTypeGroupBox.Controls.Add(this.s620RadioButton); + this.wmTypeGroupBox.Controls.Add(this.iPerlRadioButton); + this.wmTypeGroupBox.Location = new System.Drawing.Point(13, 15); + this.wmTypeGroupBox.Name = "wmTypeGroupBox"; + this.wmTypeGroupBox.Size = new System.Drawing.Size(98, 111); + this.wmTypeGroupBox.TabIndex = 3; + this.wmTypeGroupBox.TabStop = false; + this.wmTypeGroupBox.Text = "WM Type"; + // + // s640RadioButton + // + this.s640RadioButton.AutoSize = true; + this.s640RadioButton.Location = new System.Drawing.Point(15, 65); + this.s640RadioButton.Name = "s640RadioButton"; + this.s640RadioButton.Size = new System.Drawing.Size(43, 17); + this.s640RadioButton.TabIndex = 2; + this.s640RadioButton.TabStop = true; + this.s640RadioButton.Text = "640"; + this.s640RadioButton.UseVisualStyleBackColor = true; + // + // s620RadioButton + // + this.s620RadioButton.AutoSize = true; + this.s620RadioButton.Location = new System.Drawing.Point(15, 44); + this.s620RadioButton.Name = "s620RadioButton"; + this.s620RadioButton.Size = new System.Drawing.Size(43, 17); + this.s620RadioButton.TabIndex = 1; + this.s620RadioButton.TabStop = true; + this.s620RadioButton.Text = "620"; + this.s620RadioButton.UseVisualStyleBackColor = true; + // + // iPerlRadioButton + // + this.iPerlRadioButton.AutoSize = true; + this.iPerlRadioButton.Checked = true; + this.iPerlRadioButton.Location = new System.Drawing.Point(15, 21); + this.iPerlRadioButton.Name = "iPerlRadioButton"; + this.iPerlRadioButton.Size = new System.Drawing.Size(55, 17); + this.iPerlRadioButton.TabIndex = 0; + this.iPerlRadioButton.TabStop = true; + this.iPerlRadioButton.Text = "iPERL"; + this.iPerlRadioButton.UseVisualStyleBackColor = true; + // + // splitContainer1 + // + this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill; + this.splitContainer1.FixedPanel = System.Windows.Forms.FixedPanel.Panel1; + this.splitContainer1.IsSplitterFixed = true; + this.splitContainer1.Location = new System.Drawing.Point(0, 0); + this.splitContainer1.Name = "splitContainer1"; + this.splitContainer1.Orientation = System.Windows.Forms.Orientation.Horizontal; + // + // splitContainer1.Panel1 + // + this.splitContainer1.Panel1.Controls.Add(this.batchNrTextBox); + this.splitContainer1.Panel1.Controls.Add(this.wmTypeGroupBox); + this.splitContainer1.Panel1.Controls.Add(this.waterMetersTextBox); + this.splitContainer1.Panel1.Controls.Add(this.startButton); + this.splitContainer1.Panel1.Controls.Add(this.selectWhatToDeleteGroupBox); + // + // splitContainer1.Panel2 + // + this.splitContainer1.Panel2.Controls.Add(this.activityGroupBox); + this.splitContainer1.Size = new System.Drawing.Size(584, 461); + this.splitContainer1.SplitterDistance = 140; + this.splitContainer1.TabIndex = 4; + // + // batchNrTextBox + // + this.batchNrTextBox.Location = new System.Drawing.Point(378, 33); + this.batchNrTextBox.Name = "batchNrTextBox"; + this.batchNrTextBox.Size = new System.Drawing.Size(100, 20); + this.batchNrTextBox.TabIndex = 3; + // + // DeleteFromOracleForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(584, 461); + this.Controls.Add(this.splitContainer1); + this.MinimumSize = new System.Drawing.Size(600, 500); + this.Name = "DeleteFromOracleForm"; + this.Text = "Delete Data From Oracle"; + this.selectWhatToDeleteGroupBox.ResumeLayout(false); + this.selectWhatToDeleteGroupBox.PerformLayout(); + this.activityGroupBox.ResumeLayout(false); + this.activityGroupBox.PerformLayout(); + this.wmTypeGroupBox.ResumeLayout(false); + this.wmTypeGroupBox.PerformLayout(); + this.splitContainer1.Panel1.ResumeLayout(false); + this.splitContainer1.Panel1.PerformLayout(); + this.splitContainer1.Panel2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit(); + this.splitContainer1.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.GroupBox selectWhatToDeleteGroupBox; + private System.Windows.Forms.TextBox waterMetersTextBox; + private System.Windows.Forms.RadioButton waterMetersRadioButton; + private System.Windows.Forms.RadioButton batchRadioButton; + private System.Windows.Forms.Button startButton; + private System.Windows.Forms.GroupBox activityGroupBox; + private System.Windows.Forms.TextBox activityTextBox; + private System.Windows.Forms.GroupBox wmTypeGroupBox; + private System.Windows.Forms.RadioButton s640RadioButton; + private System.Windows.Forms.RadioButton s620RadioButton; + private System.Windows.Forms.RadioButton iPerlRadioButton; + private System.Windows.Forms.SplitContainer splitContainer1; + private System.Windows.Forms.TextBox batchNrTextBox; + } +} \ No newline at end of file diff --git a/TBF/UI/ResultsMI/DeleteFromOracleForm.cs b/TBF/UI/ResultsMI/DeleteFromOracleForm.cs new file mode 100644 index 000000000..b9f1c9418 --- /dev/null +++ b/TBF/UI/ResultsMI/DeleteFromOracleForm.cs @@ -0,0 +1,382 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Windows.Forms; +using NHibernate; +using Oracle.DataAccess.Client; +using TBF.Resources; +using TBF.BenchControl.Output.DB.SensusOracle; +using TBF.BenchControl.Sequences; +using Config.Entities; + +namespace TBF.UI.ResultsMI +{ + enum WMType + { + Iperl, + S620, + S640, + } + + public partial class DeleteFromOracleForm : Form + { + string testBenchName; + int testBenchId; + WMType wmType; + bool deleteBatch; + int batchNumber; + IList pcbNumbers; + + public DeleteFromOracleForm() + { + InitializeComponent(); + + testBenchName = ProcessData.BenchInfo.TestBenchName; + testBenchId = ProcessData.BenchInfo.TestBenchId; + + batchNumber = 0; + pcbNumbers = new List(); + } + + bool GetSelection() + { + wmType = iPerlRadioButton.Checked ? WMType.Iperl : s620RadioButton.Checked ? WMType.S620 : WMType.S640; + + deleteBatch = batchRadioButton.Checked; + + if (!int.TryParse(batchNrTextBox.Text, out batchNumber) || batchNumber <= 0) + { + batchNumber = 0; + } + + pcbNumbers.Clear(); + string[] items = waterMetersTextBox.Text.Split(new char[] { ',', ';', '\r', '\n' }); + foreach (var item in items) + { + string itm = item.Trim(); + if (itm.Length == 12) pcbNumbers.Add(itm); + } + + return true; + } + + private void startButton_Click(object sender, EventArgs e) + { + activityTextBox.Text = string.Empty; + + if (!GetSelection()) + { + MessageBox.Show("Invalid selection of data to be deleted"); + return; + } + + OracleConnection conn; + /// + if (ProcessData.OracleDB == null || + ProcessData.OracleDB.DebugLevel != DebugMode.Normal) + { + MessageBox.Show("No Oracle database or it is in simulation mode"); + return; + } + else + { + switch (DBUsed.Production) + { + default: + case DBUsed.Production: conn = ProcessData.OracleDB.ProductionDB; break; + case DBUsed.Quality: conn = ProcessData.OracleDB.QualityDB; break; + case DBUsed.Test: conn = ProcessData.OracleDB.TestDB; break; + } + + if (conn == null) + { + MessageBox.Show("No connection to Oracle database"); + return; + } + } + + /// TODO: Implement database selection + MessageBox.Show(string.Format("Výsledky budú zapísané do produkčnej databázy"), + Strings.Information, + MessageBoxButtons.OK, + MessageBoxIcon.Information); + + if (deleteBatch) + { + activityTextBox.Text = string.Format("Going to delete batch {0}{1}", batchNumber, Environment.NewLine); + + if (!DeleteBatch(conn, batchNumber)) + { + MessageBox.Show(string.Format("Deleting batch {0} failed", batchNumber)); + } + } + else + { + activityTextBox.Text = string.Format("Going to delete water meters:{0}", Environment.NewLine); + foreach (var pcb in pcbNumbers) + { + activityTextBox.Text += string.Format("{0}{1}", pcb, Environment.NewLine); + } + + if (!DeleteWaterMeters(conn, pcbNumbers)) + { + MessageBox.Show("Deleting iPERL-s failed"); + } + } + } + + bool DeleteBatch(OracleConnection conn, int batchNr) + { + OracleCommand cmd; + OracleDataReader dr; + int deletedRows; + + try + { + conn.Open(); /// Open the Oracle database + } + catch (Exception exc) + { + activityTextBox.Text += string.Format("Cannot open Oracle database: {0}", exc.Message); + conn.Close(); + return false; + } + + /// Get a list of water meters + IList pruefindexes; + IList waterMeters = GetListOfWaterMeters(conn, batchNr, out pruefindexes); + + /// Read this batch tests data from VT_PRUEFDURCHFLUSS_PD + IList testNumbers = new List(); ; + cmd = new OracleCommand("SELECT pruefungsnr " + + "FROM vt_pruefdurchfluss_pd " + + "WHERE anbid = :1 AND id_pruefstand = :2 AND id_wzpruefreihe = :3", conn); + cmd.Parameters.Add(new OracleParameter { ParameterName = "1", OracleDbType = OracleDbType.Int32, Value = Database.Anbid_StaraTura }); + cmd.Parameters.Add(new OracleParameter { ParameterName = "2", OracleDbType = OracleDbType.Int32, Value = 18000 + testBenchId }); + cmd.Parameters.Add(new OracleParameter { ParameterName = "3", OracleDbType = OracleDbType.Int32, Value = batchNr }); + /// + dr = cmd.ExecuteReader(); + bool found = false; + while (dr.Read()) + { + int i = 0; + int pruefungsnr = dr.GetInt32(i++); + testNumbers.Add(pruefungsnr); + activityTextBox.Text += string.Format("pruefungsnr = {0} found in table vt_pruefdurchfluss_p, batch = {1}{2}", pruefungsnr, batchNr, Environment.NewLine); + found = true; + } + dr.Close(); + if (!found) activityTextBox.Text += string.Format("Nothing found in table vt_pruefdurchfluss_pd, batch = {0}{1}", batchNr, Environment.NewLine); + + /// Transaction start + OracleTransaction transaction = conn.BeginTransaction(); + + /// + /// Delete water meters + /// + try + { + for (int i = 0; i < waterMeters.Count; i++) + { + string pcbNr = waterMeters[i]; + int pruefindex = pruefindexes[i] % 100; + /// + foreach (var pruefungsnr in testNumbers) + { + cmd = new OracleCommand("DELETE FROM vt_pruefreihe_ist_pd " + + "WHERE anbid = :1 AND vt_fernum = :2 AND pruefungsnr = :3 AND pruefindex = :4", conn); + cmd.Parameters.Add(new OracleParameter { ParameterName = "1", OracleDbType = OracleDbType.Int32, Value = Database.Anbid_StaraTura }); + cmd.Parameters.Add(new OracleParameter { ParameterName = "2", OracleDbType = OracleDbType.Varchar2, Value = pcbNr }); + cmd.Parameters.Add(new OracleParameter { ParameterName = "3", OracleDbType = OracleDbType.Int32, Value = pruefungsnr }); + cmd.Parameters.Add(new OracleParameter { ParameterName = "4", OracleDbType = OracleDbType.Int32, Value = 100 * testBenchId + pruefindex }); + /// + deletedRows = cmd.ExecuteNonQuery(); + activityTextBox.Text += string.Format("{0} rows deleted from vt_pruefreihe_ist_pd, pcb# = {1}, test# = {2}{3}", deletedRows, pcbNr, pruefungsnr, Environment.NewLine); + } + + if (wmType == WMType.Iperl) + { + cmd = new OracleCommand("DELETE FROM vt_ip_zaehler_pindex_pd " + + "WHERE anbid = :1 AND vt_fernum = :2 AND pruefindex = :3", conn); + cmd.Parameters.Add(new OracleParameter { ParameterName = "1", OracleDbType = OracleDbType.Int32, Value = Database.Anbid_StaraTura }); + cmd.Parameters.Add(new OracleParameter { ParameterName = "2", OracleDbType = OracleDbType.Varchar2, Value = pcbNr }); + cmd.Parameters.Add(new OracleParameter { ParameterName = "3", OracleDbType = OracleDbType.Int32, Value = 100 * testBenchId + pruefindex }); + /// + deletedRows = cmd.ExecuteNonQuery(); + activityTextBox.Text += string.Format("{0} rows deleted from vt_ip_zaehler_pindex_pd, pcb# = {1}{2}", deletedRows, pcbNr, Environment.NewLine); + } + + + cmd = new OracleCommand("DELETE FROM vt_zaehler_pindex_pd " + + "WHERE anbid = :1 AND vt_fernum = :2 AND pruefindex = :3", conn); + cmd.Parameters.Add(new OracleParameter { ParameterName = "1", OracleDbType = OracleDbType.Int32, Value = Database.Anbid_StaraTura }); + cmd.Parameters.Add(new OracleParameter { ParameterName = "2", OracleDbType = OracleDbType.Varchar2, Value = pcbNr }); + cmd.Parameters.Add(new OracleParameter { ParameterName = "3", OracleDbType = OracleDbType.Int32, Value = 100 * testBenchId + pruefindex }); + /// + deletedRows = cmd.ExecuteNonQuery(); + activityTextBox.Text += string.Format("{0} rows deleted from vt_zaehler_pindex_pd, pcb# = {1}{2}", deletedRows, pcbNr, Environment.NewLine); + + + cmd = new OracleCommand("DELETE FROM vt_zaehler_pd " + + "WHERE anbid = :1 AND vt_fernum = :2", conn); + cmd.Parameters.Add(new OracleParameter { ParameterName = "1", OracleDbType = OracleDbType.Int32, Value = Database.Anbid_StaraTura }); + cmd.Parameters.Add(new OracleParameter { ParameterName = "2", OracleDbType = OracleDbType.Varchar2, Value = pcbNr }); + /// + deletedRows = cmd.ExecuteNonQuery(); + activityTextBox.Text += string.Format("{0} rows deleted from vt_zaehler_pd, pcb# = {1}{2}", deletedRows, pcbNr, Environment.NewLine); + } + + /// + /// Delete (common) batch data + /// + cmd = new OracleCommand("DELETE FROM vt_pruefdurchfluss_pd " + + "WHERE anbid = :1 AND id_pruefstand = :2 AND id_wzpruefreihe = :3", conn); + cmd.Parameters.Add(new OracleParameter { ParameterName = "1", OracleDbType = OracleDbType.Int32, Value = Database.Anbid_StaraTura }); + cmd.Parameters.Add(new OracleParameter { ParameterName = "2", OracleDbType = OracleDbType.Int32, Value = 18000 + testBenchId }); + cmd.Parameters.Add(new OracleParameter { ParameterName = "3", OracleDbType = OracleDbType.Int32, Value = batchNr }); + /// + deletedRows = cmd.ExecuteNonQuery(); + activityTextBox.Text += string.Format("{0} rows deleted from vt_pruefdurchfluss_pd, batchNr# = {1}{2}", deletedRows, batchNr, Environment.NewLine); + + + cmd = new OracleCommand("DELETE FROM vt_pruefreihe_pd " + + "WHERE anbid = :1 AND id_pruefstand = :2 AND id_wzpruefreihe = :3", conn); + cmd.Parameters.Add(new OracleParameter { ParameterName = "1", OracleDbType = OracleDbType.Int32, Value = Database.Anbid_StaraTura }); + cmd.Parameters.Add(new OracleParameter { ParameterName = "2", OracleDbType = OracleDbType.Int32, Value = 18000 + testBenchId }); + cmd.Parameters.Add(new OracleParameter { ParameterName = "3", OracleDbType = OracleDbType.Int32, Value = batchNr }); + /// + deletedRows = cmd.ExecuteNonQuery(); + activityTextBox.Text += string.Format("{0} rows deleted from vt_pruefreihe_pd, batchNr# = {1}{2}", deletedRows, batchNr, Environment.NewLine); + + + /// Transaction end + transaction.Commit(); + conn.Close(); + activityTextBox.Text += string.Format("Successfully completed"); + return true; + } + catch (Exception exc) + { + transaction.Rollback(); + conn.Close(); + activityTextBox.Text += string.Format("Transaction failed: {0}{1}", exc.Message, Environment.NewLine); + return false; + } + } + + IList GetListOfWaterMeters(OracleConnection conn, int batchNr, out IList pruefindexes) + { + IList pcbNrs = new List(); + pruefindexes = new List(); + OracleCommand cmd; + OracleDataReader dr; + + cmd = new OracleCommand("SELECT vt_fernum, pruefindex " + + "FROM vt_zaehler_pindex_pd " + + "WHERE anbid = :1 AND id_pruefstand = :2 AND id_wzpruefreihe = :3", conn); + cmd.Parameters.Add(new OracleParameter { ParameterName = "1", OracleDbType = OracleDbType.Int32, Value = Database.Anbid_StaraTura }); + cmd.Parameters.Add(new OracleParameter { ParameterName = "2", OracleDbType = OracleDbType.Int32, Value = 18000 + testBenchId }); + cmd.Parameters.Add(new OracleParameter { ParameterName = "3", OracleDbType = OracleDbType.Int32, Value = batchNr }); + + dr = cmd.ExecuteReader(); + activityTextBox.Text += string.Format("Water meters:{0}", Environment.NewLine); + while (dr.Read()) + { + int i = 0; + string pcbNr = dr.GetString(i++); + pcbNrs.Add(pcbNr); + pruefindexes.Add(dr.GetInt32(i++)); + activityTextBox.Text += string.Format("{0}, ", pcbNr); + } + dr.Close(); + activityTextBox.Text += Environment.NewLine; + activityTextBox.Text += Environment.NewLine; + + return pcbNrs; + } + + bool DeleteWaterMeters(OracleConnection conn, IList waterMeters) + { + OracleCommand cmd; + OracleDataReader dr; + int deletedRows; + + try + { + conn.Open(); /// Open the Oracle database + } + catch (Exception exc) + { + activityTextBox.Text += string.Format("Cannot open Oracle database: {0}", exc.Message); + conn.Close(); + return false; + } + + + /// Transaction start + OracleTransaction transaction = conn.BeginTransaction(); + + /// + /// Delete water meters + /// + try + { + for (int i = 0; i < waterMeters.Count; i++) + { + string pcbNr = waterMeters[i]; + /// + cmd = new OracleCommand("DELETE FROM vt_pruefreihe_ist_pd " + + "WHERE anbid = :1 AND vt_fernum = :2", conn); + cmd.Parameters.Add(new OracleParameter { ParameterName = "1", OracleDbType = OracleDbType.Int32, Value = Database.Anbid_StaraTura }); + cmd.Parameters.Add(new OracleParameter { ParameterName = "2", OracleDbType = OracleDbType.Varchar2, Value = pcbNr }); + /// + deletedRows = cmd.ExecuteNonQuery(); + activityTextBox.Text += string.Format("{0} rows deleted from vt_pruefreihe_ist_pd, pcb# = {1}{2}", deletedRows, pcbNr, Environment.NewLine); + + + if (wmType == WMType.Iperl) + { + cmd = new OracleCommand("DELETE FROM vt_ip_zaehler_pindex_pd " + + "WHERE anbid = :1 AND vt_fernum = :2", conn); + cmd.Parameters.Add(new OracleParameter { ParameterName = "1", OracleDbType = OracleDbType.Int32, Value = Database.Anbid_StaraTura }); + cmd.Parameters.Add(new OracleParameter { ParameterName = "2", OracleDbType = OracleDbType.Varchar2, Value = pcbNr }); + /// + deletedRows = cmd.ExecuteNonQuery(); + activityTextBox.Text += string.Format("{0} rows deleted from vt_ip_zaehler_pindex_pd, pcb# = {1}{2}", deletedRows, pcbNr, Environment.NewLine); + } + + + cmd = new OracleCommand("DELETE FROM vt_zaehler_pindex_pd " + + "WHERE anbid = :1 AND vt_fernum = :2", conn); + cmd.Parameters.Add(new OracleParameter { ParameterName = "1", OracleDbType = OracleDbType.Int32, Value = Database.Anbid_StaraTura }); + cmd.Parameters.Add(new OracleParameter { ParameterName = "2", OracleDbType = OracleDbType.Varchar2, Value = pcbNr }); + /// + deletedRows = cmd.ExecuteNonQuery(); + activityTextBox.Text += string.Format("{0} rows deleted from vt_zaehler_pindex_pd, pcb# = {1}{2}", deletedRows, pcbNr, Environment.NewLine); + + + cmd = new OracleCommand("DELETE FROM vt_zaehler_pd " + + "WHERE anbid = :1 AND vt_fernum = :2", conn); + cmd.Parameters.Add(new OracleParameter { ParameterName = "1", OracleDbType = OracleDbType.Int32, Value = Database.Anbid_StaraTura }); + cmd.Parameters.Add(new OracleParameter { ParameterName = "2", OracleDbType = OracleDbType.Varchar2, Value = pcbNr }); + /// + deletedRows = cmd.ExecuteNonQuery(); + activityTextBox.Text += string.Format("{0} rows deleted from vt_zaehler_pd, pcb# = {1}{2}", deletedRows, pcbNr, Environment.NewLine); + } + + /// Transaction end + transaction.Commit(); + conn.Close(); + activityTextBox.Text += string.Format("Successfully completed"); + return true; + } + catch (Exception exc) + { + transaction.Rollback(); + conn.Close(); + activityTextBox.Text += string.Format("Transaction failed: {0}{1}", exc.Message, Environment.NewLine); + return false; + } + } + } +} diff --git a/TBF/UI/ResultsMI/DeleteFromOracleForm.resx b/TBF/UI/ResultsMI/DeleteFromOracleForm.resx new file mode 100644 index 000000000..1af7de150 --- /dev/null +++ b/TBF/UI/ResultsMI/DeleteFromOracleForm.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/TBF/UI/ResultsMI/ResultsTabPageCtrl.Designer.cs b/TBF/UI/ResultsMI/ResultsTabPageCtrl.Designer.cs index 376f4890e..b6182cb60 100644 --- a/TBF/UI/ResultsMI/ResultsTabPageCtrl.Designer.cs +++ b/TBF/UI/ResultsMI/ResultsTabPageCtrl.Designer.cs @@ -48,6 +48,7 @@ namespace TBF.UI.ResultsMI this.showPreviousResultsButton = new System.Windows.Forms.Button(); this.configureButton = new System.Windows.Forms.Button(); this.flowLayoutPanel = new System.Windows.Forms.FlowLayoutPanel(); + this.deleteFromOracleButton = new System.Windows.Forms.Button(); ((System.ComponentModel.ISupportInitialize)(this.splitContainer)).BeginInit(); this.splitContainer.Panel1.SuspendLayout(); this.splitContainer.Panel2.SuspendLayout(); @@ -71,6 +72,7 @@ namespace TBF.UI.ResultsMI // splitContainer.Panel1 // this.splitContainer.Panel1.BackColor = System.Drawing.SystemColors.Control; + this.splitContainer.Panel1.Controls.Add(this.deleteFromOracleButton); this.splitContainer.Panel1.Controls.Add(this.fixPreviousResultsButton); this.splitContainer.Panel1.Controls.Add(this.label5); this.splitContainer.Panel1.Controls.Add(this.label4); @@ -201,7 +203,7 @@ namespace TBF.UI.ResultsMI this.reloadPreviousResultsButton.Enabled = false; this.reloadPreviousResultsButton.Location = new System.Drawing.Point(405, 10); this.reloadPreviousResultsButton.Name = "reloadPreviousResultsButton"; - this.reloadPreviousResultsButton.Size = new System.Drawing.Size(185, 30); + this.reloadPreviousResultsButton.Size = new System.Drawing.Size(164, 30); this.reloadPreviousResultsButton.TabIndex = 3; this.reloadPreviousResultsButton.Text = "Reload previous results"; this.reloadPreviousResultsButton.UseVisualStyleBackColor = true; @@ -248,6 +250,16 @@ namespace TBF.UI.ResultsMI this.flowLayoutPanel.TabIndex = 0; this.flowLayoutPanel.SizeChanged += new System.EventHandler(this.flowLayoutPanel_SizeChanged); // + // deleteFromOracleButton + // + this.deleteFromOracleButton.Location = new System.Drawing.Point(575, 10); + this.deleteFromOracleButton.Name = "deleteFromOracleButton"; + this.deleteFromOracleButton.Size = new System.Drawing.Size(28, 29); + this.deleteFromOracleButton.TabIndex = 15; + this.deleteFromOracleButton.Text = "D"; + this.deleteFromOracleButton.UseVisualStyleBackColor = true; + this.deleteFromOracleButton.Click += new System.EventHandler(this.deleteFromOracleButton_Click); + // // ResultsTabPageCtrl // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); @@ -291,5 +303,6 @@ namespace TBF.UI.ResultsMI private System.Windows.Forms.PictureBox pictureBox2; private System.Windows.Forms.PictureBox pictureBox1; private System.Windows.Forms.Button fixPreviousResultsButton; + private System.Windows.Forms.Button deleteFromOracleButton; } } diff --git a/TBF/UI/ResultsMI/ResultsTabPageCtrl.cs b/TBF/UI/ResultsMI/ResultsTabPageCtrl.cs index 1760eca20..c32da61a8 100644 --- a/TBF/UI/ResultsMI/ResultsTabPageCtrl.cs +++ b/TBF/UI/ResultsMI/ResultsTabPageCtrl.cs @@ -639,5 +639,21 @@ namespace TBF.UI.ResultsMI } } } + + private void deleteFromOracleButton_Click(object sender, EventArgs e) + { + /// Access only to those who manage production tracing + Users.Entities.GID[] rqrdGroupMembership = new Users.Entities.GID[] { Users.Entities.GID.TraceabilityManagement }; + + if ((new Users.Forms.LoginDlg(Users.GlobalData.CurrentUser.UserName, rqrdGroupMembership)).ShowDialog() != DialogResult.OK) + { + return; + } + + if (new DeleteFromOracleForm().ShowDialog() == DialogResult.OK) + { + MessageBox.Show("Successfully deleted from Oracle"); + } + } } }