Aktuelles Datum anzeigen
-
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 mehrdeutigm_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 einm_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.
-
Dilog::Dilog(CWnd* pParent /*=NULL*/) : CDialog(Dilog::IDD, pParent) { //{{AFX_DATA_INIT(Dilog) m_oledtAuswertedatum = COleDateTime::GetCurrentTime(); //}}AFX_DATA_INIT }
da drin steht's
wenn ich das
m_oledtAuswertedatum = COleDateTime::GetCurrentTime();
lösche ,sehe ich das datum 01.01.1970
mmmh
-
Okay, kurzer Grundlagenexkurs (alles weitere bitte in einem guten C++ Buch nachlesen):
Die Funktionen, die genauso heißen wie die Klasse selbst, heißen Konstruktor. Sie sind der Ort, wo die Membervariablen der Klasse initialisiert werden müssen.
Bei Variablen, die einen Standard-Konstruktor haben, ist die Initialisierung nicht Pflicht, sie erhalten einen Wert.COleDateTime ist eine Klasse (im Gegensatz zu z.B. int) und hat auch einen Standardkonstruktor (das is der ohne Parameter - guck zu Details in ein Buch). In diesem Standardkonstruktor wird erstmal 0 als Inhalt genommen - damit nicht totaler Murks drin steht.
Soweit zu OOP. Nun zu COleDataTime und dem Datum "01.01.1970" Dieses Datum IST 0. CTime und COleDateTime haben dieses Datum als "0". Wann immer du dieses Datum siehst und nicht weiß, woher es kommt - dann hast du vergessen, deine Variable zu initialisieren und der Standardkonstruktor hat seine Arbeit getan.
Willst du da also was anderes als 01.01.1970 haben, musst du ihm schon was geben.
...z.B. die aktuelle Zeit, wie du schon hattest oder auch was anderes, schau in die MSDN (Link auf der Hauptseite vom MFC Forum), da gibt es noch einige Varianten.Okay?
-
BOOL Dilog::OnInitDialog() { CDialog::OnInitDialog(); // Aktuelles Datum anzeigen COleDateTime m_oledtAuswertedatum = COleDateTime::GetCurrentTime(); UpdateData(FALSE); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX-Eigenschaftenseiten sollten FALSE zurückgeben }
das müsste doch jetzt stimmen oder auch nicht
weiß nur nicht das zwischen Update und COle stehen muss
-
Da muss nix stehen. Die Zeile, die da mal stand ist ja weggefallen als du das Control geändert hast.
Funktioniert es denn jetzt?
Ob das alles richtig ist, entscheidest doch DU. Wenn das Programm macht, was du willst, DANN ist alles richtig.
-
"Wenn das Programm macht, was du willst, DANN ist alles richtig"
jaaa, schön wärs.....O Fehler 0 Warnungen aber da muss ja nichts heißen, (das hab ich schon gelernt
)
bin auf der Suche, wie ich das aktuelle Datum anzeigen kann
was muss ich denn in MSDN eingeben..?
-
Das aktuelle Datum ist eigentlich das GetCurrentTime.
In die MSDN gibst du einfach die Klasse ein, zu der du was wissen willst. Der beste Startpunkt ist dann das Kapitel class members, weil das eine Übersicht fast aller Funktionen ist. (Es gibt einige wenige undokumentierte, aber das wirst du dann schon noch fluchend feststellen...)
Oder du nimmst einen Funktionsnamen, von dem du was wissen willst und achtest dann darauf, falls das eine Memberfunktion einer Klasse ist, dass du die richtige anschaust. Denk an die zwei Varianten von Format...
Ansonsten achte bei der MSDN darauf, dass du die Doku zur richten Sprache liest - da steht zu ALLEN Visual Sprachen was drin, zu Office und und und. Die Informationsmenge ist erstmal enorm, aber wenn du durchfindest hast du ein sehr mächtiges Nachschlagewerk zur Hand.
Wenn das jetzt immer noch nicht geht, bin ich ratlos, das sollte jetzt gehen.
-
ja ne, ich meinte dass es mir das richtig Datum anzeigt...
es muss einfach klappen, sonst biste mir sauer
-
au, ich hab ausversehen meine Klasse CCustomRss genannt anstatt CCustomRs
kann man das irgendwie ändern?
-
Weißte was? Du testet da bis morgen ne Runde rum und liest MSDN. Vielleicht klappt es ja.
Wenn nicht: Schick mir die Datenbank und das Projekt mal zu. estartu_de@yahoo.com
Ich werde dann so gegen Mittag mal reingucken ob ich was finde. Dann muss ich nicht immer raten.
PS: Ich bin dir nicht böse, ich kann nur nicht glauben, dass alles so anders ist, sobald man ADO verwendet.
-
Natürlich kannst du das ändern:
Suchen in Dateien nach CCustomRss und ALLE Vorkommen korrigieren.
-
ok werd ich machen, ich wills heut noch hinbekommen
danke für deine Angebot, ist lieb von dirdanke dir schon mal dafür dass du mir immer so schnell geantwortest hast, und dir Zeit dafür genommen hast
grüße aus Stgt
-
Mir is die Ablenkung immer wieder lieb, dann fress ich mich hier nicht an meinem Problem fest...
Irgendwie muss ich das kompensieren, dass ich nicht mehr zum "Nachdenken" auf den Balkon muss.
-
hallo estartu_de
ich würde dir gerne mal mein Programm schicken,
muss ich dann mein ganzen Ordner (ca 25 MB) schicken oder nur die .dsw Datei?
dann kannste es ja mal anschauen wenn du Zeit und Lust hast
danke
-
Im Menü "Erstellen" findest du den Befehl "Bereinigen" - der löscht alle temporären Dateien, das verkleinert schon mal enorm.
Nur das dsw reicht nicht, dann würden mir ja alle Quelltexte fehlen.
Und denk bitte an die Datenbank, also die mdb Datei.