//.....................................
        // Load Form Data
        //.....................................
        private void LoadFormData()
        {
            // Susceptibility
            clbSusc.Items.Clear();
            int i;

            for (i = 0; i < (_rrsusc.RrValues.Count - 1); i++)
            {
                BPRiskRankingItem RRItem = new BPRiskRankingItem("", 0, "", "");
                if (_rrsusc.RrValues.GetItem(i, ref RRItem))
                {
                    clbSusc.Items.Add(RRItem.RiskRankingDesc);
                }
            }
            // Consequence
            clbCons.Items.Clear();
            for (i = 0; i < (_rrcons.RrValues.Count - 1); i++)
            {
                BPRiskRankingItem RRItem = new BPRiskRankingItem("", 0, "", "");
                if (_rrcons.RrValues.GetItem(i, ref RRItem))
                {
                    //clbCons.Items.Add(RRItem.RiskRankingDesc);
                    clbCons.Items.Add(new ListBoxNameValueStringObject {
                        ObjectName = RRItem.RiskRankingDesc, ObjectValue = RRItem.RiskRankingFieldNameLS
                    });
                }
            }
        }
        // Build SQL Statement if the selections are valid
        private bool BuildSQLStatement()
        {
            int    count            = 0;
            string logicalcondition = " OR ";

            if (rbAND.Checked)
            {
                logicalcondition = " AND ";
            }
            _selectdescription = "Factors selected:\n";
            // Build the Susc SQL Statement First
            if (clbSusc.CheckedItems.Count > 0)
            {
                BPRiskRankingItem BPRRItem     = new BPRiskRankingItem("", 0, "", "");
                string            SQLStatement = "SELECT [Dbf Line Section].[Zone ID], [Dbf Line Section].[Line Section], [Dbf Line Section].MapFeatureID, [Dbf Line Section].[Begin Point], [Dbf Line Section].[End Point], [Dbf Susceptibility LS].Under_Road, [Dbf Susceptibility LS].Under_Bldg, [Dbf Susceptibility LS].Under_RR, " +
                                                 "[Dbf Susceptibility LS].Under_Tower_Footer, [Dbf Susceptibility LS].Under_Trans_Line, [Dbf Susceptibility LS].Over_Under_River, [Dbf Susceptibility LS].In_To_Out_Of_Bldg, [Dbf Susceptibility LS].In_Wall, " +
                                                 "[Dbf Susceptibility LS].Underground_Tee, [Dbf Susceptibility LS].Replaced, [Dbf Susceptibility LS].Mtl_Chg, [Dbf Susceptibility LS].Inspected, [Dbf Susceptibility LS].Above_Groundwater_Level, " +
                                                 "[Dbf Susceptibility LS].Earthen_Fill_Material_Change, [Dbf Susceptibility LS].Pipe, [Dbf Susceptibility LS].PipeAge, [Dbf Susceptibility LS].Leak_History, [Dbf Susceptibility LS].NotCoated, [Dbf Susceptibility LS].SoilOutOfSpec, " +
                                                 "[Dbf Susceptibility LS].GroundSettlement, [Dbf Susceptibility LS].PipesInArea, [Dbf Susceptibility LS].SteamLine, [Dbf Susceptibility LS].WallThinner, [Dbf Susceptibility LS].Potential, [Dbf Susceptibility LS].Uncorrected, " +
                                                 "[Dbf Susceptibility LS].BackfillUnacceptable, [Dbf Susceptibility LS].RectifierOperational, [Dbf Susceptibility LS].[Internal Erosion Corrosion], [Dbf Susceptibility LS].[Soil Characteristics Unknown], " +
                                                 "[Dbf Susceptibility LS].[Recorded Transient Not Corrected], [Dbf Susceptibility LS].[Within 10 ft Transmission Line Footer], [Dbf Susceptibility LS].[No Coating Inspection Performed], " +
                                                 "[Dbf Susceptibility LS].[Coating Degradation Identified], [Dbf Susceptibility LS].[Pipe Wall Degradation], [Dbf Susceptibility LS].[Susceptibility Engineering Judgement], [Dbf Susceptibility LS].[PipeAge10_30 Date], " +
                                                 "[Dbf Susceptibility LS].[PipeAge30 Date], [Dbf Susceptibility LS].CorrosiveFluid, [Dbf Susceptibility LS].Temp200, [Dbf Susceptibility LS].NoChemicalAdditions, [Dbf Susceptibility LS].[Susceptibility Eng Judgment Value], " +
                                                 "[Dbf Susceptibility LS].[Susceptibility Eng Judgment Basis] " +
                                                 "FROM [Dbf Susceptibility LS] INNER JOIN [Dbf Line Section] ON [Dbf Susceptibility LS].LineID = [Dbf Line Section].LineID " + "WHERE ((([Dbf Line Section].[Begin Point])<=[Dbf Susceptibility LS].[Begin Point]) AND (([Dbf Line Section].[End Point])>=[Dbf Susceptibility LS].[End Point])) AND (";
                //            "FROM [Dbf Susceptibility LS] INNER JOIN [Dbf Line Section] ON [Dbf Susceptibility LS].LineID = [Dbf Line Section].LineID " + "WHERE ((([Dbf Line Section].[Begin Point])<=[Dbf Susceptibility LS].[Begin Point]) AND (([Dbf Line Section].[End Point])>=[Dbf Susceptibility LS].[End Point]) ";
                bool firstcond = true;
                foreach (int indexChecked in clbSusc.CheckedIndices)
                {
                    if (_rrsusc.RrValues.GetItem(indexChecked, ref BPRRItem))
                    {
                        if ((string.Compare(BPRRItem.RiskRankingFieldNameLS, "Pipe") == 0) || (string.Compare(BPRRItem.RiskRankingFieldNameLS, "PipeAge") == 0) || (string.Compare(BPRRItem.RiskRankingFieldNameLS, "Leak_History") == 0))
                        {
                            if (!firstcond)
                            {
                                SQLStatement += string.Format(logicalcondition + "(([Dbf Susceptibility LS].[{0}])={1})", BPRRItem.RiskRankingFieldNameLS, BPRRItem.RiskRankingValue);
                            }
                            else
                            {
                                SQLStatement += string.Format("(([Dbf Susceptibility LS].[{0}])={1})", BPRRItem.RiskRankingFieldNameLS, BPRRItem.RiskRankingValue);
                            }
                            _selectdescription += string.Format("\n{0}", BPRRItem.RiskRankingDesc);
                        }
                        else
                        {
                            if (!firstcond)
                            {
                                SQLStatement += string.Format(logicalcondition + "(([Dbf Susceptibility LS].[{0}])<>0)", BPRRItem.RiskRankingFieldNameLS);
                            }
                            else
                            {
                                SQLStatement += string.Format("(([Dbf Susceptibility LS].[{0}])<>0)", BPRRItem.RiskRankingFieldNameLS);
                            }
                            _selectdescription += string.Format("\n{0}", BPRRItem.RiskRankingDesc);
                        }
                        count++;
                        firstcond = false;
                    }
                }
                if (count > 0)
                {
                    _sqlstatementsusc = SQLStatement += ")";
                }
                else
                {
                    _sqlstatementsusc = "";
                }
            } // if Susc count > 0



            // Build the Cons SQL Statement First
            if (clbCons.CheckedItems.Count > 0)
            {
                BPRiskRankingItem BPRRItem     = new BPRiskRankingItem("", 0, "", "");
                string            SQLStatement = "SELECT [Dbf Line Section].[Zone ID], [Dbf Consequence].LineID, [Dbf Line Section].[Line Section], [Dbf Line Section].MapFeatureID, [Dbf Line Section].[Begin Point], [Dbf Line Section].[End Point], [Dbf Consequence].[Collateral Damage], [Dbf Consequence].[Loss of Generation], " +
                                                 "[Dbf Consequence].[Outage Duration], [Dbf Consequence].Remarks, [Dbf Consequence].[Cost of Repair], [Dbf Consequence].[If Break], [Dbf Consequence].[If Leak], [Dbf Consequence].[Will Failure Affect Worker Safety], " +
                                                 "[Dbf Consequence].GUID, [Dbf Consequence].SafetyRelated, [Dbf Consequence].Radiological, [Dbf Consequence].EPA, [Dbf Consequence].LCO, [Dbf Consequence].Licensing, [Dbf Consequence].Repair1Million, " +
                                                 "[Dbf Consequence].Leak_Consequences, [Dbf Consequence].Break_Consequences, [Dbf Consequence].Occlusion_Consequences, [Dbf Consequence].Failure_Worker_Safety, [Dbf Consequence].Failure_Radioactive_Ground_Cont, " +
                                                 "[Dbf Consequence].[Failure_Non-Radioactive_Cont], [Dbf Consequence].Failure_Airborne_Cont, [Dbf Consequence].Failure_Loss_Generation, [Dbf Consequence].Failure_Operator_Work_Around, " +
                                                 "[Dbf Consequence].Failure_Collateral_Damage, [Dbf Consequence].Failure_Affect_Nuclear_Safety, [Dbf Consequence].[Impact Assesment], [Dbf Consequence].[Corrosion Risk], [Dbf Consequence].[Pipe Break], " +
                                                 "[Dbf Consequence].[Break Origin], [Dbf Consequence].[Break Status], [Dbf Consequence].[Cause of Break], [Dbf Consequence].[Date Break was Reported], [Dbf Consequence].[Leaks from Similar Pipes in Area], " +
                                                 "[Dbf Consequence].[Suspected Degradation], [Dbf Consequence].[Tubercules Height 10 Dia], [Dbf Consequence].[Risk Adjusted Weight (PRA)], [Dbf Consequence].Line_Service_Unit, [Dbf Consequence].FailureHistory, " +
                                                 "[Dbf Consequence].FlowLossOcclusion, [Dbf Consequence].LeakDetectionSystem, [Dbf Consequence].LeakMadeUp, [Dbf Consequence].NRC, [Dbf Consequence].UnderBldg2, [Dbf Consequence].tritium, [Dbf Consequence].RadWaste, " +
                                                 "[Dbf Consequence].[Consequence Engineering Judgement], [Dbf Consequence].NSIAC, [Dbf Consequence].DEQ, [Dbf Consequence].[Consequence Eng Judgment Value], [Dbf Consequence].[Consequence Eng Judgment Basis] " +
                                                 "FROM [Dbf Consequence] INNER JOIN [Dbf Line Section] ON [Dbf Consequence].LineID = [Dbf Line Section].LineID " +
                                                 "WHERE ((([Dbf Line Section].[Begin Point])>=[Dbf Consequence].[Begin Point]) AND (([Dbf Line Section].[End Point])<=[Dbf Consequence].[End Point])) AND (";
                bool firstcond = true;
                foreach (int indexChecked in clbCons.CheckedIndices)
                {
                    if (_rrcons.RrValues.GetItem(indexChecked, ref BPRRItem))
                    {
                        if (string.Compare(BPRRItem.RiskRankingFieldNameLS, "LCO") == 0)
                        {
                            if (!firstcond)
                            {
                                SQLStatement += string.Format(logicalcondition + "(([Dbf Consequence].[{0}])={1})", BPRRItem.RiskRankingFieldNameLS, BPRRItem.RiskRankingValue);
                            }
                            else
                            {
                                SQLStatement += string.Format("(([Dbf Consequence].[{0}])={1})", BPRRItem.RiskRankingFieldNameLS, BPRRItem.RiskRankingValue);
                            }
                            _selectdescription += string.Format("\n{0}", BPRRItem.RiskRankingDesc);
                        }
                        else
                        {
                            if (!firstcond)
                            {
                                SQLStatement += string.Format(logicalcondition + "(([Dbf Consequence].[{0}])<>0)", BPRRItem.RiskRankingFieldNameLS);
                            }
                            else
                            {
                                SQLStatement += string.Format("(([Dbf Consequence].[{0}])<>0)", BPRRItem.RiskRankingFieldNameLS);
                            }
                            _selectdescription += string.Format("\n{0}", BPRRItem.RiskRankingDesc);
                        }
                        count++;
                        firstcond = false;
                    }
                }
                if (count > 0)
                {
                    _sqlstatementcons = SQLStatement += ")";
                }
                else
                {
                    _sqlstatementcons = "";
                }
            } // if Susc count > 0

            if (count > 1)
            {
                _selectdescription += string.Format("\n\nLogical condition: '{0}'", logicalcondition);
            }

            return(count > 0);
        }
        //-----------------------------------------------------------------------------------
        // Load the Risk Ranking Values
        //-----------------------------------------------------------------------------------
        private void LoadRiskRanking()
        {
            // Clear Totals
            _suscrisktotal = 0;
            _consrisktotal = 0;
            //........................................
            // Load Susceptibility
            lvSusc.Columns.Clear();
            lvSusc.Columns.Add("Risk Ranking Factor");
            lvSusc.Columns[0].Width = 315;
            lvSusc.Columns.Add("Value", "Value");
            lvSusc.Columns[1].Width     = 50;
            lvSusc.Columns[1].TextAlign = HorizontalAlignment.Right;
            lvSusc.View    = View.Details;
            _suscrisktotal = 0;
            BPSusRiskRankingValues SusRR = new BPSusRiskRankingValues(_lineid, _beginpoint, _endpoint, _connectionstring);
            int               i;
            ListViewItem      lvi      = null;
            BPRiskRankingItem BBRRitem = new BPRiskRankingItem("", 0, "", "");

            if (SusRR != null)
            {
                for (i = 0; i <= (SusRR.RrValues.Count - 1); i++)
                {
                    lvi = new ListViewItem();
                    if (SusRR.RrValues.GetItem(i, ref BBRRitem))
                    {
                        lvi.Text = BBRRitem.RiskRankingDesc;
                        lvSusc.Items.Add(lvi);
                        lvi.SubItems.Add(BBRRitem.RiskRankingValue.ToString());
                        _suscrisktotal = _suscrisktotal + BBRRitem.RiskRankingValue;
                    }
                } // for
            }
            txtSuscTotal.Text = _suscrisktotal.ToString();

            //........................................
            // Load Consequences
            lvCons.Columns.Clear();
            lvCons.Columns.Add("Risk Ranking Factor");
            lvCons.Columns[0].Width = 315;
            lvCons.Columns.Add("Value", "Value");
            lvCons.Columns[1].Width     = 50;
            lvCons.Columns[1].TextAlign = HorizontalAlignment.Right;
            lvCons.View = View.Details;
            BPConRiskRankingValues ConRR = new BPConRiskRankingValues(_lineid, _beginpoint, _endpoint, _connectionstring);

            lvi            = null;
            _consrisktotal = 0;
            BPRiskRankingItem BPRRitem = new BPRiskRankingItem("", 0, "", "");

            if (ConRR != null)
            {
                for (i = 0; i <= (ConRR.RrValues.Count - 1); i++)
                {
                    lvi = new ListViewItem();
                    if (ConRR.RrValues.GetItem(i, ref BPRRitem))
                    {
                        lvi.Text = BPRRitem.RiskRankingDesc;
                        lvCons.Items.Add(lvi);
                        lvi.SubItems.Add(BPRRitem.RiskRankingValue.ToString());
                        _consrisktotal = _consrisktotal + BPRRitem.RiskRankingValue;
                    }
                } // for
            }
            txtConsTotal.Text = _consrisktotal.ToString();

            //........................................
            // Load Soil Susceptibility
            lvSoil.Columns.Clear();
            lvSoil.Columns.Add("Risk Ranking Factor");
            lvSoil.Columns[0].Width = 315;
            lvSoil.Columns.Add("Value", "Value");
            lvSoil.Columns[1].Width     = 50;
            lvSoil.Columns[1].TextAlign = HorizontalAlignment.Right;
            lvSoil.View = View.Details;
            double pH             = 0;
            double resistivity    = 0;
            double Cl             = 0;
            double redoxpotential = 0;
            string soiltype       = "";
            int    RiskPoints     = 0;
            string DataDesc       = "";

            _soilrisktotal = 0;
            if (GetSoilData(ref pH, ref resistivity, ref Cl, ref redoxpotential, ref soiltype))
            {
                if (GetSoilRiskPoints(pH.ToString(), "pH", ref DataDesc, ref RiskPoints))
                {
                    // pH
                    lvi      = new ListViewItem();
                    lvi.Text = "pH: " + DataDesc;
                    lvSoil.Items.Add(lvi);
                    lvi.SubItems.Add(RiskPoints.ToString());
                    _soilrisktotal = _soilrisktotal + RiskPoints;
                }
                // Cl
                if (GetSoilRiskPoints(Cl.ToString(), "Chloride Content", ref DataDesc, ref RiskPoints))
                {
                    lvi      = new ListViewItem();
                    lvi.Text = "Chloride Content: " + DataDesc;
                    lvSoil.Items.Add(lvi);
                    lvi.SubItems.Add(RiskPoints.ToString());
                    _soilrisktotal = _soilrisktotal + RiskPoints;
                }
                // Resistivity
                if (GetSoilRiskPoints(resistivity.ToString(), "Soil Resistivity", ref DataDesc, ref RiskPoints))
                {
                    lvi      = new ListViewItem();
                    lvi.Text = "Soil Resistivity: " + DataDesc;
                    lvSoil.Items.Add(lvi);
                    lvi.SubItems.Add(RiskPoints.ToString());
                    _soilrisktotal = _soilrisktotal + RiskPoints;
                }
                // Resistivity
                if (GetSoilRiskPoints(redoxpotential.ToString(), "Redox Potential", ref DataDesc, ref RiskPoints))
                {
                    lvi      = new ListViewItem();
                    lvi.Text = "Redox Potential: " + DataDesc;
                    lvSoil.Items.Add(lvi);
                    lvi.SubItems.Add(RiskPoints.ToString());
                    _soilrisktotal = _soilrisktotal + RiskPoints;
                }
                // Soil Type
                if (GetSoilDescriptionRiskPoints(soiltype, ref RiskPoints))
                {
                    lvi      = new ListViewItem();
                    lvi.Text = "Soil Type: " + DataDesc;
                    lvSoil.Items.Add(lvi);
                    lvi.SubItems.Add(RiskPoints.ToString());
                    _soilrisktotal = _soilrisktotal + RiskPoints;
                }
            }
            txtSoilTotal.Text = _soilrisktotal.ToString();
            // Calculate Totals and Display
            _suscsoilrisktotal    = _suscrisktotal + _soilrisktotal;
            txtSuscSoilTotal.Text = _suscsoilrisktotal.ToString();
            // Use BG color to display risk ranking level
            txtSuscSoilTotal.BackColor = lblSusRanking.BackColor;
            txtConsTotal.BackColor     = lblConRanking.BackColor;
        }