Autor |
Beitrag |
nav93
Beiträge: 41
|
Verfasst: Fr 18.11.16 23:26
Hallo Leute,
ich habe ein Problem beim Programmieren einer c# anwendung. unzwar muss ich ein kleines Programm für ein Auktionshaus schreiben. das problem das ich habe ist, ein Datum zu vergleichen . Ich möchte Schmuckstücke in einer Datenbank anlegen und diese dann Differenzieren nach der Dauer im Auktionshaus
zb. ein schmuckstück wird abgebeben ( DateTime.today )
nun sollen in der Tabelle alle Schmuckstücke die unter 90 Tage im Auktionshaus sind grün dargestellt werden, alle die über 90 Tage im Auktionshaus sind rot.
ich wäre euch sehr sehr dankbar, wenn ihr mir helfen würdet .
Vielen Lieben Dank & ein schönes Wochenende
|
|
Csharp-programmierer
Beiträge: 696
Erhaltene Danke: 10
Windows 8.1
C# (VS 2013)
|
Verfasst: Fr 18.11.16 23:59
Die TimeSpan Klasse müsste dich weiterbringen.
_________________ "Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
|
|
nav93
Beiträge: 41
|
Verfasst: Sa 19.11.16 01:29
Hallo ,
Danke für die schnelle Antwort . Leider find ich dazu nicht viel :/ gibt es eine Lösung bzw ein leichten Weg dahin ? Also wie ich das leichter bzw einfacher lösen kann
|
|
Csharp-programmierer
Beiträge: 696
Erhaltene Danke: 10
Windows 8.1
C# (VS 2013)
|
Verfasst: Sa 19.11.16 01:34
TimeSpan-Klasse
Ließ dir das mal durch. Damit kann man die einzelnen Tage in deinem Fall berechnen. Guck dir mal die Beispiele unten an
Moderiert von Th69: URL-Titel hinzugefügt.
_________________ "Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
|
|
Ralf Jansen
Beiträge: 4705
Erhaltene Danke: 991
VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
|
Verfasst: Mo 21.11.16 12:09
C#-Quelltext 1: 2: 3: 4:
| if (DateTime.Today.AddDays(-90) > meinLiebesSchmuckstueck.AbgabeDatum) else |
Je nach benutzten Grid kann das Grid mit speziellen Formatierregeln das anders machen. Das ist aber Controlspezifisch und wir wissen nicht was du benutzt.
|
|
nav93
Beiträge: 41
|
Verfasst: Do 01.12.16 00:37
Hallo leute ,
ich hab hier mal mein code jetzt hoch geladen . alles funktioniert soweit .. bloß das mit den farben nicht . ich hab das jetzt mal so hochgeladen und hoffe das mir jemand helfen kann . Das problem ist das , alles was über 90 tage seit dem Abgabedatum in der Datenbank ist grün angezeigt werden soll im datagridview und alles was darunter liegt rot.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161:
| private void btFarbe_Click(object sender, EventArgs e) { dataGridView1.ClearSelection();
SqlDataAdapter SDA = new SqlDataAdapter ("Select Datum FROM Schmuck", CON); foreach (DataGridViewRow row in dataGridView1.Rows) { var now = DateTime.Now; var verkaufDate = DateTime.Parse(row.Cells[7].Value.ToString()); var ninetydaysBefore = verkaufDate.AddDays(-90);
if (now < verkaufDate) { row.DefaultCellStyle.BackColor = Color.Red; } else if (now > verkaufDate) { row.DefaultCellStyle.BackColor = Color.Blue; } } }
das ist mein code quasi für die farben aber leider geht das nicht richtig.
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Data.SqlClient;
namespace Pfandleihhaus { public partial class Schmuckverwaltung : MaterialSkin.Controls.MaterialForm {
SqlConnection CON = new SqlConnection("Data Source=.;Initial Catalog=myData;Integrated Security=True;Pooling=False");
public Schmuckverwaltung() { InitializeComponent(); anzeigen(); }
DataTable DATA;
private void anzeigen() { CON.Open(); SqlDataAdapter SDA = new SqlDataAdapter(" SELECT * FROM Schmuck", CON); DATA = new DataTable(); SDA.Fill(DATA); dataGridView1.DataSource = DATA; CON.Close();
}
private void Schmuckverwaltung_Load(object sender, EventArgs e) {
}
private void btZurück_Click(object sender, EventArgs e) {
this.Hide(); Hauptmenü h2 = new Hauptmenü(); h2.ShowDialog(); }
private void button1_Click(object sender, EventArgs e) { CON.Open(); SqlDataAdapter SDA = new SqlDataAdapter("INSERT INTO Schmuck (Bezeichnung,Schmuckart,Material,Gewicht,Zustand,Preis,Datum)VALUES('" + textBox2.Text + "','" + comboBox1.Text + "','" + comboBox3.Text + "','" + textBox4.Text + "','" + comboBox2.Text + "','" + textBox3.Text + "','" + dateTimePicker1.Text + "')", CON); SDA.SelectCommand.ExecuteNonQuery(); CON.Close(); MessageBox.Show("Speichern erfolgreich !"); anzeigen();
}
private void button2_Click(object sender, EventArgs e) { CON.Open(); SqlDataAdapter SDA = new SqlDataAdapter("UPDATE Schmuck SET Bezeichnung = '" + textBox2.Text + "', Schmuckart = '" + comboBox1.Text + "', Material = '" + comboBox3.Text + "', Gewicht = '" + textBox4.Text + "', Zustand = '" + comboBox2.Text + "',Preis = '" + textBox3.Text + "', Datum = '" + dateTimePicker1.Text + "'WHERE ID ='" + textBox1.Text + "'", CON); SDA.SelectCommand.ExecuteNonQuery(); CON.Close(); MessageBox.Show("Update erfolgreich !"); anzeigen(); }
private void dataGridView1_MouseDoubleClick(object sender, MouseEventArgs e) { textBox1.Text = dataGridView1.SelectedRows[0].Cells[0].Value.ToString(); textBox2.Text = dataGridView1.SelectedRows[0].Cells[1].Value.ToString(); comboBox1.Text = dataGridView1.SelectedRows[0].Cells[2].Value.ToString(); comboBox3.Text = dataGridView1.SelectedRows[0].Cells[3].Value.ToString(); textBox4.Text = dataGridView1.SelectedRows[0].Cells[4].Value.ToString(); comboBox2.Text = dataGridView1.SelectedRows[0].Cells[5].Value.ToString(); textBox3.Text = dataGridView1.SelectedRows[0].Cells[6].Value.ToString(); dateTimePicker1.Text = dataGridView1.SelectedRows[0].Cells[7].Value.ToString(); }
private void button3_Click(object sender, EventArgs e) { CON.Open(); SqlDataAdapter SDA = new SqlDataAdapter("DELETE FROM Schmuck WHERE ID ='" + textBox1.Text + "'", CON); SDA.SelectCommand.ExecuteNonQuery(); CON.Close(); MessageBox.Show("GELÖSCHT !"); anzeigen(); }
private void btFarbe_Click(object sender, EventArgs e) { dataGridView1.ClearSelection(); foreach (DataGridViewRow row in dataGridView1.Rows) { var now = DateTime.Now; var verkaufDate = DateTime.Parse(row.Cells[7].Value.ToString()); var ninetydaysBefore = verkaufDate.AddDays(-90);
if (now < verkaufDate) { row.DefaultCellStyle.BackColor = Color.Red; } else if (now > verkaufDate) { row.DefaultCellStyle.BackColor = Color.Blue; } } }
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) {
} } } |
hoffe jemand kann mir da helfen ! Vielen Lieben dank
Moderiert von Christian S.: C#-Tags hinzugefügt
|
|
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 01.12.16 02:28
- Nachträglich durch die Entwickler-Ecke gelöscht -
Für diesen Beitrag haben gedankt: nav93
|
|
nav93
Beiträge: 41
|
Verfasst: Do 01.12.16 03:01
erst einmal vielen lieben dank für deine hilfe ! also das mit dem Grün funktioniert. jedoch werden die anderen zeilen nicht rot ? muss ich da noch etwas ändern?
und vielen dank für den hinweis ! nächstes mal wird das natürlich geändert
|
|
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 01.12.16 03:08
- Nachträglich durch die Entwickler-Ecke gelöscht -
Für diesen Beitrag haben gedankt: nav93
|
|
nav93
Beiträge: 41
|
Verfasst: Do 01.12.16 03:10
im code stehen doch 2 bedingungen . entweder oder . also müssten doch beide farbig sein oder hab ich da jetzt einfach nur einen denkfehler
|
|
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 01.12.16 03:35
- Nachträglich durch die Entwickler-Ecke gelöscht -
|
|
nav93
Beiträge: 41
|
Verfasst: Do 01.12.16 22:09
cool danke ! eine frage hätte ich noch . könnte ich wenn ich eine zeile auswähle im datagrid eine weitere form aufmachen ? quasi wenn bei der ausgewählten zeile das datum < das heutige datum dann soll die form Rechnung aufgehen . anders herum wenn es > ist Beleg.
ich hätte es jetzt so gemacht aber leider geht es nicht .
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| private void Schmuckverwaltung_MouseClick(object sender, MouseEventArgs e) { foreach (DataGridViewRow row in dataGridView1.SelectedRows) { var now = DateTime.Now; var datum = DateTime.Parse(row.Cells[7].Value.ToString());
if (DateTime.Today.AddDays(-90) <= datum) { rechnung r = new Hauptmenü(); r.ShowDialog();
} else if (DateTime.Today.AddDays(-90) >= datum) { beleg b = new beleg(); b.ShowDialog(); } } } } |
dachte mit einem doppelklick auf die zeile würde das gehen . jedoch tut sich da nichts
sorry ich hab das mit dem code anzeigen wie erwünscht nicht hinbekommen
Moderiert von Christian S.: C#-Tags hinzugefügt
|
|
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 02.12.16 02:41
- Nachträglich durch die Entwickler-Ecke gelöscht -
|
|
nav93
Beiträge: 41
|
Verfasst: Fr 02.12.16 03:51
cool ! danke jetzt funktioniert das auch ! ich denke immer meine ansätze sind soweit immer ganz naja ok
eine frage hätte ich noch. ich habe eine combobox , in der ich entweder 5,10,15 auswählen kann . dann einen betrag den ich eingebe , zb 210.10. dann hab ich einen knopf , der quasi diese beiden zahlen summieren soll.
jedes mal wenn ich eine Kommazahl eingebe bekomm ich jedoch eine fehlermeldung :
Zitat: | Ein Ausnahmefehler des Typs "System.Data.SqlClient.SqlException" ist in System.Data.dll aufgetreten.
Zusätzliche Informationen: Fehler beim Konvertieren des varchar-Datentyps in float. |
Hier wird der fehler makiert :
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| private void button1_Click(object sender, EventArgs e) { if (ValidateChildren(ValidationConstraints.Enabled)) CON.Open(); SqlDataAdapter SDA = new SqlDataAdapter("INSERT INTO Beleg (ArtikelId,Datum,Gebühr,Betrag,Endpreis)VALUES('" + comboBox1.Text + "','" + dateTimePicker1.Text + "','" + comboBox2.Text + "','" + textBox2.Text + "','" + textBox3.Text + "')", CON); SDA.SelectCommand.ExecuteNonQuery(); CON.Close(); MessageBox.Show("Speichern erfolgreich !");
anzeigen(); clear(); } |
Code des Button :
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| private void button3_Click(object sender, EventArgs e) { float box1 = 0; float box2 = 0; float ergebnis;
box1 = float.Parse(comboBox2.Text); box2 = float.Parse(textBox2.Text); ergebnis = box1 + box2; textBox3.Text = Convert.ToString(ergebnis); } |
in meiner datenbank tabelle sind auch alle zahlen mit float deklariert . ganze zahlen funktionieren problemlos .. kommazahlen nicht
wenn ich jetzt in der Kombobox 5 auswähle & bei Preis 10,20 & auf den knopf drücke wird 15,20 angezeigt. doch sobald ich auf den speichern knopf drücke geht da nichts mehr. Ich glaube ich versuche da einen String zu übergeben , aber wieso gehen dann ganze Zahlen?
hoffe jemand kann mir da weiterhelfen !
& vielen dank noch mal für die Erklärung
|
|
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 02.12.16 20:22
- Nachträglich durch die Entwickler-Ecke gelöscht -
|
|
nav93
Beiträge: 41
|
Verfasst: Sa 03.12.16 04:13
Vielen Dank für die Antwort . Endpreis ist bei mir als flaust gespeichert . Doch sie konvertier ich jetzt den String in Float . Also das Textbox3 dann einen float wert hat ?
|
|
Csharp-programmierer
Beiträge: 696
Erhaltene Danke: 10
Windows 8.1
C# (VS 2013)
|
Verfasst: Sa 03.12.16 09:26
Einfach mit this.textbox1.text = Ergebnis.ToString();
Moderiert von Th69: C#-Tags hinzugefügt
_________________ "Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
|
|
Th69
Beiträge: 4777
Erhaltene Danke: 1054
Win10
C#, C++ (VS 2017/19/22)
|
Verfasst: Sa 03.12.16 10:43
Hallo nav93,
benutze für die Datenbankabfragen SqlParameter (s. meine Links unter Suchparameter an SQL übergeben) - auf keinen Fall einfach Strings zusammenfügen.
|
|
nav93
Beiträge: 41
|
Verfasst: Sa 03.12.16 13:46
vielen dank !
muss ich diesen code in den code für dei textbox eingeben ? oder dort wo der code für den button steht?
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| private void button3_Click(object sender, EventArgs e) { { float box1 = 0; float box2 = 0; float Endergebnis;
box1 = float.Parse(comboBox2.Text); box2 = float.Parse(textBox2.Text); Endergebnis = box1 + box2; this.textBox3.Text = Endergebnis.ToString();
} } |
so geht es leider nicht. muss ich die kombobox auch konvertieren
das problem ist einfach das ich wenn ich den betrag ausrechnen lassee , ein string ist und meine spalte in der datenbank ein float ist. habe aber dort auch nvarchar benutzt. geht auch nich. sollte das normal nicht gehen?
|
|
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 03.12.16 18:21
- Nachträglich durch die Entwickler-Ecke gelöscht -
|
|