Korrekte Anzeige von Daten, die im Dialog nach der Ansicht verändert wurden
-
Die Daten die in der FormView eingeben werden, werden in einer Datenbank gespeichert und verwaltet.
AnzV=0; //Anzahl der Veranstaltungen auf 0 setzen (für Mehrfach-Berechnungen) CString TempPool, WertArt, WertHoerer, WertName, WertSemester, WertVorl; CDatabase db; db.OpenEx("DBQ=vorlesung.mdb;DRIVER=Microsoft Access Driver (*.mdb);FIL=MS Access for Microsoft Access;UID=Admin;PWD=;"); CRecordset rs( &db ); rs.Open( CRecordset::forwardOnly, _T( "SELECT * FROM Vorlesung " ) ); while( !rs.IsEOF() ) { rs.GetFieldValue("Name", WertName); rs.GetFieldValue("Art", WertArt); rs.GetFieldValue("Semester", WertSemester); rs.GetFieldValue("Pool", TempPool); rs.GetFieldValue("Vorlesender", WertVorl); rs.GetFieldValue("Zuhörer", WertHoerer); Veranstaltung[AnzV].Hoerer=WertHoerer; Veranstaltung[AnzV].Name=WertName; Veranstaltung[AnzV].Pool= (TempPool == "1"); if (WertSemester=="WS") Veranstaltung[AnzV].Semester=0; else Veranstaltung[AnzV].Semester=1; if (WertArt=="V") Veranstaltung[AnzV].Art="Vorlesung"; else Veranstaltung[AnzV].Art="Übung"; Veranstaltung[AnzV].Vorlesender=WertVorl; rs.MoveNext( ); AnzV++; } rs.close(); }So wird er in der CMyDocumentDoc aufgerufen und im CMyDocumentDoc erfolgt auch die Zuordnung der Daten die in der ScrollView angezeigt werden.
-
Martin Richter schrieb:
Das kann Dir niemand sagen, wenn Du uns nicht sagst wie Du die Daten verwaltest.
oder hattest du damit, was anderes gemeint????
-
Hier kann ich nur sehen, wie Du die Daten liest. Ich kann aber nicht sehen, warum evtl. Daten doppelt eingetragen werden.
-
Der Code mit dem das eingetragen wird, sieht so aus:
for (pDoc->i=0; pDoc->i<pDoc->AnzV; pDoc->i++) { if (pDoc->Veranstaltung[pDoc->i].Vorlesender==pDoc->m_dozent) { pDoc->zeit=pDoc->Veranstaltung[pDoc->i].Zeit; //Um Schreibarbeit zu ersparen if (pDoc->zeit>-1 && pDoc->zeit<6) { pDC->TextOut(285,-110-300*(pDoc->zeit),pDoc->Veranstaltung[pDoc->i].Name.Left(14)); pDC->TextOut(285,-160-300*(pDoc->zeit),pDoc->Veranstaltung[pDoc->i].Name.Mid(14,15)); pDC->TextOut(285,-210-300*(pDoc->zeit),pDoc->Veranstaltung[pDoc->i].Vorlesender); pDC->TextOut(300,-260-300*(pDoc->zeit),pDoc->Veranstaltung[pDoc->i].Art); pDC->TextOut(300,-310-300*(pDoc->zeit),pDoc->Veranstaltung[pDoc->i].Raum); }}}die pDoc->Veranstaltung[pDoc->i].Variable werden alle im CMyDocument zugeordnet.
Der Bereich ist mit MM_Lometric fixiert, damit es auch ohne große Umwandlung gedruckt werden kann.
-
Gibt es irgendeinen Befehl, bei dem das CDocument neu geladen wird??? Denn wenn ich das Projekt schließe und dann noch mal neu starte wird es richtig angezeigt.
Danke.
-
Warum is pDoc->i eine Laufzeit Variable im Dokument?
Das neue laden des Dokumentes fixed nicht Deinen Fehler! Es gleicht nur Deine Sympthome aus
-
Ich habe sie im CDokument definiert, weil ich sie an anderen Stellen auch benötige und sie nicht doppelt definieren wollte.
-
Bartnelke schrieb:
Ich habe sie im CDokument definiert, weil ich sie an anderen Stellen auch benötige und sie nicht doppelt definieren wollte.
Lerne ertsmal etwas C++. Was passiert nun, wenn Du in einer Schleife eine Funktion aufrufst, die genau diese Variable auch wieder benutzt. Chaos!
Merke: So etwas macht man nicht! Du sparst damit gar nichts. Die vergeuedest Speicher, und der Code ist langasmer.
-
Okay, das merke ich mir.
Nur nachdem ich das geändert habe, bekomme ich immer noch diesen Fehler.
Hast du noch ne Idee woran es liegen könnte???
-
An dem was ich bisher sehe, kann ich nicht burteilen wie der Transfer zwischen Daten und Anzeige bei Dir funktioniert.
Meine Kristallkugel geht immer noch nicht.Was hälst Du von Debuggen um heauszubekommen wann welche Daten angezeigt werden?