2012-04-25 88 views
-1

我有一個處理條形碼的項目。它基本上是一個庫存跟蹤程序,可以告訴我們在任何時候我們都有庫存。每個條形碼都有一個包含相關信息的文本文件。每個文件都包含以下信息行:如何從c中的多個文本文件中提取信息#

  1. 「辦公打印機」 < - 這是在物品描述
  2. 「1」 < - 0等於斷貨,1股等於
  3. 「無關信息「< - 任何其他信息沒有整理

使用的有,我需要通過項目描述第一搜索,然後通過這些再次搜索,看看他們是我大約200多個不同的文本文件n股票。理想情況下,它會顯示一個整數列出庫存號碼,但它也可以只顯示文本文件的名稱,如果這是最簡單的。這是我的代碼到目前爲止。 comboBox1有一個可供搜索的項目的下拉列表。 richTextbox1是我設置來顯示搜索結果。現在它只顯示一個「1」。

編輯
感謝VBRonPaulFan的突破。這顯示了基於選擇組合框的庫存數量。我要研究的唯一其他事情是讓它顯示庫存物品的數量,而不是全部列出。謝謝!

private void searchButton_Click(object sender, EventArgs e) 
    { 
     richTextBox1.Text = ""; 

     foreach (string fileName in Directory.GetFiles("C:\\ITRS_equipment_log\\", "*.txt")) 
     { 

      using (StreamReader sw = new StreamReader(fileName)) 
      { 
       string Description = sw.ReadLine(); 
       bool InStock = sw.ReadLine().Trim() == "1"; 

       if (Description.Contains(comboBox1.Text) && InStock == true) 
       { 
        richTextBox1.AppendText("Item '" + Description + "' is " + (InStock ? "in" : "not in") + " stock.\r\n"); 
       } 
      } 
     } 
    } 
+0

那麼你的問題到底是什麼?代碼看起來像可能會工作。 – R0MANARMY 2012-04-25 18:30:59

+2

這聽起來像你真的想要*數據庫*在這裏,而不是200文本文件。 – BrokenGlass 2012-04-25 18:31:01

+0

它似乎只從第一個文本文件中提取信息然後停止。我希望它從符合該標準的所有文本文件中提取。 – McAfeeJ 2012-04-25 18:32:03

回答

1

每次找到'匹配'時,您都會用更新後的值覆蓋richTextBox1中的值。它不僅僅是在第一個文件之後「停止」,它只是顯示了它在完成所有文件運行時設置的最後一個值...

對於如何顯示此內容並不清楚用戶...但一個豐富的文本框可能不是最好的方法。一個組合框可能會更好。這看起來基本上是你想要做的事情?

private void searchButton_Click(object sender, EventArgs e) 
{ 
    foreach (string fileName in Directory.GetFiles("C:\\ITRS_equipment_log\\", "*.txt")) 
    { 
     using (StreamReader sw = new StreamReader(fileName)) 
     { 
      string Description = sw.ReadLine(); 
      bool InStock = sw.ReadLine().Trim() == "1"; 

      if (Description.Contains(comboBox1.SelectedText)) 
      { 
       richTextBox1.AppendText("Item '" + Description + "' is " + (InStock ? "in" : "not in") + " stock.\r\n"); 
      } 
     } 
    } 
} 
+0

這絕對幫助了我。謝謝!出於某種原因,它顯示所有項目,無論它是否在組合框中選中,但這是對我所擁有的重大改進。 – McAfeeJ 2012-04-25 18:55:25

+0

我只使用了richTextbox來查看輸出結果。我將嘗試使用此代碼並調整它以在文本框中顯示一個與存儲的數量相對應的整數。 – McAfeeJ 2012-04-25 19:07:45

+0

如果很多產品標題是相似的,您可能需要將Description.Contains(...)與Description.ToUpper()== comboBox1.SelectedText.ToUpper()或類似的東西進行比較,並且只匹配確切的結果... – 2012-04-25 19:13:35