Aktuelles Datum anzeigen



  • Es wäre schön, wenn du mal ganz ohne deinen aktuellen Arbeitsstand im Kopf aufscheiben könntest, was du eigentlich willst.

    Danach schreib bitte mal auf, was momentan passiert.

    Sorry, ich habe den Faden verloren bzw. das Gefühl, das du was anderes willst als wir dir gerade versuchen zu helfen. 😞

    Meine Vermutung:
    Du hast einen FormView auf dem ein Control (dessen Typ mir leider immer noch unbekannt ist) ist. Dieses Control ist einer Wertvariable zugeordnet, die nicht initialisiert wird, deswegen steht das das komische Datum drin.
    Außerdem möchtest du noch das Anzeige-/Eingabeformat des Controls ändern.

    So, jetzt du: Wie schlecht habe ich geraten? 😉



  • @estartu_de
    das ist mein erstes VC++ Programm, hab in der Schule bis jetzt nur C gelernt
    Und nun wollt ich mich mal mit Datenbankzugriff beschäftigen, weil wir das nächstes Jahr haben. Bis jetzt haben wir nur mit DOS Boxen gearbeitet...
    Ich werde mir mal die Seite durchlesen hab ich grad gefudnen http://tutorial.schornboeck.net/inhalt.htm

    Ich werds jetzt mit dem akuellen Datum nochmal versuchen, vielleicht klappts jetzt ja.
    Danke



  • Oh, na das erklärt, warum du so leicht durcheinander kommst. 🙂

    Der Link hier für dich zu dem Tutorial mit dem ich bei VC++ eingestiegen bin, nachdem ich an einem Microsoftbuch gescheitert war: http://www.henkessoft.de/inhalt.htm

    Und bist du dir sicher, WIE ihr auf die Datenbank zugreifen wollt? Es gibt das schließlich drei Varianten mindestens. 🙂
    Wäre doch schade (aber nicht umsonst) wenn du die falsche lernst. 😉



  • ja mit ADO wollen wir auf die Datenabnk zugreifen. Das soll glaub ich die neueste Technologie sein...
    ja danke für den Link,sieht sehr gut aus, werds mir auf alles fälle durchlesen

    COleDateTime  m_oledtAuswertedatum = COleDateTime::GetCurrentTime();
          m_deinstring=m_oledtAuswertedatum.Format("%d.%m.%Y");//m_deinstring    ist   der CString wo du das datum hin
    

    aber ich hab doch kein CString definiert, sondern nur dies

    COleDateTime    m_oledtAuswertedatum;
    


  • hast du den beitrag von mir von 10:18:59 08.09.2004 gelesen?



  • ich dachte du woltest das datum bein progammstart in dein textfeld anzeigen.
    das textfelt bekommt eine CString variable zugewisen und die nimst du.
    nacher UpdateData(FALSE); nicht fergesen.

    MFG TaccoGo



  • ja klar ich lese alle eure Hilfen 🙂

    ich weiß nicht wie du das meinst
    Meinst du wenn man eine Member Variable hinzufügt, und Control auswählt, was für ein Typ dann drin steht? CStatic
    Aber du meinst das sicher nicht...



  • achso dann muss ich jetzt im Klassenassisten die Variable löschen, die
    mit COleDateTime m_oledtAuswertedatum definiert ist
    und CString m_strAuswertedatum eingeben ?



  • Doch, das meinte ich! 👍

    Das, wo dein Datum ausgegeben wird ist also ein CStatic.
    Dann sag doch mal, wie die Variable, die dazu gehört, heißt. Und ob es ein CString oder eine CStatic ist.

    Dann kann ich dir sagen, wie du das Datum, was du ja schon in eine Zeichenkette umwandeln kannst, da rein bekommst. 🙂

    ... dass du ein CStatic nicht für Eingaben nutzen kannst, weißt du schon? 😉



  • sorry sorry
    ne ich habe als Kategorie "Wert" und als Variablentyp COleDAteTime gewählt
    und wenn ich unter Kategorie "Control" auswählen würde ist der Variablentyp CEdit.
    Soll ich jetzt die Variable löchen und den Typ verändern?



  • Nein, du sollst das nicht löschen. Ich will ja nur wissen, was du schon hast. 🙂

    Also, wenn ich das richtig sehe, fehlt dir nur noch das

    UpdateData(FALSE); // sorry, das war mein ewiger Schreibfehler *schäm*
    

    was TaccoGo schon meinte.
    Das muss irgendwo unter die Zeile mit GetCurrentTime drin. (m_oledtAuswertedatum ist doch die Variable die du dazu erstellt hast?)

    Wenn das dann noch nicht geht, poste bitte mal wieder deinen Quelltext. Und zwar die komplette Funktion um die es sich hier die ganze Zeit dreht. 🙂



  • als wert und type CString und dan en CString im Bes. m_deinstring ersetzen.

    MFG TaccoGo



  • // Aktuelles Datum anzeigen
    	COleDateTime  m_oledtAuswertedatum = COleDateTime::GetCurrentTime(); 
    	???	= m_oledtAuswertedatum.Format("%d.%m.%Y");//m_deinstring ist der CString wo du das datum hin
    UpdataData(FALSE);
    

    und jetzt fehlt mit noch m_deinstring (???) , aber das hab ich immer noch nicht verstanden was ich da reinschreiben soll.

    erst [ cpp] QUELLTEXT [/ cpp] (ohne lerrzeichen (oder nimm einfach den codetagbutton)



  • nochmal

    BOOL Dilog::OnInitDialog() 
    {
    CDialog::OnInitDialog();
    
    // Aktuelles Datum anzeigen
    COleDateTime  m_oledtAuswertedatum = COleDateTime::GetCurrentTime(); 
    ???	= m_oledtAuswertedatum.Format("%d.%m.%Y");//m_deinstring ist der CString wo du das datum hin
    UpdataData(FALSE);
    
    return TRUE;  // return TRUE unless you set the focus to a control
    	        // EXCEPTION: OCX-Eigenschaftenseiten sollten FALSE zurückgeben
    
    }
    


  • UpdataData(FALSE);
    natürlich mit e



  • Okay, die Zeile mit dem Format musst du weglassen. Dann sieht das aber so aus, wie du es nicht wolltest.

    Wenn du die Variable statt als COleDataTime als CString anlegst, dann kannst du das machen. Oder du nimmst ein anderes Control. Es gibt nämlich ein extra Control um ein Datum oder eine Zeit ein bzw. auszugeben. (Das Symbol mit dem Rechteck und dem kleinen Kreis, bei mit das rechte in der dritten Zeile von unten in der Symbolleiste, der Tooltip zeigt "Datums-/Zeitauswahl".)

    Was möchtest du lieber?



  • ich möchte es eigentlich so: z.B 08.09.2004
    wenn ich's ändern will muss ich also nur das Control andern



  • Genau. Geh folgendermaßen vor:

    Du merkst dir den Namen deiner Variablen (m_oledtAuswertedatum) und den Typ (COleDateTime).
    Dann löscht du sie im Klassenassistenten.
    Dann löscht du das Control im Resourceditor.
    Dann suchst du das Control, was ich dir eben beschrieben habe und packst das an die Stelle wo es hin soll.
    Passe ggf. die Größe an. (Das Anzeigeformat ist ja schon okay.)
    Passe den Namen an. (Das IDC_irgendwas meine ich.)
    Mach den Assistenten auf und lege eine Wertvariable an. Das ist bei dem Control etwas "tricky", weil da wohl MS nicht aufgepasst hat. Gib ihr den Namen, den du dir gemerkt hast. Dann wähle als Kategorie "Value" aus, nun hast du als Typ COleDateTime.
    Fertig.

    Kompiliere und es sollte auf Anhieb funktionieren. 🙂



  • ja sollte , wenn ich nicht so blöd wäre 😉

    jetzt kommt
    error C2593: 'Operator =' ist mehrdeutig

    m_oledtAuswertedatum = 0;
    

    darauf zeigt der Pfeil

    Muss ich dann bei denen sachen nichts mehr verändern

    ADO_VARIABLE_LENGTH_ENTRY2( 4, adDate,	  m_dtAuswertedatum, sizeof(m_dtAuswertedatum), lAuswertedatumStatus, TRUE)
    
    // Ist das Feld OK?
    	if (adFldOK == pRs->lAuswertedatumStatus)
    	// Wert kopieren
    	m_oledtAuswertedatum = pRs->m_dtAuswertedatum;
    	else
    	// Andernfalls Wert auf 0 setzen
    	m_oledtAuswertedatum = 0L;
    


  • m_oledtAuswertedatum = 0;
    

    Ich vermute mal, das hier steht im Konstruktor. Das war auch für das komische Datum verantwortlich, was du gesehen hast. Wenn ich nicht völlig falsch liege, kannst du die Zeile löschen oder da statt der 0 COleDateTime::GetCurrentTime() hinschreiben. (Kommt immer darauf an, was du an der Stelle brauchst...)
    In deinem Code steht an anderer Stelle ein

    m_oledtAuswertedatum = 0L;
    

    Vielleicht geht das ja. (Sorry, ich kanns nicht testen.)

    Da sich nur das Control geändert hat und nicht die Variable mit der du arbeitest, solltest du sonst nichts ändern müssen.

    Im Prinzip hast du eine Hirarchie:
    1. Anzeige (das Control)
    2. Daten (m_oledtAuswertedatum)
    3. Datenbank (Das Recordset und der ganze ADO Kram)

    Du hast bei 1 was geändert, aber nicht bei 2 (du hast die Variable nur gelöscht, weil das einfacher war als ändern). Also musst du am Zusammenspiel 2-3 nichts ändern, weil das noch so ist wie vorher.


Anmelden zum Antworten