2012-04-25 4 views
-1

J'ai un projet qui traite des codes à barres. Il s'agit essentiellement d'un programme de suivi des stocks qui nous indique ce que nous avons en stock à un moment donné. Chaque code à barres contient un fichier texte contenant des informations pertinentes. Chaque fichier contient les lignes d'information suivantes:Comment extraire des informations de plusieurs fichiers texte dans C#

  1. "Bureau imprimante" < - Voici la description de l'article
  2. "1" <-0 égale en rupture de stock, 1 équivaut en stock
  3. « informations non pertinentes "< - toute information supplémentaire non utilisé dans le tri

Il y a environ 200+ différents fichiers texte que je dois rechercher d'abord à travers la description de l'article et la recherche puis de nouveau à travers ceux pour voir si elles sont i n stock. Idéalement, il afficherait alors un nombre entier énumérant le nombre en stock, mais il pourrait également simplement afficher les noms des fichiers de texte si cela serait le plus facile. Voici mon code jusqu'à présent. comboBox1 possède une liste déroulante d'éléments possibles à rechercher. richTextbox1 est ce que j'ai configuré pour afficher les résultats de la recherche. En ce moment, il ne montre qu'un "1".

EDIT
Merci à VBRonPaulFan pour la percée. Cela montre combien d'articles sont en stock en fonction de la sélection de la comboBox. La seule autre chose que je vais faire est d'afficher le nombre d'articles en stock plutôt que de les énumérer tous. Merci!

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

Alors, quelle est votre question exactement? Le code semble fonctionner probablement. – R0MANARMY

+2

On dirait que vous voulez vraiment une * base de données * ici et pas 200 fichiers texte. – BrokenGlass

+0

Il semble seulement tirer des informations du premier fichier texte puis s'arrête. Je veux qu'il tire de tous les fichiers texte qui répondent à ces critères. – McAfeeJ

Répondre

1

chaque fois que vous trouverez un « match », vous écrasez la valeur RichTextBox1 avec la valeur actualisée. il ne s'arrête pas juste après le premier fichier, il affiche simplement la dernière valeur à laquelle il est défini quand il a fini de parcourir tous les fichiers ...

Ce n'est pas très clair sur la façon dont vous voulez afficher ceci l'utilisateur ... mais une boîte de texte riche n'est probablement pas le meilleur moyen. un combobox serait probablement mieux. Cela ressemble fondamentalement à ce que vous voulez faire si?

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

Cela m'a vraiment aidé. Je vous remercie! Pour une raison quelconque, il montre tous les éléments, peu importe si elle est sélectionnée dans la combobox, mais c'est une grande amélioration par rapport à ce que j'avais. – McAfeeJ

+0

J'ai seulement utilisé un richTextbox pour voir ce que la sortie serait. Je vais essayer de prendre ce code et le modifier pour afficher un nombre entier dans une zone de texte correspondant au nombre d'articles en stock. – McAfeeJ

+0

Si un grand nombre de titres de produits sont similaires, vous pourriez avoir besoin de changer la comparaison de Description.Contains (...) peut-être Description.ToUpper() == comboBox1.SelectedText.ToUpper() ou quelque chose de similaire et ne correspondent qu'aux résultats exacts ... –

Questions connexes