Laden...

Datumkonversion und Berechnung zwischen MySQL/Datatable/Datagridview

Erstellt von echdeneth vor 4 Jahren Letzter Beitrag vor 4 Jahren 1.454 Views
echdeneth Themenstarter:in
161 Beiträge seit 2019
vor 4 Jahren
Datumkonversion und Berechnung zwischen MySQL/Datatable/Datagridview

verwendetes Datenbanksystem: MySQL

Hallo, ich bin rel. neu, sowohl Hier als auch mit C# und SQL.

Ich möchte mit meiner Anwendung ein MySQL Datum abfragen und einen Zeitraum filtern.
Dazu lade ich diese DB in eine Datatable und stelle die Daten in einem Datagrid dar.
Das berechnen und Filtern des Datums erfolgt (soll erfolgen) über ToggleButton (Filterung an/aus).

Nun habe Probleme die im Datagrid gespeicherten Datumsangaben mit einem 2. Wert zu verrechnen.
(also Heute+7Tage - Datum) es gibt entweder Probleme mit DateTime und String oder Formatprobleme wenn beide Datumswerte DateTime sind.

und eine Frage habe ich dazu: Wie ist bei ständig wechselnden Formatumwandlungen die allgemeine Vorgehensweise?
Das Datum wird ja vom Eingabefeld in MySQL zurück in die Datatable usw. mehrmals hin und her konvertiert (de_DE zu en_US/GB...)

(ja, Google gibt zwar auch was her aber nicht was ich brauche, oder denke zu brauchen)


            // CultureInfo cultEN = new CultureInfo("en-US");
            DateTime Heute = DateTime.Now;
            // DateTime.ParseExact(Heute, "yyyy-MM-dd h:mm tt", CultureInfo.InvariantCulture).ToString("MMM. dd, yyyy HH:mm:ss");
            DateTime HeutePlus7 = Heute.AddDays(7);
            string HeutePlus7String = HeutePlus7.ToString("yyyy-MM-dd h:mm tt"); 

            string FilterstringDate = "Datum_bis < #" + HeutePlus7 + "#";
            string FilterstringStr = "Datum_bis < '" + HeutePlus7String + "'";
            

            if (btn_sortbyskonto.ForeColor == Color.FromArgb(255, 80, 80, 80))
            {
                btn_sortbyskonto.ForeColor = Color.FromArgb(255, 0, 107, 160);
                btn_sortbydate.ForeColor = Color.FromArgb(255, 80, 80, 80);
                MessageBox.Show(HeutePlus7 + "\n" + FilterstringStr);
                ((DataTable)dgw.DataSource).DefaultView.RowFilter = FilterstringStr;
            }
            else if (btn_sortbyskonto.ForeColor == Color.FromArgb(0, 107, 160))
            {
                btn_sortbyskonto.ForeColor = Color.FromArgb(255, 80, 80, 80);
                ((DataTable)dgw.DataSource).DefaultView.RowFilter = "";
            }


Exception:

entweder: Die Operation '<' kann nicht an MySql.Data.Types.MySqlDateTime und System.String durchgeführt werden
oder: Die Zeichenfolge wurde nicht als gültiges DateTime erkannt

"Man muß die Dinge so einfach wie möglich machen. Aber nicht einfacher." Albert Einstein

T
2.219 Beiträge seit 2008
vor 4 Jahren

Kingt als würdest du die Strings direkt in deinen Sql Anweisungen schreiben.
Für solche Probleme und um auch z.B. Sql Injections abzufangen nutzt man immer Sql Parameter bzw. Binde Variablen.
Auch der MySql Provider bietet diese an.


DateTime dateTime = DateTime.Now;
using(MySqlConnection conn = new MySqlConnection(connectionString))
{
    conn.Open();
    using(MySqlCommand cmd = new MySqlCommand("INSERT INTO Tabelle(DateTime) Values(@DateTime)", conn))
    {
        cmd.Parameters.Add(new MySqlParameter("@DateTime", dateTime))
        cmd.ExecuteNonQuery();
    }
}


Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

4.931 Beiträge seit 2008
vor 4 Jahren

Hier geht es um die RowFilter-Syntax: DataView RowFilter Syntax [C#]

Also entweder mittels # in englischer (bzw. invariant) Schreibweise oder aber mittels ' in aktueller Culture.

echdeneth Themenstarter:in
161 Beiträge seit 2019
vor 4 Jahren

Hier geht es um die RowFilter-Syntax:
>

Also entweder mittels # in englischer (bzw. invariant) Schreibweise oder aber mittels ' in aktueller Culture.

und beide ergeben Fehlermeldungen

"Man muß die Dinge so einfach wie möglich machen. Aber nicht einfacher." Albert Einstein

16.806 Beiträge seit 2008
vor 4 Jahren

Und die sollen wir nun erraten oder willst Du sagen, von welchen Du sprichst?
mycsharp.de ist keine Quizplattform 😉

echdeneth Themenstarter:in
161 Beiträge seit 2019
vor 4 Jahren

Und die sollen wir nun erraten oder willst Du sagen, von welchen Du sprichst?
mycsharp.de ist keine Quizplattform 😉

Sorry, habe ich oben hingeschrieben im Eingangspost

Exception:

entweder: Die Operation '<' kann nicht an MySql.Data.Types.MySqlDateTime und System.String durchgeführt werden
oder: Die Zeichenfolge wurde nicht als gültiges DateTime erkannt

Ich habe im selben Projekt ein Problem auch wieder mit Datagridview/Datatable
im Bezug auch die Extrahierung von Daten aus einem Row (FullRowSelect) in ein Array
(sollen in andere Form zur bearbeitung kommen) - dafür evtl. ein neues Thema?

"Man muß die Dinge so einfach wie möglich machen. Aber nicht einfacher." Albert Einstein