Autor Beitrag
Talemantros
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 444
Erhaltene Danke: 2

Win7 Proff 64bit
C# (VS2013)
BeitragVerfasst: Fr 21.11.14 17:15 
Hi,
leider habe ich mich zu früh gefreut.
In www.entwickler-ecke....atenbank_113677.html dachte ich habe ich den SQL String richtig geschrieben.
Dieser sollte das heutige Datum mit 2 Werten vergleich und alle wo es passt auf "aktiv = 1" setzen

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
            strSQL = "Update maschzeit Set aktiv = 1 where (?heute between gueltigvon and gueltigbis)";

            using (MySqlConnection conn = new MySqlConnection (connStr))
            {
                using (MySqlCommand cmd = new MySqlCommand (strSQL, conn))
                {
                    conn.Open();

                    cmd.Parameters.AddWithValue("?heute", DateTime.Now.ToShortDateString());

                    cmd.ExecuteNonQuery();

                    conn.Close();
                }
            }


Erst dachgte ich das funktioniert. HAbe beim erneuten Testen aber festgestellt, dass er zwar akti = 1 setzt, aber nicht den richitgen Wert sondern immer den letzten Wert.

Siehe Anlage

Habe leider keinen Ansatzpunkt. Seht ihr etwas?

Gruß
Daniel
Einloggen, um Attachments anzusehen!
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: Fr 21.11.14 17:38 
Zitat:
cmd.Parameters.AddWithValue("?heute", DateTime.Now.ToShortDateString());


Das sieht für mich so aus als würdest du das Datum als string speichern. Das wäre eine ganz schlechte Idee und dann kein Wunder mehr das es nicht geht.

DateTime.Now.ToShortDateString() ist von den lokalen Einstellungen abhängig und du bekommst halt einen anders formatierten string je nach Einstellung des lokalen System. Wenn man also ein Datum als string speichert ist das so wie du es machst maximal Zufall wenn es geht man muß schon beim lesen und schreiben ein eindeutig definiertes Format nehmen.

Am besten ein DateTime für die Spalte benutzen oder wenn es aus einem mir nicht nachvollziehbaren Grund ein string sein muß mußt du den string in einem sortierbaren Format speichern. Sortierbar heißt das Format so gewählt sein muss das jemand der die Spalte sortieren will (und das Sortierverfahren nur weiß das es ein beliebiger string ist) das auch passt wenn mann die Sonderbedeutung, dieser string ist ein Datum, das für ein Datum passende rauskommt. Also z.B. DateTime.Now.ToString("yyyyMMdd"); Von mir aus auch mit irgendwelchen Trennzeichen.
Talemantros Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 444
Erhaltene Danke: 2

Win7 Proff 64bit
C# (VS2013)
BeitragVerfasst: Sa 22.11.14 11:46 
Guten Morgen,
die Spalte war zwar kein String, aber leider nur ein Date.
Habe dieses nun in DateTime geäändert und den Befehl gekürzt auf DateTime.Now

Das macht einen besseren Eindruck.
TEste es nochmal.

Danke

Gruß
Daniel