Problemchen mit Datum



  • was soll das

    castedDate = DateToStr(selected_Date);
    

    bringen? sowohl castedDate wie auch selected_Date sind vom Typ AnsiString

    MonthCalendar1->Date liefert einen Werte vom Typ TDateTime bzw. TDate zurück und keinen AnsiString

    also übergib einfach MonthCalendar1->Date an den Parameter des Query als AsDateTime



  • @Linnea:nimms mir nicht übel bin nicht wirklich fit in c++ 😞

    habe das so probiert...aber gleiche Fehlermeldung!

    // auslesen der eingegebenen Mandantennummer
                     mandantenNummer = txt_Mandantennummer->Text;
    
                     TDate selected_Date = MonthCalendar1->Date;
    
                     //ausgeben der Variablen zum test
                     Edit1->Text = selected_Date;
    
                    DataSource1->DataSet = Query2;
                    Query2->Close();
                    Query2->SQL->Clear();
    
                    // Übergabe als Parameter an das SQL Query
                    Query2->SQL->Add("select sum(km0005) as ergebnis from lobu.kst_monatswerte where ma0000 =:mandantenNummer and km0003=:selected_Date");
                    Query2->ParamByName("mandantenNummer")->AsString = mandantenNummer;
                    Query2->Open();
                    Query2->First();
    

    ich habs...es fehlte...

    Query2->ParamByName("selected_Date")->AsString = selected_Date;
    


  • Hä? Du hast ein TDate- / TDateTime-Objekt, wandelst dieses in einen String, nur damit Du es als String an die Query übergeben kannst?!?

    Query2->ParamByName("selected_Date")->AsDateTime = MonthCalendar1->Date;
    


  • ja...also so funktioniert es im moment:
    habe jetzt nur noch das problem einen ZeitRaum angeben zu wollen in dem
    SQL Query.
    hab ich da auskommentiert hingeschrieben....plz help!

    // auslesen der eingegebenen Mandantennummer
                     mandantenNummer = txt_Mandantennummer->Text;
    
                     // Datum in variable selected_Date speichern
                     TDate selected_Date = MonthCalendar1->Date;
                     TDate end_Date = MonthCalendar1->EndDate;
    
                     //ausgeben der Variablen zum test
                     Edit1->Text = selected_Date;
                     Edit2->Text = end_Date;
    
                    DataSource1->DataSet = Query2;
                    Query2->Close();
                    Query2->SQL->Clear();
    
                    // Übergabe als Parameter an das SQL Query
                    Query2->SQL->Add("select sum(km0005) as Personalkosten from  lobu.kst_monatswerte where ma0000 =:mandantenNummer and km0003=:selected_Date 
    // hier soll jetzt ein zeitraum eingegebn werden nur fehlt mir die richtige syntax...also so nach dem motto: km0003 between selected_Date und end_Date  ");
    
                    Query2->ParamByName("mandantenNummer")->AsString = mandantenNummer;
                    Query2->ParamByName("selected_Date")->AsString = selected_Date;
                    Query2->ParamByName("end_Date")->AsString = end_Date;
                    Query2->Open();
                    Query2->First();
    


  • Hallo

    siehe BETWEEN

    bis bald
    akari



  • ja also das mit dem between kenn ich aber hier sind parameter im spiel deshalb die frage

    lobu.kst_monatswerte where ma0000 =:mandantenNummer and km0003=:selected_Date"
    

    ...
    hatte mir das so gedacht, aber ne 😞

    lobu.kst_monatswerte where ma0000 =:mandantenNummer and km0003=:between selected_Date and km0003=:end_Date"
    


  • Hallo

    offenbar solltest du doch nochmal die Syntax anschauen.

    lobu.kst_monatswerte where ma0000 =:mandantenNummer and km0003 between :selected_Date and :end_Date
    

    oder

    lobu.kst_monatswerte where ma0000 =:mandantenNummer and km0003 >=:selected_Date and km0003<=:end_Date
    

    bis bald
    akari



  • @akari:
    ja, da haste recht...aber ich lerne ja noch....

    danke dir



  • so...nächste frage :):
    wie mache ich denn aus einem datum vom format tt.mm.jjjj ein datum vom format yyyy-mm-dd in c++???



  • Hallo

    siehe TDateTime::FormatString

    bis bald
    akari



  • Wann ersetzt Du eigentlich dieses <von der Zensur gestrichen> ->AsString bei der Parameterübergabe?

    Ist die Mandantennummer in der Datenbank ein String? Wenn nicht, warum übergibst Du einen String?
    Die beiden Datumsfelder in der DB sind keine Strings. Warum übergibst Du die Parameter immer noch als String?

    Ich gehe davon aus, dass das der Grund ist, warum Du nach der Formatierung des Datumstrings fragst... Übergib die Parameter doch gleich im richtigen Format.



  • @Joe: weil ich das im Zuge geistiger Umnachtung vergessen habe *schäm*
    Du hast recht und ich danke Dir vielmals!!!!!

    Sieht jetzt so aus:

    using namespace std;
      AnsiString mandantenNummer;
    
            try
            {
                     // auslesen der eingegebenen Mandantennummer
                     mandantenNummer = txt_Mandantennummer->Text;
    
                     // Datum in variable selected_Date speichern
                     TDate selected_Date = MonthCalendar1->Date;
                     TDate end_Date = MonthCalendar1->EndDate;
    
                     //ausgeben der Variablen zum test
                     Edit1->Text = selected_Date;
                     Edit2->Text = end_Date;
    
                    DataSource1->DataSet = Query2;
                    Query2->Close();
                    Query2->SQL->Clear();
    
                    // Übergabe als Parameter an das SQL Query
                    Query2->SQL->Add("select sum(km0005) as Personalkosten from lobu.kst_monatswerte where ma0000 =:mandantenNummer and km0003 between :selected_Date and :end_Date");
                    Query2->ParamByName("mandantenNummer")->AsString = mandantenNummer;
                    Query2->ParamByName("selected_Date")->AsDateTime = MonthCalendar1->Date;
                    Query2->ParamByName("end_Date")->AsDateTime = MonthCalendar1->EndDate;
                    Query2->Open();
                    Query2->First();
    


  • ...bin jetzt soweit, dass ich in dem sql query joins nutze....
    leider findet er den parameter selected date nicht!

    wobei ich auch fragen wollte, warum es bei mandantennummer =: heissen muss und nicht nur :???

    b) Welche Exceptions sollte ich unbedingt abfangen???

    So siehts aus:

    try
            {
                     // auslesen der eingegebenen Mandantennummer
                     mandantenNummer = txt_Mandantennummer->Text;
    
                     // Datum in variable selected_Date speichern
                     TDate selected_Date = MonthCalendar1->Date;
                     TDate end_Date = MonthCalendar1->EndDate;
    
                     //ausgeben der Variablen zum test
                     Edit1->Text = selected_Date;
                     Edit2->Text = end_Date;
    
                      DataSource1->DataSet = Query2;
                      Query2->Close();
                      Query2->SQL->Clear();
    
                      // Übergabe als Parameter an das SQL Query
                      Query2->SQL->Add("select sum(a.su0005) AS summe from fibu.kontensummen a join zmis.kontenplan b on a.su0002 = b.kp0001 where a.ma0001=:mandantenNummer and a.su0003 between : selected_Date and :end_Date and b.kp0003 = '430'");
                      Query2->ParamByName("mandantenNummer")->AsString = mandantenNummer;
                      Query2->ParamByName("selected_Date")->AsDateTime = MonthCalendar1->Date;
                      Query2->ParamByName("end_Date")->AsDateTime = MonthCalendar1->EndDate;
                      Query2->Open();
                      Query2->First();
    
            }
    


  • Mit dem : leitest Du einen Parameter ein. Das = hat damit nichts zu tun. Mach mal das Leezeichen zwischen dem Doppelpunkt und dem Parameternamen weg.

    Für die Query soltest Du alle EDBEngineError-Objekte abfangen.



  • ...uah ein leerzeichen ich beisse in den tisch!

    mal was blödes gefragt...wo finde ich denn die exceptions zu methoden, die geworfen werden können oder eben zu klassen???

    in java gibts ne api...in c++???



  • Hallo

    in C++ gibts es Referenzen.
    Allerdings nützen die dir in diesem Fall nichts, sondern du must in die BCB-Hilfe schauen.

    bis bald
    akari


Anmelden zum Antworten