CRecordset mit INNER JOIN nur readonly?
-
hallo, ich öffne eine Datenbanktabelle über ein CRecordset ganz normal mit ::Open. Im SQL-String verwende ich dabei eine INNER JOIN Klausel. Dabei entsteht das Problem, das der die Tabelle nur als readonly öffnet, ich kann also keine Einträge bearbeiten. Der Open-Befehl sieht ungefähr so aus:
/*CRecordset*/ table->Open(CRecordset::dynaset, _T("SELECT * FROM Tabelle INNER JOIN ON...");
Kann man dieses readonly irgendwie ändern, oder gibts da keine möglichkeit?
vielen dank schonmal,
grüsse,
daniel
-
wenn du 2 tabellen joinst bekommst du ein temporäres ergebnis, je nach implementierung wird eine temporäre tabelle erstellt. diese kannst normalerweise nie ändern, du wirst spezielle update kommandos für die jeweilig beteiligte tabelle brauchen
-
Ich hatte dieses Problem auch schon mal.
Beholfen hab ich mir damit, dass ich in der zu ändernden Tabelle ein Dummy-Feld (Typ BOOL) eingefügt habe und in SQL ein Update auf die Abfrage gemacht hab. Anschließend hab ich das Recordset wieder mit dem Dummy als Filter neu aufgebaut:m_pProgrammSet->m_pDatabase->ExecuteSQL("update programme set dummy=0 where dummy = 1"); m_pProgrammSet->m_pDatabase->ExecuteSQL("update p set p.dummy=1 from programme p, zuordnung z "+Dia.m_SQLWhere); m_pProgrammSet->m_strFilter = "dummy = 1"; m_pProgrammSet->Requery();
Vielleicht ist dies in etwa das, was du suchst?
-
das könnte funktionieren, werds auf jeden fall mal ausprobieren, vielen dank..