{"id":88012024,"date":"2019-11-08T11:47:22","date_gmt":"2019-11-08T11:47:22","guid":{"rendered":"http:\/\/access-basics.de\/index.php\/88012024.html"},"modified":"2019-11-08T11:47:22","modified_gmt":"2019-11-08T11:47:22","slug":"88012024","status":"publish","type":"page","link":"https:\/\/access-im-unternehmen.de\/88012024\/","title":{"rendered":"Access im Unternehmen 01\/2024"},"content":{"rendered":"<h3>Formular an Mausposition \u00f6ffnen<\/h3>\n<p>Verschiedene Anwendungszwecke machen es erforderlich, dass man ein Formular an einer bestimmten Position \u00f6ffnet. Und selbst wenn es an sich nicht erforderlich ist, steigert es doch die Ergonomie, wenn zum Beispiel ein Popup-Formular an der Stelle erscheint, an der man den Befehl zum \u00d6ffnen bet\u00e4tigt hat \u2013 beispielsweise durch einen Klick auf eine Schaltfl\u00e4che oder auf ein anderes Steuerelement. In diesem Beitrag schauen wir uns an, wie wir unabh\u00e4ngig von anderen Elementen ein Formular \u00f6ffnen und an der Position des Mauszeiters positionieren k\u00f6nnen. Dazu ben\u00f6tigen wir nichts au\u00dfer ein paar Ereignisprozeduren und API-Funktionen.<\/p>\n<p><a href=\"http:\/\/www.access-im-unternehmen.de\/Formular_an_Mausposition_oeffnen\">Zum Artikel &#8230;<\/a><\/p>\n<h3>Modale Dialoge nach Wunsch gestalten<\/h3>\n<p>Modale Dialoge, also Formulare, die mit dem Befehl DoCmd.OpenForm mit dem Parameter WindowMode:=acDialog ge\u00f6ffnet wurden, sind in vielen F\u00e4llen hilfreich: Wir k\u00f6nnen den aufrufenden Code anhalten, bis das Formular geschlossen oder ausgeblendet wird und so gegebenenfalls auszulesende Werte ermitteln. Oder wir sorgen so daf\u00fcr, dass der Benutzer nicht an anderen Formularen arbeiten kann, bevor er nicht die Eingabe in dieses Formular abgeschlossen hat. Einen Nachteil haben modale Dialog allerdings: Wir k\u00f6nnen ihre Rahmenart nicht so einstellen, wie wir es von normal ge\u00f6ffneten Formularen gewohnt sind. Wollen wir also einen modalen Dialog einmal ohne Titelleiste anzeigen, weil er zum Beispiel einfach als Erweiterung neben einem anderen Steuerelement ge\u00f6ffnet werden soll, k\u00f6nnen wir das so nicht machen. Es gibt allerdings einen Workaround, den wir hier vorstellen.<\/p>\n<p><a href=\"http:\/\/www.access-im-unternehmen.de\/Modale_Dialoge_nach_Wunsch_gestalten\">Zum Artikel &#8230;<\/a><\/p>\n<h3>Standardwerte f\u00fcr Fremdschl\u00fcsselfelder pflegen<\/h3>\n<p>F\u00fcr Felder in Tabellen kann man jeweils einen Standardwert im Tabellenentwurf festlegen, der beim Anlegen eines neuen Datensatzes in dieser Tabelle vorbelegt wird. Etwas anspruchsvoller ist es, wenn wir Standardwerte durch den Benutzer festlegen wollen. Noch einen Schritt weiter gehen wir, wenn der Standardwert f\u00fcr ein Fremdschl\u00fcsselfeld verwendet werden soll \u2013 also zur Auswahl eines Datensatzes aus einer verkn\u00fcpften Tabelle. Einfache Beispiele sind Anreden, Zahlungsmethoden, Priorit\u00e4ten oder Kategorien. Hier k\u00f6nnen wir jeweils einen Eintrag anwendungsweit festlegen. Es geht aber auch noch anspruchsvoller: Wenn wir beispielsweise Adressen f\u00fcr Kunden in einer eigenen Tabelle speichern, wo mehrere Adressen je Kunde angelegt werden k\u00f6nnen und nur eine als Standard verwendet werden soll. Sp\u00e4testens hier m\u00fcssen wir auch beim Datenmodell umdenken. In diesem Beitrag schauen wir uns erst einmal an, wie wir Standardwerte f\u00fcr Nachschlagefelder komfortabel ausw\u00e4hlen k\u00f6nnen.<\/p>\n<p><a href=\"http:\/\/www.access-im-unternehmen.de\/Standardwerte_fuer_Fremdschluesselfelder_pflegen\">Zum Artikel &#8230;<\/a><\/p>\n<h3>Rechnungsverwaltung: Kundenadressen ausgliedern<\/h3>\n<p>In der bisherigen Version der Rechnungsverwaltung haben wir nur eine Kundenadresse gespeichert, die in der Tabelle \u00bbtblKunden\u00ab gespeichert war. Im Bestreben, diese Rechnungsverwaltung flexibler zu gestalten, wollen wir in diesem Beitrag zwei Dinge durchf\u00fchren: Das Aufteilen der Kundentabelle in eine Tabelle mit den Basisdaten des Kunden und mehrere weitere Tabellen zum Speichern der Adressen dieses Kunden sowie das Anpassen des Formulars \u00bbfrmKundenDetails\u00ab an diese \u00c4nderung des Datenmodells. Dies soll die Grundlage bilden, mehrere Adressen je Kunde zu speichern und diese dann nach Bedarf in Bestellungen, Lieferungen, Rechnungen und weitere Vorg\u00e4nge zu \u00fcbernehmen.<\/p>\n<p><a href=\"http:\/\/www.access-im-unternehmen.de\/Rechnungsverwaltung_Kundenadressen_ausgliedern\">Zum Artikel &#8230;<\/a><\/p>\n<h3>Datenmodelle f\u00fcr die Rechnungsverwaltung, Teil 2<\/h3>\n<p>Im ersten Teil dieser Beitragsreihe haben wir die grundlegenden Ideen vorgestellt, die wir zum Thema Bestellungen\/Rechnungen\/Lieferungen haben. Uns ist jedoch noch eine Feinheit entgangen, die wir in diesem Beitrag noch nachreichen wollen. Dabei geht es darum, eventuelle Inkonsistenzen beim Erstellen von Rechnungspositionen auf Basis von Bestellpositionen zu vermeiden. Normalerweise sollte mit dem aktuellen Datenmodell nichts schiefgehen, aber das Datenmodell sollte so viele Probleme wie m\u00f6glich bereits durch die enthaltenen Restriktionen in Form von Beziehungen verhindern.<\/p>\n<p><a href=\"http:\/\/www.access-im-unternehmen.de\/Datenmodelle_fuer_die_Rechnungsverwaltung_Teil_2\">Zum Artikel &#8230;<\/a><\/p>\n<h3>SQL Server zwischen zwei Rechnern im Netzwerk<\/h3>\n<p>Wer wie ich den SQL Server auf dem gleichen Desktop-Rechner installiert hat, auf dem er auch arbeitet, macht sich \u00fcber den Einsatz im Netzwerk keine gro\u00dfen Gedanken. Neulich aber habe ich einen neuen Rechner aufgesetzt und es fehlte schlicht die Zeit, auch den SQL Server und die damit verwalteten Datenbanken auf dem neuen Rechner zu installieren. Also dachte ich, dass ich einfach \u00fcber das Netzwerk auf den SQL Server des alten Rechners zugreifen k\u00f6nnte. Das geht jedoch nicht ohne Weiteres und je nach Konfiguration ist der eine oder andere Schritt n\u00f6tig. Also schauen wir uns an, was bei mir zum Erfolg gef\u00fchrt hat.<\/p>\n<p><a href=\"http:\/\/www.access-im-unternehmen.de\/SQL_Server_zwischen_zwei_Rechnern_im_Netzwerk\">Zum Artikel &#8230;<\/a><\/p>\n<h3>Abfragen in der SQL-Ansicht \u00f6ffnen<\/h3>\n<p>Seit vielen Jahren w\u00fcnschen sich Access-Nutzer sehr kleine Ver\u00e4nderungen von Microsoft, die den Programmieralltag stark erleichtern k\u00f6nnten.\u00a0Eine davon ist, Abfragen direkt in der SQL-Ansicht zu \u00f6ffnen. Ja, es gibt Entwickler, die nicht ausschlie\u00dflich in der Entwurfsansicht arbeiten \u2013 und manche Abfragetypen wie beispielsweise die UNION-Abfrage k\u00f6nnen nur in der SQL-Ansicht angezeigt werden. Bis vor kurzem musste man zur SQL-Ansicht einen Umweg \u00fcber die Entwurfsansicht gehen. Wie dieser aussah und welche M\u00f6glichkeiten wir nun haben, zeigen wir in diesem Beitrag.<\/p>\n<p><a href=\"http:\/\/www.access-im-unternehmen.de\/Abfragen_in_der_SQLAnsicht_oeffnen\">Zum Artikel &#8230;<\/a><\/p>\n<h3>Abfragen direkt in der SQL-Ansicht erstellen<\/h3>\n<p>Microsoft hat neuerdings einen Befehl zum direkten Anzeigen von Abfragen in der SQL-Ansicht. Damit k\u00f6nnen wir eine Abfrage direkt in der SQL-Ansicht \u00f6ffnen statt den Umweg \u00fcber den Abfrageentwurf zu w\u00e4hlen. Leider hat Microsoft keine entsprechende Funktion f\u00fcr das Erstellen von Abfragen hinzugef\u00fcgt \u2013 also eine Schaltfl\u00e4che im Ribbon, mit der wir eine neue SQL-Abfrage direkt in der SQL-Ansicht \u00f6ffnen k\u00f6nnen. Das ist allerdings gar nicht schlimm, denn wir r\u00fcsten diese Funktion einfach selbst nach. Zun\u00e4chst schauen wir uns an, welche Befehle dazu notwendig sind, danach erstellen wir ein COM-Add-In, das die Funktion in der Benutzeroberfl\u00e4che verankert \u2013 gleich neben den Schaltfl\u00e4chen f\u00fcr den Abfrageassistenten und das Anlegen von neuen Abfragen \u00fcber die Entwurfsansicht.<\/p>\n<p><a href=\"http:\/\/www.access-im-unternehmen.de\/Abfragen_direkt_in_der_SQLAnsicht_erstellen\">Zum Artikel &#8230;<\/a><\/p>\n<h3>COM-Add-Ins und -DLLs installieren oder registrieren<\/h3>\n<p>Wenn man eine COM-DLL oder ein COM-Add-In mit VB6 oder twinBASIC erstellt hat, muss dieses registriert werden muss, damit es in einer der Office-Anwendungen angezeigt wird oder unter VBA zur Verf\u00fcgung steht. Die Informationen f\u00fcr die Registrierung werden in der Regel direkt in die jeweilige .dll-Datei integriert, sodass man die Registrierung nur noch von au\u00dfen initialisieren muss. Daf\u00fcr gibt es verschiedene Wege, die sich je nach Zweck (COM-DLL oder COM-Add-In) unterscheiden. Einer davon ist das Erstellen eines Setups mit Inno Setup. Dieses braucht der Anwender nur auszuf\u00fchren und muss keine Verrenkungen machen, um die neuen Funktionen auf seinem Rechner nutzen zu k\u00f6nnen. Es gibt aber auch noch alternative Methoden, die wir ebenfalls in diesem Beitrag vorstellen.<\/p>\n<p><a href=\"http:\/\/www.access-im-unternehmen.de\/COMAddIns_und_DLLs_installieren_oder_registrieren\">Zum Artikel &#8230;<\/a><\/p>\n<h3>Assistent f\u00fcr Dom\u00e4nenfunktionen<\/h3>\n<p>Dom\u00e4nenfunktionen wie DomWert (DLookup), DomMax (DMax) oder DomAnzahl (DCount) sind praktische Helfer, wenn es um das schnelle Zugreifen auf verschiedene Informationen einer Datenbank geht. Wir k\u00f6nnen damit den Wert eines oder mehrerer Felder aus einem Datensatz mit einem bestimmten Kriterium ermitteln, die Gesamtanzahl von Datens\u00e4tzen einer Tabelle mit oder ohne Kriterium oder auch Minimal- oder Maximalwerte. Der Assistent, den wir in diesem Beitrag vorstellen, hilft dabei auf verschiedene Arten. Die erste ist, dass Sie ihn einfach aufrufen k\u00f6nnen, um schnell die Werte f\u00fcr eine Dom\u00e4nenfunktion einzutippen und das Ergebnis auszulesen. Aber der Assistent kann noch mehr: Sie k\u00f6nnen ihn auch von Eigenschaftsfeldern heraus aufrufen, um die gew\u00e4hlte Dom\u00e4nenfunktion direkt dort einzutragen.<\/p>\n<p><a href=\"http:\/\/www.access-im-unternehmen.de\/Assistent_fuer_Domaenenfunktionen\">Zum Artikel &#8230;<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Formular an Mausposition \u00f6ffnen Verschiedene Anwendungszwecke machen es erforderlich, dass man ein Formular an einer bestimmten Position \u00f6ffnet. Und selbst wenn es an sich nicht erforderlich ist, steigert es doch die Ergonomie, wenn zum Beispiel<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"class_list":["post-88012024","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Access im Unternehmen 01\/2024 - Access im Unternehmen<\/title>\n<meta name=\"robots\" content=\"noindex, follow\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Access im Unternehmen 01\/2024\" \/>\n<meta property=\"og:description\" content=\"Formular an Mausposition \u00f6ffnen Verschiedene Anwendungszwecke machen es erforderlich, dass man ein Formular an einer bestimmten Position \u00f6ffnet. Und selbst wenn es an sich nicht erforderlich ist, steigert es doch die Ergonomie, wenn zum Beispiel\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/88012024\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data1\" content=\"6\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/88012024\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/88012024\\\/\",\"name\":\"Access im Unternehmen 01\\\/2024 - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"datePublished\":\"2019-11-08T11:47:22+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/88012024\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/88012024\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/88012024\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Access im Unternehmen 01\\\/2024\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"name\":\"Access im Unternehmen\",\"description\":\"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access\",\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/access-im-unternehmen.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\",\"name\":\"Andr\u00e9 Minhorst Verlag\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"contentUrl\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"width\":370,\"height\":111,\"caption\":\"Andr\u00e9 Minhorst Verlag\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Access im Unternehmen 01\/2024 - Access im Unternehmen","robots":{"index":"noindex","follow":"follow"},"og_locale":"de_DE","og_type":"article","og_title":"Access im Unternehmen 01\/2024","og_description":"Formular an Mausposition \u00f6ffnen Verschiedene Anwendungszwecke machen es erforderlich, dass man ein Formular an einer bestimmten Position \u00f6ffnet. Und selbst wenn es an sich nicht erforderlich ist, steigert es doch die Ergonomie, wenn zum Beispiel","og_url":"https:\/\/access-im-unternehmen.de\/88012024\/","og_site_name":"Access im Unternehmen","twitter_card":"summary_large_image","twitter_misc":{"Gesch\u00e4tzte Lesezeit":"6\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/88012024\/","url":"https:\/\/access-im-unternehmen.de\/88012024\/","name":"Access im Unternehmen 01\/2024 - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"datePublished":"2019-11-08T11:47:22+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/88012024\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/88012024\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/88012024\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Access im Unternehmen 01\/2024"}]},{"@type":"WebSite","@id":"https:\/\/access-im-unternehmen.de\/#website","url":"https:\/\/access-im-unternehmen.de\/","name":"Access im Unternehmen","description":"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access","publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/access-im-unternehmen.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/access-im-unternehmen.de\/#organization","name":"Andr\u00e9 Minhorst Verlag","url":"https:\/\/access-im-unternehmen.de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/","url":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","contentUrl":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","width":370,"height":111,"caption":"Andr\u00e9 Minhorst Verlag"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/pages\/88012024","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/comments?post=88012024"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/pages\/88012024\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=88012024"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}