ich würde gerne wissen, ob es bei Access eine eingebaute Hash-Funktion gibt.
Ich habe jetzt eine SHA1-Klasse aus dem Internet ausprobiert, aber diese
Hash-Funktion ist doch recht langsam.
Mit der Hash-Funktion erkenne ich, ob sich eine Tabellenzeile seit dem
letzten Aufruf verändert hat. Nachdem die Datenbank viele Einträge hat,
dauert das entsprechend lange.
Deshalb würde ich gerne wissen, ob es da eine schnellere Alternative gibt -
am besten wäre natürlich eine in Access 2010 eingebaute Funktion.
Bessere Grüße
Elisabeth
Elisabeth Reuter wrote:
Fuer das, was du beschreibst, brauchst du keine Hash-Calculation. Sollte
dein Formular nach Standardeinstellung auf Dynaset stehen und der Datensatz
z.B. von einem anderen Benutzer seit Aufruf geaendert worden sein, wird er
bei dir im Formular automatisch aktualisiert, vorausgesetzt, das Backend
ist ebenfalls Access. Falls das BE ein SQL-Server oder anderes DBMS ist,
wird zwar nicht automatisch aktualisiert, aber der Provider (z.B. ODBC)
schickt dir eine Meldung, /dass/ eine anderweitige Aktualisierung vorliegt.
Danach wird ein Refresh gemacht.
Gruss - Peter
--
Mitglied im http://www.dbdev.org
FAQ: http://www.donkarl.com
Ich brauche das, um zwei Datenbanken zu vergleichen und zu synchronisieren.
Als Alternative könnte ich mir zwar vorstellen, dass ich jeweils ein
Änderungsdatum reinschreibe, aber das hat den Nachteil, dass Änderungen an
der Datenbank, die das jeweilige Formular nicht verwendet haben, nicht
berücksichtigt werden. Mit Hash-Funktion werden aber alle geänderten Daten
erkannt.
Oder gibt es auf Tabellenebene eine Möglichkeit, das Änderungsdatum
mitzuspeichern? Beim Erstellungsdatum ist das ja kein Problem, indem man ein
=now() als Standardwert in die Tabelle speichert.
Nachdem ich mit dem Änderungsdatum keine zufrieden stellende Lösung gefunden
habe, habe ich das ganze eben über einen Hash-Wert gelöst. Und wie gesagt
ist der SHA1-Algorithmus den ich derzeti verwende nicht sehr flott.
Eigentlich habe ich erwartet, dass es Hash-Algorithmen nativ in VBA gibt,
musste aber enttäuscht aufgeben.
Beste Grüße
Elisabeth
Joo, die gibt es in A10, falls du eine A10-accdb verwendest.
Nennt sich Datenmakro und funktioniert analog zu Triggern auf
Server-DBMS-Systemen. Seltsamerweise war es gar nicht
einfach, eine Webseite mit einem simplen Now-Beispiel zu finden.
Schließlich fand ich doch noch:
http://www.trainsignaltraining.com/access-2010-data-macros
--
Servus
Karl
*********
Access-FAQ: http://www.donkarl.com + Info zur AEK14
Access-Entwickler-Konferenz, Nürnberg 8/9.10. Hannover 22/23.10.
Das Backend ist zwar noch in Version A00 aber das lässt sich ja recht
einfach ändern. Ich habe zwar auch im Internet gesucht, aber kein bei weitem
keine so geniale Lösung gefunden. Vielen Dank.
Beste Grüße
Elisabeth
Elisabeth Reuter wrote:
> Oder gibt es auf Tabellenebene eine Möglichkeit, das Änderungsdatum
> mitzuspeichern? Beim Erstellungsdatum ist das ja kein Problem, indem man
> ein =now() als Standardwert in die Tabelle speichert.
>
> Nachdem ich mit dem Änderungsdatum keine zufrieden stellende Lösung
> gefunden habe, habe ich das ganze eben über einen Hash-Wert gelöst. Und
> wie gesagt ist der SHA1-Algorithmus den ich derzeti verwende nicht sehr
> flott. Eigentlich habe ich erwartet, dass es Hash-Algorithmen nativ in
> VBA gibt, musste aber enttäuscht aufgeben.
Du setzt doch A2010 ein. Das kennt Trigger. Wenn Du Dir je Tabelle ein Feld
anlegst (LastChanged DATETIME), dann kannst Du in diesem Feld ein Trigger
definieren, der jedesmal, wenn der Datensatz gespeichert wird, Now() in das
Feld wegschreibt. Das sollte eigentlich doch genügen, oder?
Gruss
Henry