Autor Beitrag
nav93
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 41



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 696
Erhaltene Danke: 10

Windows 8.1
C# (VS 2013)
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 41



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 696
Erhaltene Danke: 10

Windows 8.1
C# (VS 2013)
BeitragVerfasst: 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 user profile iconTh69: URL-Titel hinzugefügt.

_________________
"Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mo 21.11.16 12:09 
ausblenden C#-Quelltext
1:
2:
3:
4:
if (DateTime.Today.AddDays(-90) > meinLiebesSchmuckstueck.AbgabeDatum) 
   // red
else
   // green


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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 41



BeitragVerfasst: 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.





ausblenden volle Höhe 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 user profile iconChristian S.: C#-Tags hinzugefügt
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 01.12.16 02:28 
- Nachträglich durch die Entwickler-Ecke gelöscht -

Für diesen Beitrag haben gedankt: nav93
nav93 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 41



BeitragVerfasst: 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



BeitragVerfasst: Do 01.12.16 03:08 
- Nachträglich durch die Entwickler-Ecke gelöscht -

Für diesen Beitrag haben gedankt: nav93
nav93 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 41



BeitragVerfasst: 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



BeitragVerfasst: Do 01.12.16 03:35 
- Nachträglich durch die Entwickler-Ecke gelöscht -
nav93 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 41



BeitragVerfasst: 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 .


ausblenden 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 user profile iconChristian S.: C#-Tags hinzugefügt
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 02.12.16 02:41 
- Nachträglich durch die Entwickler-Ecke gelöscht -
nav93 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 41



BeitragVerfasst: 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 :

ausblenden 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(); // hier kommt immer die Fehlermeldung
            CON.Close();
            MessageBox.Show("Speichern erfolgreich !");

            anzeigen();
            clear();
        }


Code des Button :

ausblenden 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



BeitragVerfasst: Fr 02.12.16 20:22 
- Nachträglich durch die Entwickler-Ecke gelöscht -
nav93 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 41



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 696
Erhaltene Danke: 10

Windows 8.1
C# (VS 2013)
BeitragVerfasst: Sa 03.12.16 09:26 
Einfach mit this.textbox1.text = Ergebnis.ToString();

Moderiert von user profile iconTh69: C#-Tags hinzugefügt

_________________
"Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 41



BeitragVerfasst: 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?


ausblenden 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



BeitragVerfasst: Sa 03.12.16 18:21 
- Nachträglich durch die Entwickler-Ecke gelöscht -