myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Datentechnologien » Datumkonversion und Berechnung zwischen MySQL/Datatable/Datagridview
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Datumkonversion und Berechnung zwischen MySQL/Datatable/Datagridview

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
echdeneth echdeneth ist männlich
myCSharp.de-Mitglied

Dabei seit: 05.06.2019
Beiträge: 16
Entwicklungsumgebung: C# / Visual Studio 2017/19
Herkunft: Sachsen


echdeneth ist offline

Datumkonversion und Berechnung zwischen MySQL/Datatable/Datagridview

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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
07.06.2019 09:09 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
T-Virus T-Virus ist männlich
myCSharp.de-Mitglied

Dabei seit: 17.04.2008
Beiträge: 1.284
Entwicklungsumgebung: Visual Studio, Codeblocks, Edi
Herkunft: Nordhausen, Nörten-Hardenberg


T-Virus ist offline Füge T-Virus Deiner Kontaktliste hinzu

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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();
    }
}
07.06.2019 09:20 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Th69
myCSharp.de-Poweruser/ Experte

avatar-2578.jpg


Dabei seit: 01.04.2008
Beiträge: 3.330
Entwicklungsumgebung: Visual Studio 2015/17


Th69 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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.
07.06.2019 10:21 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
echdeneth echdeneth ist männlich
myCSharp.de-Mitglied

Dabei seit: 05.06.2019
Beiträge: 16
Entwicklungsumgebung: C# / Visual Studio 2017/19
Herkunft: Sachsen

Themenstarter Thema begonnen von echdeneth

echdeneth ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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
07.06.2019 10:41 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 12.943
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Und die sollen wir nun erraten oder willst Du sagen, von welchen Du sprichst?
mycsharp.de ist keine Quizplattform ;)
07.06.2019 12:14 Beiträge des Benutzers | zu Buddylist hinzufügen
echdeneth echdeneth ist männlich
myCSharp.de-Mitglied

Dabei seit: 05.06.2019
Beiträge: 16
Entwicklungsumgebung: C# / Visual Studio 2017/19
Herkunft: Sachsen

Themenstarter Thema begonnen von echdeneth

echdeneth ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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?

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von echdeneth am 12.06.2019 09:06.

12.06.2019 08:51 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 3 Monate.
Der letzte Beitrag ist älter als 3 Monate.
Antwort erstellen


© Copyright 2003-2019 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 16.09.2019 01:16