2 Fragen zu DB mit CRecordSet
-
Hallo
1. Ich habe eine mehrspaltige Liste, die ich komplett mit den Daten aus einer Access-Datenbank fülle. Jede Position hat 6 Einträge(also 6 Spalten).
Nachdem ich die Liste jetzt komplett gefüllt habe, habe ich ja keinen Bezug mehr von der Liste zur Datenbank; also habe ich in der Liste eine 7.Spalte eingerichtet, wo ich die ID des entprechenden Eintrages in der Datenbank hinterlegt habe.
d.h. z.B. der Eintrag in der 10.Reihe der Liste, gehört zum Datensatz mit der ID 10 in der DB. Wird der Text in der Liste jetzt geändert, frage ich ab, welche Zahl in der Liste in der 7.Spalte steht, und setze die DB mit ...->SetAbsolutePosition(10) auf den Eintrag, verändere und speichere dann.
Das funktioniert leider nur solange, wie´s auch Einträge 1-9 gibt. D.h. hat der erste Eintrag in der DB die ID 3, lande ich mit SetAbsolutePosition(10) nicht beim Eintrag mit der ID 10, sondern bei dem mit der ID 13
Logisch ist das irgentwo schon; aber wie soll ich das lösen?
Ich müsste ja die ganze DB durchsuchen, um zu sehen, welcher Eintrag jetzt die ID 10 hat (da dieser ja nicht mehr der 10.Eintrag ist)
Es müsste sowas wie "GeheZuEintragMitID 10" geben.2. Wie händelt ihr die DB, damit mehrere Benutzer gleichzeitig darauf zugreifen können? Also z.B. DB öffnen, auslesen und die Liste füllen, dann wieder schließen, und z.B. vor dem Ändern wieder öffnen, ändern und direkt wieder schließen, oder reicht das, am Anfang des Programmes einmal öffnen, und beim Beenden wieder schließen?
-
Es müsste sowas wie "GeheZuEintragMitID 10" geben.
Bau es dir selber.

Ich hab so eine Funktion in meiner Basisklasse.Und statt der Zusatzspalte in der Anzeige kannst du SetItemData/GetItemData nutzen.

-
Hi
ok. Zu SetItemData: Ich wusste doch, das ich schon mal was gehört habe, das man einem Listeneintrag einen "unsichtbaren" Wert zuordnen kann.