Entwickler-Ecke
WinForms - Vergleichen von Datum Problem
nav93 - Fr 18.11.16 23:26
Titel: Vergleichen von Datum Problem
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 - Fr 18.11.16 23:59
Die TimeSpan Klasse müsste dich weiterbringen.
nav93 - 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
Ralf Jansen - 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 - 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.
C#-Quelltext
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
Delete - Do 01.12.16 02:28
- Nachträglich durch die Entwickler-Ecke gelöscht -
nav93 - 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
Delete - Do 01.12.16 03:08
- Nachträglich durch die Entwickler-Ecke gelöscht -
nav93 - 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
Delete - Do 01.12.16 03:35
- Nachträglich durch die Entwickler-Ecke gelöscht -
nav93 - 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
Delete - Fr 02.12.16 02:41
- Nachträglich durch die Entwickler-Ecke gelöscht -
nav93 - Fr 02.12.16 03:51
cool ! danke jetzt funktioniert das auch ! ich denke immer meine ansätze sind soweit immer ganz naja ok :D
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
Delete - Fr 02.12.16 20:22
- Nachträglich durch die Entwickler-Ecke gelöscht -
nav93 - 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 - Sa 03.12.16 09:26
Einfach mit
this.textbox1.text = Ergebnis.ToString();
Moderiert von
Th69: C#-Tags hinzugefügt
nav93 - 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?
Delete - Sa 03.12.16 18:21
- Nachträglich durch die Entwickler-Ecke gelöscht -
nav93 - Sa 03.12.16 18:36
ok danke das hab ich jetzt eigentlich verstanden . muss ich dann zum Beispeil bei Spalte 5 statt zb wie bei mir textbox3.txt einfach textbox3.float machen oder etwas anderes . weil das wird mir als fehler angezeigt. ich komme da echt nicht weiter. wenn ich endpreis als ein nvarchar deklariert habe in meiner datenbank, dann sollte der das doch ohne probleme annehmen .
Delete - Sa 03.12.16 19:27
- Nachträglich durch die Entwickler-Ecke gelöscht -
nav93 - Sa 03.12.16 22:50
also ich krieg es einfach nicht auf die reihe . ich mache alles wie ihr es eig auch vorschlagt .
das ist mein code für s speichern bei der form Beleg
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| private void button1_Click(object sender, EventArgs e) {
if (ValidateChildren(ValidationConstraints.Enabled)) CON.Open(); SqlDataAdapter SDA = new SqlDataAdapter("INSERT INTO Beleg (ArtikelID,Datum,Betrag,Gebühr,Endpreis)VALUES('" + comboBox1.Text + "','" + dateTimePicker1.Text + "','" + textBox2.Text + "','" + comboBox3.Text + "','" + textBox3.Text + "')", CON); SDA.SelectCommand.ExecuteNonQuery(); CON.Close(); MessageBox.Show("Speichern erfolgreich !");
anzeigen(); clear(); } |
Beleg hab ich der Datenbank so festgelegt :
Beleg Id -> int Identity damit s immer selbst +1 erhöht wird
Schmuck id -> int
abgabedatum -> Date
Betrag -> float ( hier vllt auch varchar ? wegen dem Kommazahlen ?
Gebühr ( kombo box für die werte 5 , 10, 15 ) -> int
Endpreis -> varchar.
trotzdem kommt der Fehler .. das kann doch nicht sein oder.
und der knopf um endpreis auszurechnen :
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();
} } |
geht leider nicht .....
Delete - So 04.12.16 00:40
- Nachträglich durch die Entwickler-Ecke gelöscht -
nav93 - So 04.12.16 00:56
ja ich weiss was der fehler ist, also ich hab das schon verstnaden, jedoch weiss ich nicht wie ich jetzt einer textbox einen bestimmten datentyp zuweise. hat jemand eventuell ein konkretes beispiel ?
Csharp-programmierer - So 04.12.16 00:59
Du kannst alle Datentypen parsen. Du kannst auch den Text einer ComboBox parsen
C#-Quelltext
1:
| int i = int.parse(this.combobox1.SelectedItem.ToString()); |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!