Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Schnelle Hash-Berechnung mit Access 2010

102 views
Skip to first unread message

Elisabeth Reuter

unread,
Jul 16, 2011, 4:10:00 AM7/16/11
to
Hallo,

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

Peter Doering

unread,
Jul 17, 2011, 6:35:07 AM7/17/11
to
Hallo,

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

Elisabeth Reuter

unread,
Jul 17, 2011, 9:44:27 AM7/17/11
to
> 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.

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

Karl Donaubauer

unread,
Jul 17, 2011, 11:11:19 AM7/17/11
to

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.

Elisabeth Reuter

unread,
Jul 17, 2011, 2:09:18 PM7/17/11
to
> 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
>

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

Henry Habermacher

unread,
Jul 19, 2011, 12:38:23 AM7/19/11
to
Hallo 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

0 new messages