Datum
-
hallo
ich bins nochmal zum Thema Datum
Nun hab ich ein Textfeld mit "Versuchsdatum" und ein Eingabefeld für das Datum der Maske hinzugefügt.
Die Member VAriable für das Steuerelement-ID IDC_Versuchsdatum hat den Typ "ColeDateTime" und als
Element "m_oledtVErsuchsdatum".
Wenn ich das Programm starte steht folgendes schon in meinem Eingabefeld
01.01.1970 01:00:00
Was muss ich tun, dass am Anfang ein leeres Eingabefeld vorhanden ist.
Kann sein dass ihr mir das schon mal beschrieben habt, nur verstanden hab ichs immer noch net so recht, so ein mist
Danke euch!!
-
Hm du kannst:
1.) Eine CString Variable auf das Eingabefeld legen und das dann verarbeiten
2.) Das DateTimePicker Steuerelement statt einem Eingabefeld verwenden
-
hi
danke werd mal Variante 1 versuchen, ja stimmt, dass mit ColeDateTime muss man da ja net machen,
-
wenn ich das aktuelle Datum haben möchte wie geht man da vor?
ich bekomms einfach nicht hinHabe das Steuerelement Datums/Zeitauswahl genommen(IDC_DATETIMEPICKER1)
Wie muss man nun die Membervariable deklarieren?
Als Typ ColeDateTime oder CTime
Bevor ich wieder alles lösch...
merci
-
ColeDateTime müsste doch stimmen
-
COleDateTime ist okay.
CTime hat einen wesendlich kleineren Wertebereich. (1970 bis 2038)
Bei COleDateTime habe ich noch nie Probleme bekommen.
-
mmh
aber warum funktioniert dann das aktuelle Datum nicht
Das müsste doch stimmen
In der OnInitDialog() Funtion// Aktuelles Datum anzeigen COleDateTime m_oledtAuswertedatum; m_oledtAuswertedatum = COleDateTime::GetCurrentTime(); UpdateData(FALSE);
-
Ich hoffe die Zeile
COleDateTime m_oledtAuswertedatum;
steht in der Headerdatei und du hast das per Assistent mit dem Control verbunden, so dass du einen DDX-Eintrag hast.
Dann sollte das richtig sein. Überschreibst du dir das wieder von einer anderen Stelle aus? So wie letztes Mal?
-
hab ich so gemacht (rechte Maustaste - Variable hinzufügen usw..)
jaa du hast recht estartu_de
jetzt hab ich auch verstanden was du damals gemeint hast...
aber wie überschreib ich das nicht?
ich schau mal ob ich wo was find
-
Wie ich dir schon geschrieben habe:
void CAdoDatabaseView::OnDraw(CDC* pDC) { CAdoDatabaseDoc* pDoc = GetDocument(); if ( !m_pDialog ) { m_pDialog = new Dilog; m_pDialog->Create( IDD_DIALOG1 , this ); m_pDialog->m_strLastName = m_strLastName; m_pDialog->m_strFirstName = m_strFirstName; m_pDialog->m_strAge = m_strAge; m_pDialog->m_oledtAuswertedatum = m_oledtAuswertedatum; // <- Da versaust du den Wert m_pDialog->m_oledtVersuchsdatum = m_oledtVersuchsdatum; // <- Da versaust du den Wert m_pDialog->UpdateData(FALSE); m_pDialog->m_pView = this; } m_pDialog->ShowWindow( SW_SHOW ); ASSERT_VALID(pDoc); // ZU ERLEDIGEN: Hier Code zum Zeichnen der ursprünglichen Daten hinzufügen }
Allerdings ist dein Projekt so "historisch gewachsen", um nicht zu sagen "wirr", dass du wirklich dir immer wieder selbst ein Bein stellen wirst, wenn du nicht mal über den kompletten Code gehst und überflüssiges aussortierst.
-
aber löschen darf ich die Zeile doch nicht?!
m_pDialog->m_oledtAuswertedatum = m_oledtAuswertedatum;
ich brauch die doch um Daten von der Datenbank auf meiner Maske
anzeigen zu lassen
-
Wie wäre es, wenn du den Code nicht in OnDraw schreibst (lies mal nach, wann OnDraw aufgerufen wird, du kriegst graue Haare...)
... sondern in OnLButtonDown oder vielleicht gleich eine Menühandlerfunktion?
Oder gib die Werte dem Dialog mit. Du kannst dem Dialog eine Membervariable geben, wo das alles drin steht.
Ich hab leider immernoch nicht das Kapitel gelesen, also zu wenig Ahnung von ADO - sonst würde ich dir mal deine Anwendung wieder in "normale" Bahnen schieben.
Warum machst du das eigentlich in einem Dialog und nicht in einem Formview? Gibt es nicht sogar einen CAdoRecordView oder so ähnlich?
-
habs endlich geschafft
anstatt dem FALSE einfach TRUE eingeben
-
Wo?
..aber wenns geht ist ja gut.
-
m_pDialog->UpdateData(TRUE);
andere Richtung
nur kann ich dann keine Daten mehr von der Datenbank mehr holen
Aber ich will ja eh in die Datenbank reinschreiben...egal
-
Die Stelle, die ich befürchtet hatte...
Lies dir das hier bitte mal durch.
BOOL UpdateData( BOOL bSaveAndValidate = TRUE );
Return Value
Nonzero if the operation is successful; otherwise 0. If bSaveAndValidate is TRUE, then a return value of nonzero means that the data is successfully validated.
Parameters
bSaveAndValidate
Flag that indicates whether dialog box is being initialized (FALSE) or data is being retrieved (TRUE).
Remarks
Call this member function to initialize data in a dialog box, or to retrieve and validate dialog data.
The framework automatically calls UpdateData with bSaveAndValidate set to FALSE when a modal dialog box is created in the default implementation of CDialog::OnInitDialog. The call occurs before the dialog box is visible. The default implementation of CDialog::OnOK calls this member function with bSaveAndValidate set to TRUE to retrieve the data, and if successful, will close the dialog box. (If the Cancel button is clicked in the dialog box, the dialog box is closed without the data being retrieved.)
-
morgen
das hab ich auch schon mal gelesen...
Jetzt ist's klar, dafür kann ich nicht mehr von der Datenbank lesenaber ne andere Frage, weißt du warum das
GetDlgItem(IDC_DATETIMEPICKER4)->SetWindowText("");
nur Dialogbasierend geht?
-
Was meinst du mit dialogbasieren? In einem Formview geht das auch.
Wenn ich mir das ansehe, habe ich die Vermutung, dass du in dem DateTimeCtrl "nichts" anzeigen willst.
Das geht leider nicht so, wie du gerade vor hast. Guck mal in die Eigenschaften von dem Control, da ist irgendwo ein Häkchen, wenn du das setzt, kriegt das Control ein Häkchen.Wie du das Teil behandelst, findest du hier:
http://www.c-plusplus.net/forum/viewtopic.php?t=81779&highlight=gettime+gdtvalid
http://www.c-plusplus.net/forum/viewtopic.php?t=60380&highlight=cdatetimectrlDie Funktion SetFormat vom CDateTimeCtrl könntest du vielleicht auch interessant finden, denn wenn man ein Leerzeichen nimmt, sieht das Control leer aus. Nur um etwas einzugeben muss man wieder ein Datum zulassen. Ist also etwas kompliziert. Dafür aber dummusersicherer als ein normales Eingabefeld.
-
yup
ich hab jetzt 2 Steuerelemente Datum/Zeitauswahl
( Auswertedatum und Versuchsdatum) und beide zeigen mir immer das aktuelle Datum. Möchte aber bloß bei Auswertedatum,dass es mir immer das aktuelle Datum anzeigt. und bei Versuchsdatum sollte nichts drin stehen (von Hand eingeben oder über die Datumauswahlbox)
beide Varibalen sind jetzt vom Typ COleDateTimeWerds vielleicht mal mit CDateTimeCtrl probieren, wies du beschrieben hast
Danke
-
"Guck mal in die Eigenschaften von dem Control, da ist irgendwo ein Häkchen, wenn du das setzt, kriegt das Control ein Häkchen. "
da meinst du aber schon rechte Maustaste und dann Eigenschaften
aber da seh ich nichts gescheites wo ich ein Häkchen setzten sollte
(Allgemein,Formate,ErweiterteFormate)