Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

Eine Datenbank mit Access 2013 richtig entwickeln

Formularköpfe anpassen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Mit ein paar Zeilen VBA-Code lässt sich ein überflüssiges Kopfzeilen-Element ausblenden und dann die Spaltenüberschriften nach oben schieben.

Transkript

Das Überblickformular für die Unternehmen ist jetzt noch nicht perfekt, aber Sie sehen vieleicht schon die Richtung, wo es hingehen soll. Es gibt oben sozusagen den Hauptdatensatz. Der wählt das Unternehmen aus und dazu sehe ich beliebig viele Informationen. Allerdings sind sie noch nicht wirklich perfekt. Hier bei den drei Endlosformularen habe ich einfach die Kopfbereiche weggeschalter. Den Fromularkopf. Das fehlt im Unternehmen noch. Das lässt sich schnell ergänzen. Das haben wir gleich mit einer Zeile gemacht. Aber es ist im Grunde schade, dass hier der gesamte Fromularkopf weg ist. Es würde reichen, wenn das Kopfelement im Formularkopf dieses Unterformular, was es hier auch gibt. Dieser Bereich nähmlich fehlen würde. Das möchte ich jetzt nachreichen. Fangen wir vieleicht erst einmal an mit den Unternehmensdetails hier. Da werden wir glech feststellen, dass der Name nicht stimmt. Wenn ich also mit Alt F11 nach dem selben Muster erst einmal hingehen will, und dann me.sfmunternehmen suche, werden Sie sehen, das existiert noch nicht. Also, alt F11 wieder zurück Hier in den Entwurf. Das geht übrigens da oben immer am einfachsten auf der Registerleiste in die Entwurfseinsicht. Können Sie auch da hinten machen, aber auf dem Formular selber gibt es nicht mehr viele Bereiche wo das noch funktioniert, vor allem nicht hier im Kopf. Also in die Entwurfsansicht. Und bei den Unternehmen wenn ich das jetzt hier markiert habe. So. Dann sehen Sie da steht noch so ein merkwürdiger Name. Der muss saubererweise natürlich sfmUnternehmen heißen. Und jetzt verhält er sich nach dem glecihen Muster. Fals Sie sich gerade darüber wundern, dass hier zwei mal Unternehmens ID steht. Es ist tatsächlich im Grunde der gleiche Datensatz. Hier oben die Unternehmens ID, hier unten auch. Zwar aus unterschiedlichen Formularen, aber anders als sonst gibt es hier keinen Fremdschlüssel, irgend eine Unternehmens ID Referenz, sondern es ist der selbe Primärschlüssel. Aber es spricht nichts dagegen zweimal den gleichen Datensatz aufeinander verweisen zu lassen. Es ist ja gerade der Trick, dass hier oben nur eine Minimalanzeige existiert, die auch nicht änderbar bleiben wird und hier unten der komplete Datensatz ist. Das soll nähmlich da oben Platz sparen. Jetzt ist es umbenannt und wir können mit alt F11 da drüben weiterschreiben. SfmUnt und dann Steuerung leertaste. Jetzt gibt es das Ding auch. Form.Formularkopf.visible= false Jetzt muss ich, weil es im form load steht. Außerdem speichern, natürlich das ganze nocheinmal neu starten. Also, sicherhaltshalber einmal zu machen, wieder öffnen. Und jetzt sehen Sie auch beim Unternehmen fehlt der komplette Formularkopf. So weit so gut, aber, auf dauer möchte ich natürlich mehr können. Hier zum Beispiel darf gern das eingebettete Unterformular im Formularkopf verschwinden, aber nicht der gesamte Formularkopf selber. Deswegen werde ich jetzt mit alt F11 hier im Code nachbessern. Und zwar nur für die Mittarbeitzer exemplarisch. Die hole ich mir also da nach unten. langfristig wird es natürlich für alle funktionieren. Und Sie ahnen schon, wenn ich einrücke. Da kommt noch etwas drum herum. Es wird langfristig für alle funktionieren, aber dafür muss ich noch mehr umbauen. Und dann wird es wieder plötzlich einfacher. Nicht dass Sie denken ich mache das jetzt immer komplizierter. Es fängt erst einmal damit an, dass ich so eine with Struktur drum herum mache. Also, bis hier kann ich sozusagen abschneiden. und da kommen die Spezialitäten. Und jetzt frage ich einfach mal dieses Unterformular, wie viele Elemente in seinem Formularkopf enthalten sind. Also, if. formularkopf.controls. wie für Steuerelemente .count Wenn das eins ist, dann kann ich den gesamten Formularkopf unsichtbar machen. Das bedeutet im Mittarbeiter unter Formular gibt es ein Formularkopf und der hat als Anzahl von seinen Steuerelementen genau eines. Dann weis ich, das ist mein eingebettetes Unterformular für den Kopf. Wo also die Überschrift drinn steht, die ich nicht haben will. Andernfalls befinden sich da außerdem noch Überschriften für die Endlosformulare nähmlich. Dann kann ich nur zurückhaltender aggieren sage nicht den ganzen Formularkopf weg, sondern davon nur das sfm Kopf Element. .Visible=False machen. Bischen mühsam. False natürlich mit L, dann wird es auch korrekt erkannt. Ein bischen mühsam ist es, dass wir hier im Blindflug arbeiten müssen. Wir müssen immer mitdenken, ich bin ich bin im eingebetteten Formular. Das gesamte Unterformular und dessen gesamten Formularkopf mache ich weg. Hier mache ich nur das darin wieder eingebettete Steuerelement sfmKopf weg. Und werden feststellen, dass währe schön, wenn dann der restliche Innhalt nachrutscht, wenn ich den Formularkopf ganz wegnehme, wird er auch auf Null reduziert und der Rest rutscht nach nach oben. Das ist hier leider nicht der Fall, werden wir gleich feststellen. Aber bis dahin sollten wir wenigsten prüfen, dass es funktioniert. Also, Debuggen-Kompiliercheck. Das ist schon einmal einen Versuch wert. Jetzt werde ich es einmal schließen und öffnen. Na gucken wir einmal bei den Mittarbeitern. Hat wunderbar gecklapt. Das eingebettete Unterformular sfmKopf ist Visible´False. Unsichtbar. Das heißt aber nicht, dass deswegen die alle nach oben rutschen. Noch viel schlimmer, wenn ich versuche die nach oben zu schieben und die Gesamthöhe entsprechend zu reduzieren, dann sagt mir Access nähmlich soger geht gar nicht. Da liegt zwar noch etwas, das ist unsichtbar, aber das braucht Platz. Ich muss also von diesem Ding auch noch die Höhe reduzieren. Also, mit alt F11 direckt als Zweiter hinterher .sfmKopf.height = 0 Das sehen Sie nicht. Das reduziert oder bewegt ja die übrigen Elemente nicht. Für die muss ich jetzt einzeln hingehen und anfangen was zu machen. Zum Beispiel muss ich jetzt mit einer Schleife alle durchlaufen und prüfen, ob sie ein Label sind. Und sie dann entsprechend verschieben. Dafür brauche ich eine Hilfsvariable. Nähmlich um diese verschiedenen Controls bearbeiten zu können. Das ist eine sehr allgemeine controle Variable, deswegen schreibe ich dim ctlDIese As Control. Das heißt jedes beliebige Control passt da rein. Und natürlich könnte ich Pech haben, dass auf so einem Unterformular beispielsweise ein Button eine Schaltfläche liegt. Oder ein Image, oder sonst etwas. Deswegen muss ich das erst einmal prüfen. Grundsätzlich kann ich aber erst einmal eine Schleife machen vor. for each ctlDiese diese Dieses ist schöner. Das Control also. vor each Control. Dieses in. Und jetzt muss ich mir die passende Auflistung suchen. Also, von dem Formular, in. Formularkopf.controls Auflistung. Next nicht vergessen. Jetzt prüfe ich sicherhaltshalber erst einmal, ob das Control, was ich gerade angucke auch wenigstens ein Beschriftungsfeld, ein Label ist. Eines ist es nähmlich garantiert nicht, das sfmKopf mag unsichtbar sein und auf höhe Null, aber es ist ein Controler, und es ist da. Also, da gibt es dieses schöne ift typeof. Ganz selten benutzt. ctlDieses is Achtung das ist ein Vergleich. Label. Wenn es ein Label ist End If, nur dann mache ich was. Und zwar sorge ich einfach dafür, dass dessen Top eigenschaft seine obere Position also .top=0 ist. Dass ein ctlDieses die Top Eigenschaft nicht kennt. Jetzt habe ich versehentlich auch noch den falschen genommen. Ist in Ordnung, denn das Control Dieses ist so allgemein, dass es nicht die speziellen Besonderheiten eines Labels kennt. Ich könnte es jetzt noch umkopieren auf ein Labe Control, aber das wird unnötig kompliziert. Jetzt habe ich einfach die obere Kante dieses Controls nach oben an die Null position geschoben. Wenn ich ein bischen Abstand haben will schreibe ich zwei oder Drei rein. Jetzt gucken wir einmal, ob es funktioniert. Erst einmal. ob es syntaktisch richtig ist. Dann speichern. Und mit alt F11 einmal neu starten. Dann werden wir schon fast zufrieden sein. Also bei den Mittarbeitern. Die sitzen alle am oberen Rand. Super. Aber der Formularkopf, dem ist das völlig wurscht. Ich müsste jetzt die höhe dieser Controls rauschfischen und den Formularkopf auf die höhe reduzieren oder vieleicht sollen wir noch ein bischen mehr. Wie Sie wollen. Da gibt es jetzt einen kleinen, aber gemeinen Trick. Wenn ich mit alt F11 das ergänze. Nach dieser Schleife kann ich einfach den Formularkopf in seiner höhe auf Null reduzieren. Also .fromularkopf.height =0 Das ist natürlich völlig unmöglich. Da drinn liegen Controls. Und Access weigert sich auch, aber freundlicherweise nicht mit einer Fehlermeldung, sondern mit der Folge, dass er einfach die Zulässige Höhe nimmt. Ich muss mich also ehrlich gesagt überhaupt nicht darum kümmern. Es könnten einige Label höher sein oder an einer anderen Position gelandet sein. Der Formularkopf wird in seiner Höhe auf Null reduziert. Das geht nicht und Access findet selber heraus was denn geht. So wenn sie ihn zufuß ziehen. Also, noch einmal schließen und wieder neu starten. Und dann dürfte zumindest für die Mittarbeiter schon einmal alles in Ordnung sein. Sehen sie wie schön das funktioniert hat? Ich habe die Controls genommen, alle die in einem Label sind nach oben auf Null geschoben. Dann habe ich die Formularkopfhöhe. Das ist das hier. Gnadenlos auf Null gesetzt und dann hat Access dafür gesorgt, dass Sie korigiert wird. Das würde ich langfristig mit allen machen. Hier ist es noch nicht der Fall, aber dafür müssen wir es noch ein bischen umbauen, damit es nicht unnötig kompliziert wird, sondern für alle automatisch funktioniert.

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!