PDA

Vollständige Version anzeigen : Access im Netz: Recordset kennt gelöschte/neuanlagte Sätze andere WS nicht


BeckerThomas
13.05.2001, 21:39
Hallo,
ich habe mal wieder ein tolles Problem, was mir auch logisch und klar ist aber wie kann ich es umgehen.
Problem: Access im Neztwerk auf 8 Workstations
Wird auf einer anderen WS ein Satz gelöscht so erscheint mir dieser auf den anderen WS als #gelöscht# bzw. wird ein Satz neuangelegt so wird dieser nicht auf den anderen WS angezeigt bis ich mit Requery das Recordset neu aufbaue.
Gibt es da einen eleganten Weg dieses Problem zu lösen ohne die Performance zu stark zu belasten.
z. B. Timerevent, Msg, Recordcount vergleiche etc. ??????
Bin für jeden Tip dankbar !!!

TGA_Project
14.05.2001, 11:23
Ich würde es so machen:

Sobald eine WS einen Datensatz löscht, modifiziert oder hinzufügt, wird ein Merker in einer allgemeinen Tabelle gesetzt. Vor jeder Darstellung oder Aktion schauen die WS in dieser Tabelle, ob seit dem letzten Mal ein "Ereignis" hinzugekommen ist. Wenn ja, Refresh, ansonsten so lassen. Infos der allgemeinen Tabelle per Snapshot abholen. Pro Bereich eine public-Variable setzen, wo der Timestamp des letzten Kontrollgangs in die Tabelle gemacht wurde.

So eine Art MessageQueue wie sie auch Windows verwendet. Timer & Co führen immer Netzlast mit sich, da sie oft unnötig Daten abholen. Bei meinem Ansatz werden die Daten nur geholt, wenn sie auch verwendet werden sollen (sei es zum Anzeigen oder Bearbeiten).

Zu Empfehlen ist die Integration eines Reinigungslaufes der Tabelle, die sonst überschwappt. Beim Schliessen der DB am besten noch gleich die ganze Sache komprimieren.

Anstatt die Prüfung über einen Timestamp kannst Du auch einfach einen Autowert in der allgemeinen Tabelle verwenden und Dir nach dem Reinschauen den Autowert merken.

Zwar keine 100%ige Lösung, aber sollte doch ein wenig helfen.

------------------
Entstehende Heimat für Programmierer: www.devsource.de (http://www.devsource.de)

BeckerThomas
14.05.2001, 17:43
Vielen Dank,
ich versuche es mal !
Gruß Thomas