Problemchen mit Datum
-
habe ein textfeld angelegt aus dem ein datum ausgelesen werden soll.
das eingabe format tt.mm.jjjj....er schreibt mir aber zurück dass das format irgendwie falsch werde wenn ich das so ins textfeld schreibe.bitte wo ist der fehler???
mandantenNummer = txt_Mandantennummer->Text; date = StrToDate(txt_von->Text); date_last = StrToDate(txt_bis->Text); DataSource1->DataSet = Query2; Query2->Close(); Query2->SQL->Clear(); Query2->SQL->Add("select sum(km0005) as ergebnis from lobu.kst_monatswerte where ma0000 =:mandantenNummer "); Query2->ParamByName("mandantenNummer")->AsString = mandantenNummer; Query2->ParamByName("date")->AsString = date; Query2->ParamByName("date_last")->AsString = date_last; Query2->Open();
-
Zum einen sehe ich im SQL-Select kein Datumsfeld und zum anderen, wieso übergibst Du einen Datumswert als String?
-
zum ersten teil...da haste recht!
sieht dann so aus:
select sum(km0005) as ergebnis from lobu.kst_monatswerte where ma0000 =:mandantenNummer and km0003=:date
zum zweiten:
was ich möchte ist das txt feld auslesen und in das sql query übergeben...
sag mir bitte wie ich das richtig mache
....ich caste doch den string aus dem txt feld in date oder nicht???
date = StrToDate(txt_von->Text);
-
Welche Fehlermeldung erhälst Du bei welcher Eingabe?
Was für ein Datentyp ist date?
-
Meldung: "'ist kein gültiges Datum'
habe das so verstanden, dass
StrToDate(txt_von->Text)
eben aus "jedem" String automatisch ein date format macht...in der DB wird das format 2006-03-01 also jjjj-mm-tt benutzt.
-
Hallo
die Fehlermeldung besagt eindeutig, das zur Laufzeit in txt_von->Text ein leerer String steht, der nicht umgewandelt werden kann.
Entweder fängst du sowas vorher schon ab, oder du verwendest einen TDateTimePicker anstatt des TEdit.bis bald
akari
-
ich habe mich jetzt für ein TMonthCalender entschieden.
Ich komme auch an das selektierte Datum ran, allerdings kann ich das nicht als Parameter an das SQL Query übergeben wegen der Fehlermeldung:Query2:Typ für Feld 'castedDate' ist unbekannt...
Diese Fehlermeldung hatte ich schon mal....
Was bedeutet das bitte und was muss da richtigerweise stehen???using namespace std; AnsiString mandantenNummer; try { // auslesen der eingegebenen Mandantennummer mandantenNummer = txt_Mandantennummer->Text; // das angeclickte Datum als AnsiString variable AnsiString selected_Date; // fülle die variable selected_Date = MonthCalendar1->Date; //ausgeben der Variablen zum test Edit1->Text = selected_Date; // Casten des Datums in einen String AnsiString castedDate; castedDate = DateToStr(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=:castedDate"); Query2->ParamByName("mandantenNummer")->AsString = mandantenNummer; Query2->Open(); Query2->First();
-
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();
-
-
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 nelobu.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(); }