Dynamisches CRecordset::AddNew()?
-
Und mit CRecordset gehts garni???
Hab nämlich schon ziemlich viel Code damit geschrieben...Gruß Lutz
-
Für die, dies interessiert.
Hab es nun so gelöst, dass ich OnTimer() implementiert habe und 1xmal/s aufrufe... Dann zähle ich per "SELECT COUNT"-Abfrage die Datensätze der Tabelle und vergleiche auf Änderung. Wenn sich die Anzahl ändert, führe ich ein Requery() aus und merke mir die id des Primärschlüssels. Mittel While-Schleife setze ich meinen Cursor wieder auf diese id.
Scheint ganz gut soweit zu funktionieren.
Gruß Lutz
-
Der Abschnitt, wie SELECT COUNT funktioniert, der würde mich mal interessieren.
-
wieso?
-
Weil ich es mal versucht habe und es nie funktioniert hat.
-
"SELECT count(*) FROM table"
-
Inwiefern nicht? Als ich erstell nur ein temporäres Recordset mit "SELECT COUNT (*) FROM Table"... Dann lese ich den Wert des "Anzahl"-Feldes aus dem Recordset aus...
-
Also, den SQL Befehl weiß ich auch, aber die Umsetzung mit CRecordset hapert eben.
Ich habe bisher nur mit fest an eine Tabelle gebundenen Sets gearbeitet und dachte, du kanst kurz zeigen, wie das geht.
Wenn der Code geheim ist, dann eben nicht.
-
Der Code ist nicht geheim... Poste den Code heut abend mal rein.. der ist nämlich zuhause auf meinem Rechnern. Wird aber erst gegen Mitternacht rum sein.
Gruß Lutz
-
Das ist nett, danke.
-
Hi! Habs doch noch mal nach Hause geschafft...
Hier eine Funktion, welche die Anzahl der Datensätze einer Tabelle zurückgibt, im Namespace db. Das Feld id ist der Primärschlüssel und das erste Feld/Attribut in der Tabelle -> deshalb GetFieldValue(short(0),anz).
CDBVariant::m_lVal ist dabei vom Datentyp long int.int db::getRecordCount(CString table) { CRecordset rec(&myDatabase); CString query; query.Format("SELECT COUNT (id) from %s",table); rec.Open(CRecordset::dynaset,_T(query)); CDBVariant anz; rec.GetFieldValue((short)0,anz); return anz.m_lVal; }
Gruß Lutz
-
Danke, ich werde das Morgen mal ausprobieren.