myCSharp.de - DIE C# und .NET Community (https://www.mycsharp.de/wbb2/index.php)
- Entwicklung (https://www.mycsharp.de/wbb2/board.php?boardid=3)
-- Datentechnologien (https://www.mycsharp.de/wbb2/board.php?boardid=29)
--- Datumkonversion und Berechnung zwischen MySQL/Datatable/Datagridview (https://www.mycsharp.de/wbb2/thread.php?threadid=121930)


Geschrieben von echdeneth am 07.06.2019 um 09:09:
  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)

C#-Code:
            // 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


Geschrieben von T-Virus am 07.06.2019 um 09:20:
 
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.

C#-Code:
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();
    }
}


Geschrieben von Th69 am 07.06.2019 um 10:21:
 
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.


Geschrieben von echdeneth am 07.06.2019 um 10:41:
 
Zitat von Th69:
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.

und beide ergeben Fehlermeldungen


Geschrieben von Abt am 07.06.2019 um 12:14:
 
Und die sollen wir nun erraten oder willst Du sagen, von welchen Du sprichst?
mycsharp.de ist keine Quizplattform ;)


Geschrieben von echdeneth am 12.06.2019 um 08:51:
 
Zitat von Abt:
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?


© Copyright 2003-2019 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 24.07.2019 08:47