Table Filter



  • Hallo,

    ich fummel gerade ein bisschen an MySQL und Tables herum 😉

    Ich hab ne Spalte in der datenbank als TYP : Date
    In der DB sind von versch. Tagen Einträge.
    Nun möchte ich per Filter nur das heutige Datum ausgeben lassen.

    das Datum steht in einem Editfeld (Datum='06.07.2006')

    Wenn ich nun
    Table1 -> Filter = Edit1->Text;
    ausführe, dann kommt der Fehler:
    EDBEngineError -> operation nicht anwendbar.'.

    okok, ich gebe zu, ich hab noch keine große ahnung von datenbanken,
    also bitte nicht gleich lachen 🙂

    Danke schonmal



  • Hallo

    MySQL erwartet das Datum im Format 2006-07-06

    bis bald
    akari



  • Hi,

    Habe nun das hier eingegeben

    DateSeparator = '.';
    ShortDateFormat = "yyyy-mm-dd";

    Meldung: "2006-07-06 ist kein gültiges Datum".

    geht immer noch nicht 😞



  • Hallo

    ändere lieber nicht die globalen Eigenschaften, sondern benutzt

    TDateTime curdate = ...;
    AnsiString MySQLDate = FormatDateTime("yyyy-mm-dd", curdate);
    

    bis bald
    akari



  • Hi,

    ok, habs mal so abgeändert...

    Leider kommt immernoch die gleiche Meldung, "kein gültiges datum" 😞

    langsam nervt das blöde Datefeld...
    als typ char geht das einwandfrei



  • Hallo

    dann machst du irgendetwas anderes falsch. Ich habe genau dieselbe Funktion und funktioniert.

    Benutzt mal ein Frontend für MySQl bzw. die Konsole und las eine einfache Abfrage ausführen wie

    SELECT * FROM <tabelle> WHERE <datefield> = '2006-07-06'
    

    bis bald
    akari



  • Hi,

    im SQL Explorer klappt das ohne probleme !

    ich hab nun einen Button gemacht

    Table1 -> Filter = Edit1->Text;

    in das EditFeld gebe ich nur das hier ein:

    Datum='2006-07-06' -> Meldung: kein gülitges Datum
    bei
    Datum='06.07.2006' -> Medlung: Operation nicht anwendbar .'.

    Toll, irgendwie will das nicht *g*



  • Hallo

    da liegt dein Problem, denn die Fehlermeldungen kommen von unterschiedlichen Quellen :
    Die zweite Fehlermeldung kommt vom MySQL, weil das Format falsch ist. Das siehst du daran das die direkte Abfrage läuft.

    Die erste Fehlermeldung kommt hingegen von TDateTime, weil du vom Edit den String in ein TDateTime umwandeln willst. Nur jetzt hast du ein Format das TDateTime im deustchen Setup nicht kennt. Mögliche Lösung : Nimm statt dem TEdit ein TDateTimePicker und dort kannst direkt die Eigenschaft Date auslesen und über oben genannte Funktion in MySQL-Format umwandeln.

    bis bald
    akari



  • Hi,

    irgendwie kann ich dir nun nicht ganz folgen.
    macht das nun einen Unterschied ob ich das mit TDateTime
    oder TDateTimePicker mache ?

    *verwirrt bin*



  • Hallo

    Datum='2006-07-06' -> Meldung: kein gülitges Datum kommt wie gesagt als fehler von der Umwandlung von AnsiString nach TDateTime. Weil TDateTime auf deutschen Systemen dieses Format nicht kennt.

    Als einfachste und für den Benutzer auch am freundlichsten ist der Austausch mit TDateTimePicker. weil du dort direkt den TDateTime auslesen kannst ohne TDateTime konvertieren zu müßen. Danach kannst du dann diesen TDateTime mit der von mir bereits geposteten Funktion in MySQL-Format umwandeln.

    bis bald
    akari



  • Hi,

    ich hab im dtp1 das format auf yyyy-mm-dd gestellt.
    nun zeigt der mir wirklich
    2006-00-07 -> als heutiges datum an *g*
    und ja, ich hab die richtigen einst. im windows!

    *EDIT: format muss so aussehen : yyyy-MM-dd *g*

    dtp1 -> DateTime = Date();
    

    soweit ist es doch richtig ?

    hast du die funktion FormatDateTime(); gemeint?


Anmelden zum Antworten