Shan Coralde
Shan Coralde

Reputation: 224

How to Validate a Column from a Text File?

Is it possible to validate a column based from a textfile?

Here is my DataGridView:


enter image description here

What I want to do is Validate the KPI column from a .txt file

enter image description here


As we can see, the notepad contains four items.

  1. Revenue
  2. Sales Volume
  3. Gross Con
  4. Brand Con

If a user inputs anything other than this 4, it would display an error. Saying "_____________ is not Valid".

What I am currently using is this:

  public static void Validate_KPI(DataGridView dataGridView)
    {
        FileStream fs = new FileStream(@"C:\brandon\InvalidKPI.txt", FileMode.OpenOrCreate, FileAccess.Write);
        StreamWriter sw = new StreamWriter(fs);

        sw.BaseStream.Seek(0, SeekOrigin.End);
        StringBuilder sb = new StringBuilder();

        //decimal num;

        if (dataGridView.ColumnCount > 2)
        {
            sw.WriteLine("----------------------------");
            sw.WriteLine("");

            for (int i = 0; i < dataGridView.RowCount; i++)
            {
                //MessageBox.Show(dataGridView.Rows[i].Cells["KPI"].Value.ToString()); 
                if (dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("Total") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("Revenue") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("Sales Volume") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("Gross Con") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("Brand Con") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("Employees") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("Payroll and Benefits") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("# of Absent") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("MANCOM") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("Sales") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("Marketing") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("Finance") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("Logistics") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("Manufacturing") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("HR") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("IT") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("Resignation") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("Turnover Rate") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("Sell in volumes") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("Sell out volumes") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("Weekly recognized sales") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("Average selling price per HL") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("Discounts per HL") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("FTH per HL") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("Gross con per HL") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("Advertising expense") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("Promotion expense") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("Brand con per HL") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("Variable manufacturing cost per HL") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("Average selling price per HL") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("Brand con") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("Gross con") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("Discounts") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("FTH") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("Fixed Costs") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("Operating Income") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("EBITDA") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("Brewing Utilization") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("Plant Efficiency") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("Packaging Utilitization") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("Product Quality Index (PQI)") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("Cost of Non Conformance (CoNC) (in USD)") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("Number of complaints from Trade") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("# of dealers") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("# of additions") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("# of resignations") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("% of active") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("Inventory Days level") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("Yield") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("# of outlets") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("# of active") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("Average yield") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("# of sponsored/promo outlets") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("yield of sponsored/promo outlets)") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("# of draught outlets") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("yield of draught outlets") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("# of dealers") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("% of active Draught Outlets") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains(" Yield(Total)") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("yield of sponsored/promo outlets") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("Wholesalers days level (where applicable)") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("# of wholesalers") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("Total # of Sponsored") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("wholesaler total") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("Total") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("Past Due") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("Within Terms") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("Actual") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("Sell in volumes") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("Sell out volumes") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("Brand") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("Adjuncts") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("Hops - Asia") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("Hops - Europe") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("Malt - Asia") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("Malt - Local") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("Malt - Europe") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("Finished Goods") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("Slow Moving") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("Obsoletes") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("Container Rate of Return") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("Container") ||
                    dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains("Adjuncts"))
                {
                    //sb.AppendLine(dataGridView.Rows[i].Cells["KPI"].Value.ToString() + " is Valid.");
                }

                else if (dataGridView.Rows[i].Cells["KPI"].Value.ToString() == null || dataGridView.Rows[i].Cells["KPI"].Value.ToString() == "" || dataGridView.Rows[i].Cells["KPI"].Value.ToString() == "KPI" || dataGridView.Rows[i].Cells["KPI"].Value.ToString() == "Category")
                {

                }
                else
                {
                    //MessageBox.Show("Row not decimal:" + " [ " + dataGridView[h, i].Value.ToString() + "] in column "  + dataGridView.Columns[h].Name);
                    sb.AppendLine(dataGridView.Rows[i].Cells["KPI"].Value.ToString() + " is **NOT** Valid.");
                }
            }
        }
        if (sb.ToString() == null || sb.ToString() == "" || sb.Length < 1)
        {
            sw.WriteLine("No Errors!");
            sw.WriteLine("");
            sw.WriteLine("----------------------------");
            MessageBox.Show("No errors!");
            Process.Start(@"C:\brandon\InvalidKPI.txt");
        }
        else if (sb.ToString() != null || sb.ToString() != "")
        {
            sw.WriteLine(sb.ToString());
            sw.WriteLine("----------------------------");
            MessageBox.Show(sb.ToString());
            Process.Start(@"C:\brandon\InvalidKPI.txt");
        }
        sw.Flush();
        sw.Close();
    }

I want to validate a column from a .txt file.

Upvotes: 0

Views: 54

Answers (2)

Shan Coralde
Shan Coralde

Reputation: 224

Managed to do it by using this.

    List<string> fields = new List<string>();

        var lines = File.ReadAllLines(@"\\SMITSHOME01\Home_Folder_1$\vhernandez\My Documents\Visual Studio 2013\validate.txt");
        for (int i = 0; i < lines.Length; i++)
        {
            fields.Add(lines[i]);
        }

Upvotes: 0

Redzix
Redzix

Reputation: 188

You can use enum which contains all string keys and then iterate throught each row and each enum element.

You can iterate throught enum using this:

foreach (DatagridViewRow row in dataGridView.Rows)
{
    foreach (Code code in Enum.GetValues(typeof(Code)))
    {            
      if(!row.Cells["KPI"].Value.ToString().Contains(code)) 
          sb.AppendLine(dataGridView.Rows[i].Cells["KPI"].Value.ToString() + " is **NOT** Valid.");
    }
}

You can also use foreach (var suit in ((Suit[])Enum.GetValues(typeof(Suit))).Distinct())) if you have duplicates.

Upvotes: 1

Related Questions