Datum



  • 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 lesen

    aber 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=cdatetimectrl

    Die 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 COleDateTime

    Werds 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)



  • Das ist unter Formate und heißt "Nichts anzeigen"

    Sorry, war vorhin zu faul zum Nachgucken... 😉



  • no problem 😉

    ist das richtig, ich seh dann vor dem Datum ein Kästchen mit einem Häkchen drin?
    (ich lass mal COleDateTime lieber stehen stehen, sonst passt das andere Zeugs nicht mehr und bin dann voll im Sumpf...)
    Ich probiers jetzt mal mit SetTime...



  • hi
    wenn das löschen möcht,muss ich doch bloß dass hier eingeben oder?

    * Checkbox löschen (default-Wert NULL wird übergeben) */ 
    m_oledtVersuchsdatum.SetTime();
    

    bringt mir aber folgende Fehlermeldung

    error C2660: 'SetTime' : Funktion akzeptiert keine 0 Parameter



  • Du versuchst das mit der WERT-Variablen. Du brauchst aber die CONTROL-Variable.

    Deswegen brauchst du die Variable aber nicht löschen. Du kannst einfach die andere anlegen. 🙂
    Oder du holst dir den Zeiger.

    CDateTimeCtrl* pCtrl = dynamic_cast<CDateTimeCtrl*>(GetDlgItem(IDC_DATETIMEPICKER2));
    ASSERT(pCtrl);
    pCtrl->SetTime();
    

    ⚠ Die ID ist geraten. Kann sein, dass du sie anpassen musst. ⚠



  • frag lieber kurz nach,bevor ich alles lösch...
    Hab ich das so richtig verstanden, ich muss nun die Variable löchen und eine neue Variable mit Kategorie "WERT" und Typ "CTime" anlegen? 🙂



  • äh ja 😉 hat sich erledigt....
    sorry hab dein Beitrag nicht ganz gelesen bzw. übersehen



  • NEEEEEEIIIIIIIIN!

    Nochmal, diesmal bitte LESEN:

    Deswegen brauchst du die Variable aber nicht löschen. Du kannst einfach die andere anlegen.

    Also: Lass alles wie es ist, du machst jetzt was DAZU.
    Klassenassi auf. Membervariable zu dem Control anlegen.
    Kategorie Control!!!
    Als Typ sollte dann CDateTimeCtrl stehen.

    Wenn du dir das nicht zutraust, kannst du den Quelltext verwenden, den ich gepostet habe.
    ---------------------------------
    Edit: Okay - Brille kaufen. 😉



  • jaja schon gut, hab's halt beim ersten Mal durchlesen nicht wahrgenommen,sorry

    Yup,aber sehen tu ich das datum immer noch, wollte eigentlich dass man gar nichts sieht wenn man das Programm startet und dann ein Datum auswählt


Anmelden zum Antworten