diff --git a/Artikelverwaltung/Artikel_Verwaltung.cs b/Artikelverwaltung/Artikel_Verwaltung.cs index 92e4c2c..d269f16 100644 --- a/Artikelverwaltung/Artikel_Verwaltung.cs +++ b/Artikelverwaltung/Artikel_Verwaltung.cs @@ -3,13 +3,14 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using System.Windows.Forms; namespace Artikelverwaltung { internal class Artikel_Verwaltung { - Database database; - public List Artikelliste = new List(); + Database database; + public List Artikelliste = new List(); public Artikel_Verwaltung() { @@ -43,6 +44,44 @@ namespace Artikelverwaltung { Artikelliste = database.ArtikelAbrufen(); } + public string ArtikelMenge() + { + return database.ArtikelZählen().ToString(); + } + + // Errechnet die Seitenanzahl + public void ComboBoxZähler(ComboBox combo) + { + int endPosition = 30; + bool modo = true; + int artikelInsgesammt = database.ArtikelZählen(); + int teiler = artikelInsgesammt / endPosition; + + while (modo) + { + + for (int i = 1; i <= teiler +1; i++) + { + combo.Items.Add(i); + modo = false; + } + + } + + } + + // Gibt eine Liste mit 30 Artikeln aus der Datenbank zurück + public List ListViewPage(int index) + { + List list = new List(); + int anzahlDerGezeigtenArtikel = 40; + int startPosition = (index * anzahlDerGezeigtenArtikel) - anzahlDerGezeigtenArtikel; + int endPosition = anzahlDerGezeigtenArtikel; + + list = database.BestimmteAnzahlanArtikeln(startPosition, endPosition); + return list; + + } } } diff --git a/Artikelverwaltung/Artikelverwaltung.Designer.cs b/Artikelverwaltung/Artikelverwaltung.Designer.cs index 1195b8e..369f5f2 100644 --- a/Artikelverwaltung/Artikelverwaltung.Designer.cs +++ b/Artikelverwaltung/Artikelverwaltung.Designer.cs @@ -37,6 +37,11 @@ this.logout = new System.Windows.Forms.Button(); this.label2 = new System.Windows.Forms.Label(); this.searchbox = new System.Windows.Forms.TextBox(); + this.label3 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.label5 = new System.Windows.Forms.Label(); + this.comboBox1 = new System.Windows.Forms.ComboBox(); + this.button1 = new System.Windows.Forms.Button(); this.SuspendLayout(); // // label1 @@ -100,7 +105,7 @@ this.listView1.HideSelection = false; this.listView1.Location = new System.Drawing.Point(24, 49); this.listView1.Name = "listView1"; - this.listView1.Size = new System.Drawing.Size(754, 821); + this.listView1.Size = new System.Drawing.Size(754, 801); this.listView1.TabIndex = 6; this.listView1.UseCompatibleStateImageBehavior = false; // @@ -133,12 +138,68 @@ this.searchbox.Size = new System.Drawing.Size(212, 26); this.searchbox.TabIndex = 9; // + // label3 + // + this.label3.AutoSize = true; + this.label3.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label3.Location = new System.Drawing.Point(727, 859); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(51, 20); + this.label3.TabIndex = 10; + this.label3.Text = "label3"; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label4.Location = new System.Drawing.Point(620, 859); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(101, 20); + this.label4.TabIndex = 11; + this.label4.Text = "Insgesammt:"; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label5.Location = new System.Drawing.Point(20, 859); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(54, 20); + this.label5.TabIndex = 12; + this.label5.Text = "Seite: "; + // + // comboBox1 + // + this.comboBox1.FlatStyle = System.Windows.Forms.FlatStyle.System; + this.comboBox1.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.comboBox1.FormattingEnabled = true; + this.comboBox1.Location = new System.Drawing.Point(70, 851); + this.comboBox1.Name = "comboBox1"; + this.comboBox1.Size = new System.Drawing.Size(35, 28); + this.comboBox1.TabIndex = 13; + // + // button1 + // + this.button1.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.button1.Location = new System.Drawing.Point(784, 340); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(174, 37); + this.button1.TabIndex = 14; + this.button1.Text = "Beenden"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // // Artikelverwaltung // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.BackColor = System.Drawing.SystemColors.GradientInactiveCaption; this.ClientSize = new System.Drawing.Size(982, 882); + this.Controls.Add(this.button1); + this.Controls.Add(this.comboBox1); + this.Controls.Add(this.label5); + this.Controls.Add(this.label4); + this.Controls.Add(this.label3); this.Controls.Add(this.searchbox); this.Controls.Add(this.label2); this.Controls.Add(this.logout); @@ -166,5 +227,10 @@ private System.Windows.Forms.Button logout; private System.Windows.Forms.Label label2; private System.Windows.Forms.TextBox searchbox; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.ComboBox comboBox1; + private System.Windows.Forms.Button button1; } } \ No newline at end of file diff --git a/Artikelverwaltung/Artikelverwaltung.cs b/Artikelverwaltung/Artikelverwaltung.cs index 47189af..52669a5 100644 --- a/Artikelverwaltung/Artikelverwaltung.cs +++ b/Artikelverwaltung/Artikelverwaltung.cs @@ -17,22 +17,18 @@ namespace Artikelverwaltung { InitializeComponent(); artikelverwaltung = new Artikel_Verwaltung(); - - // Spaltern für die Listview erstellen und Listview generieren - listView1.Columns.Add("Artikel Nr.", 100); - listView1.Columns.Add("Artikelbeschreibung", 220, HorizontalAlignment.Center); - listView1.Columns.Add("Modellname", 150, HorizontalAlignment.Center); - listView1.Columns.Add("Artikelgruppe", 150, HorizontalAlignment.Center); - listView1.Columns.Add("Flag", 110); - listView1.View = View.Details; - listView1.MouseDoubleClick += new MouseEventHandler(listView1_MouseDoubleClick); + ListeViewStartSetup(); ListeAktuallisieren(); searchbox.TextChanged += new EventHandler(searchBox_TextChanged); + label3.Text = artikelverwaltung.ArtikelMenge(); // Artikel Insgesammt in der Datenbank + artikelverwaltung.ComboBoxZähler(comboBox1); // Füllt die Combobox + comboBox1.SelectedIndexChanged += new EventHandler(ComboboxAuswahl); + comboBox1.SelectedIndex = 0; } private void anlegen_Click(object sender, EventArgs e) { Artikel_Anlegen form = new Artikel_Anlegen(); - form.ShowDialog(); + form.Show(); ListeAktuallisieren(); } @@ -47,6 +43,7 @@ namespace Artikelverwaltung int id = Convert.ToInt32(listView1.Items[listView1.FocusedItem.Index].Text); artikelverwaltung.ArtikelLoeschen(id); ListeAktuallisieren(); + label3.Text = artikelverwaltung.ArtikelMenge(); } catch { @@ -62,7 +59,7 @@ namespace Artikelverwaltung foreach (Artikel artikel in artikelverwaltung.Artikelliste) { - //Objekt muss in Array umgewandelt werden + //Objekt muss in Array umgewandelt werden, damit man es der ListView übergeben kann string[] arr = { artikel.Artikelnummer.ToString(), artikel.Artikelbeschreibung.ToString(), artikel.Modellname.ToString(), artikel.Artikelgruppe.ToString(), artikel.AktivFlag.ToString() }; listView1.Items.Add(new ListViewItem(arr)); } @@ -82,9 +79,10 @@ namespace Artikelverwaltung form.ShowDialog(); } + // Doppelklick auf zeile muss behandelt werden private void listView1_MouseDoubleClick(object sender, MouseEventArgs e) { - ListViewHitTestInfo hit = listView1.HitTest(e.Location); + ListViewHitTestInfo hit = listView1.HitTest(e.Location); // Position der makierten Zeile if (hit.Item != null) @@ -94,6 +92,8 @@ namespace Artikelverwaltung ListeAktuallisieren(); } } + + //Suchfunktion mit Autosuche private void searchBox_TextChanged(object sender, EventArgs e) { ListeAktuallisieren(); @@ -101,9 +101,41 @@ namespace Artikelverwaltung { return; } - var list = listView1.Items.Cast().Where(x => x.SubItems.Cast().Any(y => y.Text.ToLower().Contains(searchbox.Text.ToLower()))).ToArray(); + var list = listView1.Items.Cast().Where(x => x.SubItems.Cast().Any(y => y.Text.ToLower().Contains(searchbox.Text.ToLower()))).ToArray(); // Ähhhm? listView1.Items.Clear(); listView1.Items.AddRange(list); } + + private void ComboboxAuswahl(object sender, EventArgs e) + { + listView1.Items.Clear(); + ComboBox comobox = (ComboBox)sender; + int index = comobox.SelectedIndex +1; + + List list = artikelverwaltung.ListViewPage(index); + + foreach (Artikel artikel in list) + { + //Objekt muss in Array umgewandelt werden, damit man es der ListView übergeben kann + string[] arr = { artikel.Artikelnummer.ToString(), artikel.Artikelbeschreibung.ToString(), artikel.Modellname.ToString(), artikel.Artikelgruppe.ToString(), artikel.AktivFlag.ToString() }; + listView1.Items.Add(new ListViewItem(arr)); + } + } + private void ListeViewStartSetup() + { + // Spaltern für die Listview erstellen und Listview generieren + listView1.Columns.Add("Artikel Nr.", 100); + listView1.Columns.Add("Artikelbeschreibung", 220, HorizontalAlignment.Center); + listView1.Columns.Add("Modellname", 150, HorizontalAlignment.Center); + listView1.Columns.Add("Artikelgruppe", 150, HorizontalAlignment.Center); + listView1.Columns.Add("Flag", 110); + listView1.View = View.Details; + listView1.MouseDoubleClick += new MouseEventHandler(listView1_MouseDoubleClick); + } + + private void button1_Click(object sender, EventArgs e) + { + this.Close(); + } } } diff --git a/Artikelverwaltung/Database.cs b/Artikelverwaltung/Database.cs index f73f771..1877b64 100644 --- a/Artikelverwaltung/Database.cs +++ b/Artikelverwaltung/Database.cs @@ -2,9 +2,11 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Linq.Expressions; using System.Security.Cryptography; using System.Text; using System.Threading.Tasks; +using System.Windows.Forms; namespace Artikelverwaltung { @@ -24,6 +26,8 @@ namespace Artikelverwaltung // Benutzer abgleich direkt aus der Datenbank, ohne die Daten im Programm zu haben. public bool loginAbgleich(string bn, string pw) { + try + { connection.Open(); cmd.Connection = connection; cmd.CommandText = $"select count(*) as result from mitarbeiter where benutzername = '{bn}' and passwort = '{pw}'"; @@ -37,59 +41,149 @@ namespace Artikelverwaltung } } connection.Close(); + } + catch + { + MessageBox.Show("SQL Error"); + + } return false; - - + + } public void BenutzerAnlegen(MitarbeiterAccount acc) { - connection.Open(); - cmd.Connection = connection; - cmd.CommandText = $"insert into mitarbeiter(benutzername, passwort) values('{acc.benutzername}', '{acc.passwort}')"; - cmd.ExecuteNonQuery(); - connection.Close(); + try + { + connection.Open(); + cmd.Connection = connection; + cmd.CommandText = $"insert into mitarbeiter(benutzername, passwort) values('{acc.benutzername}', '{acc.passwort}')"; + cmd.ExecuteNonQuery(); + connection.Close(); + } + catch + { + MessageBox.Show("SQL Error"); + } + } public void ArtikelAnlegen(Artikel artikel) { - connection.Open(); - cmd.Connection= connection; - cmd.CommandText = $"insert into artikel(artikelbeschreibung, modellname,artikelgruppe,aktivFlag) values('{artikel.Artikelbeschreibung}','{artikel.Modellname}','{artikel.Artikelgruppe}','{Convert.ToInt16(artikel.AktivFlag)}')"; - cmd.ExecuteNonQuery(); - connection.Close(); + try + { + connection.Open(); + cmd.Connection = connection; + cmd.CommandText = $"insert into artikel(artikelbeschreibung, modellname,artikelgruppe,aktivFlag) values('{artikel.Artikelbeschreibung}','{artikel.Modellname}','{artikel.Artikelgruppe}','{Convert.ToInt16(artikel.AktivFlag)}')"; + cmd.ExecuteNonQuery(); + connection.Close(); + } + + catch + { + MessageBox.Show("SQL Error"); + } } public void ArtikelLoeschen(int id) { - connection.Open(); - cmd.Connection = connection; - cmd.CommandText = $"delete from artikel where artikelnummer = {id}"; - cmd.ExecuteNonQuery(); - connection.Close(); + try + { + connection.Open(); + cmd.Connection = connection; + cmd.CommandText = $"delete from artikel where artikelnummer = {id}"; + cmd.ExecuteNonQuery(); + connection.Close(); + } + catch + { + MessageBox.Show("SQL Error"); + } + } public void ArtikelAendern(Artikel artikel, int id) { - connection.Open(); - cmd.Connection = connection; - cmd.CommandText = $"update artikel set artikelbeschreibung = '{artikel.Artikelbeschreibung}', modellname = '{artikel.Modellname}', artikelgruppe = '{artikel.Artikelgruppe}', aktivFlag = '{Convert.ToInt16(artikel.AktivFlag)}' where artikelnummer = {id}"; - cmd.ExecuteNonQuery(); - connection.Close(); + try + { + connection.Open(); + cmd.Connection = connection; + cmd.CommandText = $"update artikel set artikelbeschreibung = '{artikel.Artikelbeschreibung}', modellname = '{artikel.Modellname}', artikelgruppe = '{artikel.Artikelgruppe}', aktivFlag = '{Convert.ToInt16(artikel.AktivFlag)}' where artikelnummer = {id}"; + cmd.ExecuteNonQuery(); + connection.Close(); + } + catch + { + MessageBox.Show("SQL Error"); + + } + } public List ArtikelAbrufen() { List list = new List(); + + try + { + connection.Open(); + cmd.Connection = connection; + cmd.CommandText = $"select * from artikel"; + MySqlDataReader reader = cmd.ExecuteReader(); + while (reader.Read()) + { + Artikel artikel = new Artikel(Convert.ToUInt32(reader["artikelnummer"]), reader["artikelbeschreibung"].ToString(), reader["modellname"].ToString(), reader["artikelgruppe"].ToString(), Convert.ToBoolean(reader["aktivFlag"])); + list.Add(artikel); + } + connection.Close(); + return list; + } + catch + { + MessageBox.Show("SQL Error"); + return null; + } + + } + // Gibt anzahl an Artikel zurück + public int ArtikelZählen() + { + int result = 0; connection.Open(); cmd.Connection = connection; - cmd.CommandText = $"select * from artikel"; + cmd.CommandText = $"select count(*) as result from artikel"; MySqlDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { - Artikel artikel = new Artikel(Convert.ToUInt32(reader["artikelnummer"]), reader["artikelbeschreibung"].ToString(), reader["modellname"].ToString(),reader["artikelgruppe"].ToString(), Convert.ToBoolean(reader["aktivFlag"])); - list.Add(artikel); + result = Convert.ToInt32(reader["result"]); + } connection.Close(); - return list; + return result; } + public List BestimmteAnzahlanArtikeln(int start, int end) + { + List list = new List(); + try + { + connection.Open(); + cmd.Connection = connection; + cmd.CommandText = $"select * from artikel limit {start},{end}"; + MySqlDataReader reader = cmd.ExecuteReader(); + while (reader.Read()) + { + Artikel artikel = new Artikel(Convert.ToUInt32(reader["artikelnummer"]), reader["artikelbeschreibung"].ToString(), reader["modellname"].ToString(), reader["artikelgruppe"].ToString(), Convert.ToBoolean(reader["aktivFlag"])); + list.Add(artikel); + } + connection.Close(); + return list; + } + catch(Exception ex) + { + //"SQL Error" + MessageBox.Show(ex.ToString()); + connection.Close(); + return null; + } + } } }