Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Tabellen auf SQL Server automatisch aktualisieren

Begonnen von Rinci, Oktober 08, 2020, 11:16:15

⏪ vorheriges - nächstes ⏩

Rinci

Tag zusammen,
ich habe ein Problem. Ich habe hier eine Accessdatenbank und ein Tool Management System mit MS SQL Datenbank. Meine Aufgabe ist nun das wenn es in den Tabellen ein Änderung gibt, diese in den Tabellen des TMS zu Protokolieren. Grundsätzlich hatte ich vor es mit den Events (Nach Aktualisierung etc.) und einem VBA Script zu lösen. Aber als absoluter Neuling was Access angeht komme ich überhaupt nicht voran. Das Script ist nicht das Problem. Aber ich bekomme es nicht hin das das Script nach der Aktualisierung einer Tabelle/Zeile ausführen zu lassen. Soweit ich recherchieren konnte soll das auch nicht gehen. Nun suche ich nach einem Weg wie das trotzdem gehen könnte. Das einzige wo ich denke das funktioniert ist wenn ich ALLE Formulare ändere. Wenn jemand einen andern kürzeren Weg weis, währe ich sehr dankbar.

Grüße Rinci

DF6GL

#1
Hallo,

habe ich Dir nicht schon per Email Möglichkeiten aufgezeigt?
Hier nochmal:
Feld "ChandeDat" mitführen und bei Änderung oder Neuanlage eines DS (in Formularen!) auf das akt. Datum setzen. Per Makro ("AutoExport") eine Public-Function ausführen, die den Export-Code enthält. Dieser Code selektiert die DS mit  gesetztem ChandeDat-Feld, exportiert in eine cvs-Datei und setzt das ChangeDat-Feld auf NULL zurück.



ZitatDas einzige wo ich denke das funktioniert ist wenn ich ALLE Formulare ändere.

Das ist wohl so, (siehe oben) und wird nicht abgekürzt werden können. Was hindert Dich dadran?

Access-Tabelle haben in den neueren Access-Versionen einen "Datentrigger", mit dem aber nur marginal DS-bezogenene Berechnungen/Aktionen durchgeführt werden können.
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Rinci

Hi,

danke für die schnelle Antwort. Aber das kann nicht ich gewesen sein, denn ich habe mich direkt vor dem Post erst angemeldet (außer du besitzt den einen bestimmten Delorean und hast seit 2015? ein Hoverboard  ;D ). Grundsätzlich kann ich das machen ja ist nur ein Aufwand den ich gerne eingespart hätte. Soweit mir mitgeteilt wurde sind das elendig viele Formulare und ich soll das so "kostengünstig" wie möglich machen. Da ich schon seit zwei Tagen probiere dachte ich, da es nur an der einen stelle hakt, das ich was grundsätzliches falsch mache. Sowas wie Access Tabelle mit SQL Tabelle Verknüpfen und Verweise setzen welches Feld welches ist. So das Access es mit aktualisieren oder neue Eintragen kann.

Grüße

DF6GL

Hallo,

naja, ist schon ein recht seltener Zufall, das dass das selbe Problem am selben Tag bei zwei verschiedenen Personen entsteht.


ZitatDa ich schon seit zwei Tagen probiere

und da weißt Du noch nicht, um wie viele Formulare es geht?

Sorry, wundert mich halt.



ZitatSowas wie Access Tabelle mit SQL Tabelle Verknüpfen und Verweise setzen welches Feld welches ist. So das Access es mit aktualisieren oder neue Eintragen kann.

Ich versteh das ganze Problem jetzt nicht mehr richtig...

ZitatIch habe hier eine Accessdatenbank und ein Tool Management System mit MS SQL Datenbank. Meine Aufgabe ist nun das wenn es in den Tabellen ein Änderung gibt, diese in den Tabellen des TMS zu protokolieren.

Meine Interpretation:


Es gibt eine Access-DB (mit Tabellen). Sobald (Daten-)Änderungen an diesen Tabellen entstehen oder neue DS eingeben werden (über Formulare) , sollen diese Datenänderungen in einer Historientabelle im TMS-System (MSSQL-Server) nachvollziehbar erfasst werden.

Wenn so, dann heißt das Stichwort "Audittrail" (suche mal hierfür unter dbwiki.net).

Dazu müssen alle Formulare, die für solche Datenänderungen in Frage kommen, im Form_BeforeUpdate()-Ereignis die Audittrail-Funktion aufrufen und ausführen.

Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

ebs17

Zitatich soll das so "kostengünstig" wie möglich machen
... und am Ende soll es auch noch sicher funktionieren?

Wenn man nicht ausschließen kann, dass Tabelleneinträge auch per Aktionsabfragen, Recordsetaktionen und Importe erfolgen, nützt einem die Formularüberwachung herzlich wenig.

Wenn man schon einen SQL Server bei der Hand hat, dann kann man die Tabellen der Accessanwendung dahinein verschieben - der Begriff Backend sollte bekannt sein. Innerhalb des SQL Servers kannst Du Trigger programmieren, so dass das Loggen sich selbst übernimmt.

Zitatals absoluter Neuling was Access angeht
Dann bist Du auch umfassend von dieser Sorge befreit.
Mit freundlichem Glück Auf!

Eberhard

Rinci

Hallo und danke für die Infos,

ja ich wusste bis grad eben nicht wie viele Forms es gibt weil der Kollege Vorort was und mir noch keine Daten geben konnte. Für mich hieß es "Es sind VIELE Formen und die alle anzupassen ist zu Aufwendig". Jetzt habe ich die Zugriff auf die Datenbank und sehe es sind um die 500 Formulare. Wo ich denke das nicht alle angepasst werden müssen. Wir werde sehen wies ausgeht. Habe gestern Abend gesehen das es bei den Formularen ein nach Update Event gibt. Denke das erleichtert mir die Arbeit sehr.

@ebs17
Was das FE/BE angeht hab ich auch schon vorgeschlagen. Kunde sagt aber nö. Es ist so wie ich des hier sehe eine Datenbank die man von vornherein nicht mit Access hätte erstellen sollen, aber die sieht aus als währe sie "gewachsen" aber da kann man eh nichts mehr dran ändern also warum sich darüber ärgern.

@DF6GL Deine Interpretation soweit ist richtig, aber alles was ich bisher in der Richtung gesehen habe speichert den alten Stand in der DB und überschreibt den aktuellen. Ich benötige aber die Änderungen in der SQL DB oder gleich den neuen Satz. Aber ich werde mich noch weiter in der Richtung Audittrail informieren.

Durch das vorhin genannte update Event in den Formularen haben wir uns entschieden das wir es in der Richtung machen wollen, also habe ich jetzt ne Menge Arbeit vor mir *seufz*.

Vielen dank für eure Hilfe und Tipps
(bin nun für erste bis das erste Warpantrieb erfunden wird beschäftigt :) )

Grüße und noch einen schönen Tag
Rinci



ebs17

#6
ZitatKunde sagt aber nö.
Da hat dieser hoffentlich viel Zeit und Geld sowie die nötige Fehlertoleranz, um die gewünschte Umständlichkeit in Gang bringen lassen zu können.
(Wer nicht hören will, muss fühlen.)

Ein AuditTrail auf Tabellenebene ist bspw. hier nachzuvollziehen:    Demo-Datenbank - Änderungen protokollieren per Datenmakro
Da fehlen aber Ereignisse und Möglichkeiten, um Angaben an den SQL Server weiterzugeben. Das könnte man ggf. durch einen Timer veranlasste Prozeduren ausgleichen.
Mit freundlichem Glück Auf!

Eberhard