Eine Datenbank mit Access 2013 richtig entwickeln

Verknüpfung korrigieren

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Der Verknüpfungsassistent erzeugt leider intern immer wieder einen Fehler, der mit ein paar Zeilen VBA korrigiert werden muss.

Transkript

Eigendlich könnten wir uns an dieser Stelle entspannt zurücklegen und denken ja super alles läuft. Ich kann hier wechseln. Ich sehe immer die Daten in diesem Fall zu Testinghoff und alles ist gut. Aber Sie werden früher oder später auf einen Fehler stoßen. Wenn ich von Unternehmen komme und zu Mittarbeitern wechsele, kann ich mich vieleicht noch wundern warum hier mehr als Testinghoff angezeigt wird. Aber spätestens wenn ich von Umsätzen komme und auf Mitarbeitern gehe gibt es eine regelrechte Fehlermeldung. Und gucken Sie sich mal den Feldnamen hier an. Nach dem ok ist es hier natürlich leer. Von Unternehmen aus funktioniert es. Und das verweißt darauf, dass eigendlich die Programmierung noch gar nicht fertig ist. Nur Access mit einem man muss schon fast sagen hinterhältigem eingriff den Fehler verschleiert hat. Im Grunde hätte es gar nicht funktionieren düren. Und es hätte von Anfang an eine Fehlermeldung geben müssen. Sie erinnern sich vielleicht an die Eigenschaften verknüpfen von - verknüpfen nach. Also soweit es die Umsätze betrifft verknüpfe ich von dem Feld Umsatz UnternehmensID Referenz zu dem Feld UnternehmensID. Und ich kann schon einmal sagen zu dem Feld verknüpfen nach wird immer die UnternehmensID sein. Aber verknüpfen von ist in diesem Formular in diesem Unterformular UmsatzunternehmensID ref. Bei den Niederlassungen ist es niederlassungsunternehmenIDref. Bei den Unternehmen ist es UnternehmensID ohne ref und bei den Mitarbeitern ist es niederlassungsunternehmenIDref. Auch die , die beiden Niederlassungen über diese extra Verknüpfung. Kurz gesagt das verknüpfen von Feld wechselt vier mal. Das habe ich aber nirgends programmiert. Und der Access hat eine Menge Eigeninteligenz dabei und mir an vielen Stellen geholfen, sodass ich nicht einmal gemerkt habe, dass da ein Fehler drinnen ist. Je nach dem in welcher Rheienfolge Sie das anklicken klapt es. Und im Grunde klapt es überall dann, wo Sie von Tabelle zu Tabelle gehen. Umsätze war eine Tabelle und da ist es auch eine Tabelle. Da kann der Assistend eingreifen, die referenzielle Integrität angucken und alles ist super. Und es scheitert deswegen hier bei den Mittarbeitern, weil es dort keine Tabelle als Datenquelle gibt. Ich guck mal das Original einmal eben an. Für die Mittarbeiter habe ich ja speziell dieses Mittarbeiter von Unternehmen genommen in der Entwurfsansicht. Und wenn ich dort die Datenquelle hier mit Doppelklick das Eigenschaftenblatt einblenden. Wenn ich dort die Datenquelle angucke, dann sehen Sie schon ein select irgend etwas. Dahinter steckt eine Abfrage. Das scheint ganz harmlos, aber an der Stelle kommt der Assistent nicht mehr klar. Und deswegen müssen wir sowieso Nägel mit Köpfen machen. Nein da will ich nichts ändern und mit alt F11 in der Programmierung nachbessern nähmlich in diesem Überblick. Wenn ich wechsle. Nähmlich ich hier das sfm.Details.SourceObject, dann sollte ich eigendlich auch direckt hingehen und das verknüpfen von Feld ändern. Im englischen original heißt das Link child field bzw. link master fields. Es können ja auch mehrere sein Jetzt muss ich hier erst einmal so ein bischen schöner dafür sorgen, dass aufgeräumt wird. Dieses wird nähmlich immer wieder vorkommen. Das werde ich mit einem with ausklammern sozusagen. Der ganze Block lässt sich hier zusammenfassen. Da das end with. Und ich weis nicht, ob Sie das schon einmal so benutzt haben. Natürlich können Sie auch with schachteln. Das wird da genauso weggeblendet. Also überall, wo noch konkret me.sfm.details drinnen steht. Das wird im äußerem with zusammengefasst. Und jetzt sollte es sich erst einmal nicht unterscheiden, aber daf[r kann ich jetzt hier direckt sagen, dass die link child fields bitteschön im Falle der Mittarbeiter seien sollen ndluntIDRef. Das trifft zufällig auch auf die Niederlassungen zu. Hier bei den Umsätzen sind es statdessen die ums. Umsätze und IDRef. Und hier ist es ja diese eigenwillige Konstruktion, dass es gar keine Referenz ist, sondern Sie haben sozusagen einen Primärschlüssel, der auf dem Primärschlüssel verweißt. Wobei er in einem Fall als Fremdschlüssel genutzt wird. Soweit währe es erklärlcih. Alles super, alles kompilierbar, aber nicht lauffähig. Nähmlich wegen dieses Assistenten, der dann schon mitspielt. Ich muss es einmal öffne und es scheint ersst einmal ales in Ordnung zu sein, aber immer noch beim Umsatz zu mitarbeiterwechsel gibt es diese Fehlermeldung. Das ist schon wieder der Assistent. Das ist ein bischen schwierig zu finden. Tatsächlich müssen Sie ihn jetzt reinlegen, damit er nicht vollerInteligenz mitspielt und sagt ich kann das auch. Sie müssen dafür sorgen, dass vorher die Verknüpfung des letzten Zustandes aufgehoben wird, damit der Assistent ausgeschaltet ist, was nicht anders geht. Danach in der richtigen Rheienfolge wieder einschalten. Das bedeutet. Bevor ich irgend etwas umschalte, schalte ich erst einmal die Fehlerbehandlung aus, sonst meckert die nähmlich und sagt das geht jetzt aber nicht in der Rheienfolge. Dann mache ich das SourceObject leer. Das heißt das Formular ist vorübergehend frei von jedem Inhalt. Erst dann darf ich mit link child fields die bisherigen verknüpfen von Felder frei machen. Dann darf ich LinkMasterFields sicherheitshalber auf untID setzen. und dann kann ich die Fehlerbehandlung wieder ausschalten. Also On Error GoTo 0. Das werden Sie gleich ein bischen vieleicht sehen, dann müssen wir da Das Echo ausschalten, aber technisch ist alles in ordnung. Also ein neuer Anlauf Ich schließe das Formular. Öffne es wieder. Dieser Wechsel funktionierte ja sowieso problemlos. Sie sehen es jetzt inzwischen durch blitzen. Das werden wir noch wegschalten. Aber schwierig war je der wechsel von Umsätze zu Mitarbeiter. Der funktioniert jetzt. Ich hab zwischendurch für das Unterformular alles weggeschaltet, was sonst vom letzten Wechsel noch drinnen stand. Ich habe das SourceObject, das entschaltene Formular rausgenommen, verknüpfen von leer gemacht, verknüpfen nach gelöscht. Und dann erst wieder in der richtigen Rheienfolge eingefügt. Ein SourceObject, das wird dargestellt und die Verknüpfung. Das dauert ein bisschen, deswegen sehen Sie es kurz wechseln. Je nach dem, blitzt es einmal kurz, weil das sehr viel an Umstellungsarbeiten sind, deswegen sollten wir als nächstes hingehen und vorher einmal die Bildschirmaktualisierung ausschalten. Das ist mit DoCmd.Eco False. Und natürlichnicht vergessen ganz zum schluss wieder einzuschalten DoCMD.ECO und True Nach dem speichern werden Sie jetzt sehen, dass die Wechsel viel viel ruhiger kommen. Aber dieser Fehler ist hinterhältig. Das kann man nicht ander sagen, weil im Hintergrund ein eigendlich undokumentierter Assistent mitläuft und Ihnen die richtige Arbeit sozusagen abnimmt. Er will Ihnen zu seite tretet, aber in Wirklichkeit tritt er Ihnen in die Seite. Dass Sie also selber herauskriegen müssen, in welcher rheienfolge, (Das geht nähmlich nicht in jeder beliebigen Rheienfolge) die Ausgeschalteten wieder eingeschaltet werden dürfen. Hilft aber nichts, sonst hätten Sie nähmlich unzufriedene Benutzer. Und Sie haben gesehen der Aufwand ist nicht wirklich hoch. Jetzt könne Sie in beliebiger Rheienfolge und zwar auch die echten Verknüpfungen wieder einbauen, ohne dass ein Assistent wieder meckert.

Eine Datenbank mit Access 2013 richtig entwickeln

Sehen Sie einem erfahrenen Datenbankentwickler über die Schulter und lernen Sie dabei, wie Sie in Access 2013 optimale und perfekt skalierbare Datenbank anlegen und pflegen.

5 Std. 18 min (53 Videos)
Derzeit sind keine Feedbacks vorhanden...

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!