Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von Attentus
Thema: Warenkorb Produktecounter
Am im Forum: Grundlagen von C#

Teilweise gelesen, ist als Anfänger noch etwas Neuland, daher die dummen Fragen unter C# Grundlagen! Aber das hilft mir auf jeden Fall weiter, Danke.

Thema: Warenkorb Produktecounter
Am im Forum: Grundlagen von C#

@FZelle

Danke für den Hinweis, macht Sinn! Hast Du vielleicht ein kleines Beispiel?

Thema: Warenkorb Produktecounter
Am im Forum: Grundlagen von C#

Hallo

Ich suche eine elegante Lösung um gescannte Produkte in einem Warenkorb Produktespezifisch zu zählen. Derzeit wird mir pro Scann ein separater Eintrag erstellt, auch wenn das gleiche Produkt mehrfach vorkommt. Das soll sich änder, indem mehrfach vorkommende Produkte nur einmal erscheinen aber entsprechend hochgezählt werden.

Der Warenkorb ist eine ListView / Menge / X / Produkt / Preis / etc. Die Preisberechnung ist hier nicht zu berücksichtigen.
Der Scann vergleicht den Barcode mit der Datenbank / Menge / Artikel_Name / Artikel_Nummer / Barcode / etc. und fügt das Produkt bei einem Treffer in dem Warenkorb ein.

Ich habe das wie unten ersichtlich mit einem Timer versucht um den Artikelnamen jederzeit vergleichen zu können. Das Ganze funktioniert aber nur mit einem Produkt und will nicht mehr, wenn mehrere Produkte gescannt werden. Oder es Zählt über alle Produkt gleichermassen. Das ganze muss wahrscheinlich über zwei ineinendergelegte Schlaufen realisiert werden, nur stehe ich da gerade etwas auf dem Schlauch. Vielleicht hat das schon mal jemand gemacht und kennt eine bessere Lösung? Vielen Dank!


int C = 1;
string ItemName;
private void axOPOSScanner1_DataEvent(object sender, AxOposScanner_CCO._IOPOSScannerEvents_DataEventEvent e)
{
       TimerScanner.Start();

       SqlConnection cn = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Path\Artikel.mdf;Integrated Security=True");

       try
       {
            cn.Open();

            if (axOPOSScanner1.ScanDataLabel.Length ≥ 13) //EAN 13
            {
                 string SearchQuerry = "SELECT * FROM Artikel WHERE Barcode = '" + axOPOSScanner1.ScanDataLabel.Substring(0, 13);
                 SqlCommand com = new SqlCommand(SearchQuerry, cn);
                 SqlDataReader sqlReader = com.ExecuteReader();                   
                    
                 while (sqlReader.Read())
                 {
                      ListViewItem item = new ListViewItem("" + C ); //produktcount);
                      item.SubItems.Add("X");
                      item.SubItems.Add(sqlReader.GetValue(1).ToString()); //Artikel
                      item.SubItems.Add(sqlReader.GetValue(5).ToString());
                      item.SubItems.Add(sqlReader.GetValue(3).ToString()); //Barcode
                      item.SubItems.Add(sqlReader.GetValue(4).ToString());     
                      float num1 = float.Parse(string.Format("{0:0.00}", sqlReader.GetValue(4).ToString()));
                      float num2 = float.Parse(string.Format("{0:0.00}", sqlReader.GetValue(5).ToString()));
                      item.SubItems.Add("" + num2 / (100 + num1) * num1);                        
                      //listWarenkorbMain.Items.Add(item); 

                      if (C == 1)
                      {
                           listWarenkorbMain.Items.Add(item);
                      }
                       
                      if (ItemName != sqlReader.GetValue(1).ToString())
                      {
                          C = C + 1;
                      }                                        
                 }
                 sqlReader.Close();
                 com.Dispose();
                 cn.Close();                    
            }
      }
      catch (SqlException ex)
      {
          MessageBox.Show(ex.Message);                        
      }
}

private void TimerScanner_Tick(object sender, EventArgs e)
{
       for (int i = 0; i ≤ listWarenkorbMain.Items.Count - 1; i++)
       {
             ItemName = listWarenkorbMain.Items[i].SubItems[2].Text;           
       }            
       TimerScanner.Stop();
}