Du m�chtest in einem Endlosformular bestimmte Datens�tze (bzw. Felder) durch spezielle Formatierungen kennzeichnen. Wenn du eine solche Zuweisung (z.B. per Code oder Ausdruck mit irgendeiner Bedingung) versuchst, wird die Formatierung in allen Datens�tzen ge�ndert. Show Ursache Format-Einstellungen f�r Formulare werden in Access gemeinsam gespeichert und gelten daher f�r alle Datens�tze. L�sung Ab A00 l�sst sich das mit der Bedingten Formatierung einstellen. Dazu in der Entwurfsansicht des Formulares ein Steuerelement markieren und Men� Format/Bedingte Formatierung w�hlen. Die Einstellungen sind auch per VBA m�glich, s.zur FormatConditions-Eigenschaft. M�glichkeiten in �lteren Access-Versionen: F�r die Hintergrundfarbe gibt es versch. Trixereien (hinterlegte Steuerelemente, formatf�llende Textzeichen, BMPs etc.) Ein kleines Beispiel k�nnt ihr hier downloaden colorend.zip (11 KB) Bei Stephen Lebans gibt's L�sungen unter Verwendung von APIs: Bei Dev Ashish gibt's ein Beispiel f�r den aktuellen Datensatz: http://www.mvps.org/access/forms/frm0047.htm nach oben https://www.donkarl.com?FAQ4.2aktualisiert 2012-12-14Problem Der Bezug auf ein Feld oder eine Eigenschaft im Unterformular/-bericht funktioniert nicht. L�sung Die Syntax f�r den Bezug auf ein Steuerelement im Ufo lautet:
"UFoSteuerelement_im_Hauptformular" ist dabei der Name des Steuerelementes, in dem sich das Unterformular befindet. Diese Bezeichnung steht in der Eigenschaft Name des Steuerelementes und muss nicht ident sein mit dem Namen des Formulares, das als Unterformular dient, also der Eigenschaft Herkunftsobjekt. Diese Verwechslung ist die h�ufigste Fehlerquelle bei Bez�gen. Vom Hauptformular aus reicht: Um den Fokus auf ein Element im Ufo setzen zu k�nnen, oder z.B. die Methode GoToRecord im Ufo anwenden zu k�nnen, ist es notwendig, vorher den Fokus auf das Ufo-Steuerelement im Hauptformular zu setzen:
bzw.
Analog funktioniert es mit Berichten. Lediglich "Forms" ist durch "Reports" zu ersetzen und "Form" durch "Report". Syntaxbeispiele f�r alle m�gl. Varianten bei Dev Ashish: nach oben https://www.donkarl.com?FAQ4.3aktualisiert 2021-10-25Problem Du m�chtest, wenn ein Datensatz in einem Formular ausgew�hlt wird, dass in einem anderen Formular der selbe Datensatz angezeigt wird. L�sung Angenommen, das eindeutige und zu vergleichende Feld in beiden Formularen hei�t "Id". Dann bei einem passenden Ereignis z. B. Beim Anzeigen des 1. Formulares:
Die Verwendung des Formular-Recordsets ist ab Access 2000 m�glich. In �lteren Versionen kann man mit dem RecordsetClone arbeiten. Ein Beispiel daf�r zeige ich hier: mein deutscher KB-Artikel dazu im Webarchiv nach oben https://www.donkarl.com?FAQ4.4aktualisiert 2021-10-25Problem Du hast ein ungebundenes Text- oder Kombifeld z.B. "txtSuch". Nach Eingabe oder Auswahl eines Wertes z.B. einer RechnungsNr, m�chtest du, dass der Datensatz mit dieser RechnungsNr gefunden und angezeigt wird. L�sung Wenn dein Feld "RechnungsNr" im Formular sichtbar ist und den Fokus haben kann, dann kannst du beim Ereignis Nach Aktualisierung von "txtSuch" die FindRecord-Methode verwenden:
Ansonsten kannst du ebenfalls bei Nach Aktualisierung von "txtSuch" folgendes veranstalten:
Die Verwendung des Formular-Recordsets ist ab Access 2000 m�glich. In �lteren Versionen kann man mit dem RecordsetClone arbeiten. Ein Beispiel daf�r zeige ich hier: nach oben https://www.donkarl.com?FAQ4.5aktualisiert 2012-12-14Problem Du musst zur Aktualisierung der Daten ein Requery durchf�hren. Der Fokus geht dabei auf den 1. Datensatz des Formulares zur�ck. Du m�chtest aber beim vorher aktuellen Datensatz bleiben. L�sung Speichere die Id (ein eindeutiges Feld) des aktuellen Datensatzes. Dann kannst du nach dem Requery zur�ckkehren.
nach oben https://www.donkarl.com?FAQ4.6aktualisiert 2021-10-25Problem Du m�chtest ein Formular mehrfach aufrufen d.h mehrmals am Bildschirm haben um z.B. mehrere Datens�tze neben- und �bereinander darstellen zu k�nnen. L�sung Du kannst (ab A95) mehrere Instanzen eines Formulares �ffnen. Bissel Info dazu gibt's in der Online-Hilfe unter "Instanzen von Formularen".
Bei einem passenden Ereignis machst du dann die 2. Instanz sichtbar und setzt sie an eine andere Stelle am Bildschirm, sonst liegt sie genau �ber der 1. Instanz:
s.a. KB-Artikel im Webarchiv nach oben https://www.donkarl.com?FAQ4.7aktualisiert 2021-10-25Problem Du m�chtest die Sortierreihenfolge im Formular �ndern, ohne die Men�- oder Symbolleistenpunkte Aufsteigend/Absteigend Sortieren zu verwenden, sondern z.B. beim Klicken einer selbst erstellten Schaltfl�che. L�sung Entweder du bastelst dir einen SQL-String mit einer entsprechenden Order By-Klausel als Datenherkunft des Formulares oder du setzt die Formular-Eigenschaften OrderBy und OrderByOn mit VBA: Beispiel mit SQL-String:
Wenn man nicht besonders SQL-erfahren ist oder bei komplizierteren Statements, ist es am einfachsten, eine Abfrage im Abfrageeditor von Access zu erzeugen und sich den SQL-Text dann aus der SQL-Ansicht des Abfrageentwurfs zu kopieren. Das Sortieren durch �nderung der Datenherkunft ist i.d.R. die bessere Variante. Nicht nur, weil's professioneller wirkt, sondern auch weil Access bei Sortierung �ber die Formular-Eigenschaften (egal ob �ber die Benutzeroberfl�che oder per Code) die letzte Sortierung in der Sortiert nach-Eigenschaft fix speichert. Dennoch auch daf�r Beispiele: 'aufsteigend nach dem Feld Vorname sortieren 'absteigend Access speichert die letzte Sortierung. Um sie beim n�chsten �ffnen des Formulares nicht anzuwenden, kann man im Ereigniscode beim �ffnen schreiben: s.a. KB-Artikel im Webarchiv nach oben https://www.donkarl.com?FAQ4.8aktualisiert 2021-10-25Problem Du m�chtest w�hrend der Laufzeit in einem Formular verschiedene Unterformulare im selben Unterformular-Steuerelement verwenden. L�sung Du kannst mit VBA die Eigenschaft Herkunftsobjekt des Ufo-Steuerelementes im Hauptformular (hier: "UFoElement") �ndern:
Wenn dadurch auch die Felder f�r die Verkn�pfung zwischen Haupt- und Unterformular anders hei�en, musst du die Eigenschaften Verkn�pfen von und Verkn�pfen nach des UFoElements �ndern:
Access verkn�pft automatisch �ber das Prim�rschl�sselfeld, sofern vorhanden. Wenn du bei einem Ufo-Wechsel nicht �ber ein vorhandenes Prim�rschl�sselfeld verkn�pfen willst, musst du vor dem Neuzuweisen der Verkn�pfungsfelder die Eigenschaften auf einen Leerstring setzen:
mein deutscher KB-Artikel dazu im Webarchiv nach oben https://www.donkarl.com?FAQ4.9Problem Du verwendest in A97 in einem PopUp-Formular Code, den der Assistent erstellt hat. Im Code befinden sich Befehle, die DoMenuItem verwenden z.B. Speichern, L�schen. Diese Befehle funktionieren nicht. Ursache In A97 funktioniert DoMenuItem nicht im PopUp, weil die Men�befehle auch per VBA in einem PopUp-Formular nicht zug�nglich sind. (in anderen Versionen sollte es funktionieren) L�sung Ersetze die DoMenuItem-Befehle durch RunCommands z.B. Speichern des aktuellen Datensatzes: Das Ersetzen der veralteten DoMenuItem-Befehle ist in jedem Fall ratsam. Sie werden nur noch aus Kompatibilit�tsgr�nden mitgeschleppt bzw. weil MS die Assistenten nie aktualisiert hat, und die RunCommand-Befehle sind wesentlich aussagekr�ftiger. nach oben https://www.donkarl.com?FAQ4.10aktualisiert 2021-10-25Problem Du m�chtest in der Formularansicht mit den Tasten PfeilAuf und PfeilAb den Datensatz wechseln, �hnlich wie das in der Datenblattansicht oder in Tabellen und Abfragen m�glich ist. L�sung Stelle die Eigenschaft Tastenvorschau des Formulares auf Ja ein. In das Ereignis Bei Taste Ab des Formulares kopierst du folgendes:
mein deutscher KB-Artikel dazu im Webarchiv nach oben https://www.donkarl.com?FAQ4.11Problem Du m�chtest den Wert aus einem berechneten Steuerelement in der Tabelle speichern, auf der das Formular basiert. L�sung Prinzipiell ist es keine gute Angewohnheit, einen berechneten Wert zu speichern. Zuerst solltest du dir also �berlegen, ob es wirklich n�tig ist, weil der Wert i.d.R. jederzeit wieder berechnet werden kann. Sinnvoll ist eine Speicherung evtl., wenn sich einzelne Faktoren im Lauf der Zeit �ndern k�nnen und du keine separate History-Tabelle f�hren willst, oder wenn die Formeln komplex sind und sich mit dem Speichern Performance gewinnen l�sst. Du brauchst nat�rlich in der Tabelle ein Feld, das den Wert aufnimmt.
nach oben https://www.donkarl.com?FAQ4.12Problem Du m�chtest eine bestimmte Zeile in einem Kombinations- oder Listenfeld ausw�hlen oder z.B. die erste Zeile als Standardwert definieren, damit sie beim �ffnen eines Formulares ausgew�hlt ist. L�sung Schreib in die Ereignisprozedur Beim �ffnen des Formulares:
Der Index von ItemData beginnt mit 0 = 1. Zeile, 1 = 2. Zeile etc. nach oben https://www.donkarl.com?FAQ4.13aktualisiert 2021-10-25Problem Du m�chtest zu den Eintr�gen in einem Kombinationsfeld einen neuen hinzuf�gen. L�sung Variante 1 Wenn du ohne Nachfrage den eingegebenen Wert in die Datenherkunft des Kombis �bernehmen willst, dann '************** CODE START **************
Variante 2 Du m�chtest z.B. im Formular "frm_Rechnung" bei neuem Eintrag im Kombi "cbo_SuchKunde" (gebundene Spalte ist "KundenID") zuerst nachfragen, dann das Eingabeformular ("frm_NeuKunde") �ffnen, den im Kombi eingegebenen Kundennamen in das Eingabeformular �bernehmen, dort weitere Details eingeben, und danach im Kombi den neuen Wert anzeigen. Im Ereignis Bei nicht in Liste des Kombis: '************** CODE START ************** Beim Schlie�en des Eingabeformulars: nach oben https://www.donkarl.com?FAQ4.14Problem Du m�chtest die Auswahlliste eines Kombis �ffnen, ohne, dass der User auf den Button des Kombis dr�cken muss. L�sung Daf�r gibt es ab A95 eine eigene Methode namens Dropdown:
In A2 musst du das noch mit nach oben https://www.donkarl.com?FAQ4.15Problem Du m�chtest aus einem Listen- oder Kombinationsfeld den Wert einer Spalte �bernehmen, die nicht die gebundene Spalte ist. L�sung Verwende die Eigenschaft Column(Spalte).
Soll der Wert der Spalte in einem anderen Feld gespeichert werden, dann kann per VBA z.B. im Ereignis Nach Aktualisierung des Kombis die Zuweisung erfolgen:
nach oben https://www.donkarl.com?FAQ4.16Problem Du m�chtest eine Spalte (i.d.R. Zahlen) in einem Listenfeld rechtsb�ndig ausrichten. L�sung Es gibt keine eingebaute Eigenschaft oder dergl. mit der sich das einstellen l�sst. Spalten in Listenfeldern werden immer linksb�ndig als Text ausgerichtet.
Dadurch wird ein Text mit 12 Zeichen erzeugt und vorne mit Leerzeichen aufgef�llt. Das Beispiel hier reicht f�r eine Zahl bis zu einfachen Millionenbetr�gen. Eine weitere M�glichkeit ist die Verwendung von APIs. Die Sache funktioniert IMO ein bissel wackelig, aber du kannst dir den interessanten Versuch von Stephen Lebans dazu ansehen: nach oben https://www.donkarl.com?FAQ4.17Problem Du m�chtest auf das Wechseln der Registerseite reagieren und findest kein passendes Ereignis. L�sung Beim Wechseln der Seite z.B. mit Klick auf die Registerzunge, wird das Ereignis Bei �nderung des Registersteuerelementes ausgel�st. Dabei l�sst sich die Eigenschaft Seitenindex des Registers auslesen. Ist eh ident mit der Standardeigenschaft Value. Also einfach:
nach oben https://www.donkarl.com?FAQ4.18aktualisiert 2021-10-25Problem Du m�chtest vom letzten Feld der 1. Registerseite durch Dr�cken der TAB-, RETURN- oder DOWN-Taste in das erste Feld der 2. Seite gelangen. L�sung Schreib im Code Bei Taste Ab deines letzten Feldes auf der 1. Seite:
mein deutscher KB-Artikel dazu im Webarchiv nach oben https://www.donkarl.com?FAQ4.19Problem Du m�chtest f�r eine Bedingung in Code oder in einem Ausdruck wissen, ob ein bestimmtes Formular ge�ffnet ist. L�sung Ab A00 gibt es f�r Access-Objekte die Eigenschaft IsLoaded:
gibt True oder False zur�ck. Alternativ und v.a. schon in A95 und A97 kann man SysCmd verwenden. Kopier dir dazu folgendes in ein Standardmodul:
In VBA kannst du dann abfragen, ob das Formular ge�ffnet ist z.B.: In Ausdr�cken an der Access-Oberfl�che z.B. in der Bedingungsspalte eines Makros kannst du schreiben: nach oben https://www.donkarl.com?FAQ4.20Problem Du m�chtest die aktuelle Aufl�sung des Bildschirmes ermitteln. L�sung Kopiere dir folgendes in den Deklarationsbereich eines Standardmoduls:
Aufruf dann z.B. �ber eine Funktion wie:
nach oben https://www.donkarl.com?FAQ4.21aktualisiert 2021-06-29Problem Du m�chtest die Gr��e der Formulare, Position und Gr��e der Steuerelemente usw. an die aktuelle Bildschirmaufl�sung anpassen. L�sung Eine technisch einfache, aber mit erh�htem Pflegeaufwand verbundene Methode ist, mehrere Versionen eines Formulares zu erzeugen und je nach Aufl�sung das passende zu �ffnen. F�r die dynamische Anpassung von Steuerelement-Gr��en gibt es ab Access 2007 die Anker-Eigenschaften. F�r weitergehende Anpassungen hingegen ist viel Code notwendig. Dabei kommt es oft zu Problemen im Detail mit Proportionen, Schriftgr��en etc. Das gilt manchmal auch f�r die diversen Beschreibungen und Tools im Internet wie z.B. - Colin Riddingtons Tutorial http://www.mendipdatasystems.co.uk/automatic-form-resizing-1/4594554784 nach oben https://www.donkarl.com?FAQ4.22aktualisiert 2021-10-25Problem Du m�chtest einen gerade eingegebenen Wert in einem neuen Datensatz als Standardwert vorgeben, um ihn nur bei Bedarf �ndern zu m�ssen. L�sung Schreibe in der Ereignisprozedur Nach Aktualisierung des jeweiligen Steuerelementes oder des Formulares: bei Textfeldern bei Datumsfeldern bei anderen Felddatentypen (Zahl, Ja/Nein etc.) nach oben https://www.donkarl.com?FAQ4.23aktualisiert 2005-08-24Problem Mit den Tastenundkann standardm��ig der Datensatz gewechselt werden. Genau das m�chtest du unterbinden. L�sung Setze die Eigenschaft Tastenvorschau des Formulares auf Ja. Im Ereignis Bei Taste ab des Formulares: Analog sind s�mtliche Tasten auf Formularebene in VBA programmierbar. Wenn du nur die normalen Access-Funktionstasten sperren willst, kannst du das auch im Men�punkt Extras/Start machen. Ansonsten schau in die Online-Hilfe unter "Tastatur, Tastaturbelegung-Makrogruppen". nach oben https://www.donkarl.com?FAQ4.24aktualisiert 2021-10-25Problem Du m�chtest den Cursor in einem Textfeld "automatisch" an die erste oder letzte Stelle setzen oder den ganzen Inhalt des Feldes markieren. L�sung Das Cursorverhalten bei Eintritt in ein Feld l�sst sich (f�r die ganze Datenbank geltend) im Men� Extras/Optionen/Tastatur einstellen. F�r einzelne Steuerelemente l�sst es sich programmieren. Entweder man verwendet die folgenden VBA-Anweisungen bei Ereignissen wie Beim Hingehen oder Beim Klicken des Steuerelementes oder man setzt zuvor den Cursor in das Steuerelement z.B. mit: Cursor an den Anfang des Textes Cursor an das Ende des Textes ganzen Text markieren Das Voransetzen des Leer-Strings verhindert eine Fehlermeldung der Len-Funktion bei leeren Feldern. Das gleiche erreicht man auch mit: nach oben https://www.donkarl.com?FAQ4.25aktualisiert 2005-12-07Problem Du m�chtest vermeiden, dass in ein Feld ein Wert eingegeben wird, der schon einmal in der zugrunde liegenden Tabelle drin ist. Wenn das versucht wird, soll eine verst�ndliche Fehlermeldung erscheinen. L�sung Variante 1 Setze in der Tabelle bei diesem Feld die Eigenschaft Indiziert auf Ja (Ohne Duplikate).
Variante 2 Bei obigem Vorgehen erfolgt die Pr�fung erst beim Versuch, den Datensatz zu speichern, also i.d.R. beim Wechseln des Datensatzes. Wenn die Pr�fung gleich nach dem Eingeben des Wertes in ein Feld stattfinden soll, kannst du das Ereignis Vor Aktualisierung des Steuerelementes nutzen und Code wie diesen:
In der 2. Zeile des Codes wird der Feldtyp Text vorausgesetzt. Wenn es sich hingegen um eine Zahl handelt, sollte die 2. Zeile lauten:
nach oben https://www.donkarl.com?FAQ4.26Problem Du hast bei einem Steuerelement kein zugeordnetes Bezeichnungsfeld und m�chtest ein solches nachtr�glich erstellen, z.B. damit man durch Klick darauf das �bergeordnete Steuerelement aktivieren kann, die beiden im Entwurf gemeinsam verschoben werden etc. L�sung Erzeuge zun�chst mithilfe der Toolbox ein ungebundenes Bezeichnungsfeld. nach oben https://www.donkarl.com?FAQ4.27Problem Du hast im Formular ein Textfeld mit einer Emailadresse und m�chtest das Standard-Emailprogramm mit einer neuen Email und der Adresse aus dem Feld �ffnen. L�sung Schreib (ab A97) beim gew�nschten Ereignis in der Ereignisprozedur: Wenn du den Text im Steuerelement gerade ge�ndert hast und sich der Fokus beim Aufruf der Mail noch im Textfeld befindet, dann musst du die Eigenschaft Text des Steuerelementes verwenden: Du kannst mit SendObject auch den Betreff und den Text der Email vorgeben. (s.) Wenn du statt des Textfeldes unbedingt ein Hyperlink-Feld verwenden m�chtest, besteht das Problem, dass der Anwender i.d.R. nicht wei�, dass er vor der Email-Adresse "mailto:" eingeben m�sste. Tut er das nicht, geht Access auch bei einer Mail-Adresse von einer Webseite aus, setzt "http://" davor und �ffnet den Webbrowser. Eine M�glichkeit, das zu verhindern, ist, die Eingabe im Ereignis Nach Aktualisierung des Feldes zu korrigieren:
nach oben https://www.donkarl.com?FAQ4.28Problem Du hast bei einem Steuerelement in der Eigenschaft Steuerelement Tip-Text einen Text eingegeben. Wenn du mit der Maus drauf gehst, erscheint der Tiptext aber nicht. L�sung Meistens liegt es daran, dass ein transparentes Rechteck oder dergl. �ber dem Steuerelement liegt und es daher nicht im Vordergrund ist. Auch wenn nichts dar�ber liegen sollte, markiere das betreffende Steuerelement und w�hle den Men�punkt Format/In den Vordergrund. nach oben https://www.donkarl.com?FAQ4.29aktualisiert 2009-10-19Problem Bei manchen M�usen mit Rad (v.a. MS-Intellimouse) kann der Anwender durch Drehen des Rades den Datensatz wechseln, was du eigentlich verhindern m�chtest. Es kann auch vorkommen, dass schon leichtes Drehen am Mausrad wildes Scrollen zwischen den Datens�tzen zur Folge hat. L�sung Ab A07 besteht das Problem nicht mehr, da der Datensatzwechsel per Mausrad deaktiviert wurde. Die klassischen L�sungen funktionieren mit DLLs: Das wilde DS-Springen mit der Intellimouse wird lt. MS vom SR2 zu O97 bzw. durch neue Maustreiber gefixt: nach oben https://www.donkarl.com?FAQ4.30aktualisiert 2007-01-03Problem Du �ffnest ein Formular in der Datenblattansicht und m�chtest die Spalten�berschriften �ndern, findest aber keine entsprechende Eigenschaft oder Einstellung. L�sung Es gibt zwei M�glichkeiten, woher die Spalten ihre Beschriftung beziehen. 1. Wenn zu einem Steuerelement kein Bezeichnungsfeld zugeordnet ist, dann wird die Eigenschaft Name des Steuerelementes als �berschrift verwendet, d.h. du kannst diese Eigenschaft �ndern, um auch die Spalten�berschrift zu �ndern. 2. Existiert ein zugeordnetes Bezeichnungsfeld, dann wird dessen Eigenschaft Beschriftung (in VBA: Caption) als Spalten�berschrift verwendet, auch wenn in der Datenblattansicht solche Bezeichnungsfelder gar nicht angezeigt werden. Du kannst also in der Entwurfsansicht oder per VBA diese Eigenschaft einstellen und damit die Spalten�berschrift �ndern. Wie man nachtr�glich Bezeichnungsfelder zuordnet steht in FAQ 4.26. nach oben https://www.donkarl.com?FAQ4.31aktualisiert 2008-11-22Problem Du m�chtest in einem Formular animierte GIFs darstellen. L�sung ohne ActiveX: ActiveX-Steuerelemente: Eine weitere M�glichkeit ist die Verwendung des Webbrowser- oder DHTML Edit-Steuerelements des MS Internet Explorers. nach oben https://www.donkarl.com?FAQ4.32Problem Wenn ein Datensatz ge�ndert wurde, soll er nicht automatisch gespeichert werden, sondern eine Sicherheitsabfrage erscheinen. L�sung Verwende in der Ereignisprozedur Vor Aktualisierung des Formulares Code wie diesen:
nach oben https://www.donkarl.com?FAQ4.33Problem Du m�chtest (programmatorisch) herausfinden, ob der aktuelle DS der erste oder letzte im Formular ist oder ein neuer. L�sung Verwende (ab A95) Code wie den folgenden bei einem passenden Ereignis z.B. Beim Anzeigen:
Erl�uterungen gibt's unter den Stichworten "CurrentRecord" und "NewRecord" in der Online-Hilfe. nach oben Problem Ein Formular, das in Formularansicht ge�ffnet wird, ist v�llig leer, d.h. enth�lt keine Steuerelemente mehr (weder Textfelder noch Befehlsschaltfl�chen etc.). In der Entwurfsansicht sind die Steuerelemente noch vorhanden. Ursache Fast immer ist dieses Verhalten "by Design". Die Ursache ist i.d.R., dass die zugrundeliegende Abfrage (eingetragen in der Eigenschaft Datensatzherkunft) keine Datens�tze zur�ckliefert und in der Abfrage oder im Formular keine neuen Datens�tze angelegt werden k�nnen (z.B. Formulareigenschaft Anf�gen zulassen steht auf Nein). L�sung Entweder daf�r sorgen, dass die Abfrage immer Datens�tze liefert oder dass neue Datens�tze angelegt werden k�nnen, also die Abfrage umbauen bzw. im Formular neue Datens�tze zulassen. Falls du blo� m�chtest, dass zumindest deine Schaltfl�chen (z.B. zum Schlie�en des Formulares) sichtbar sind, reicht es, die Schaltfl�chen oder sonst. Steuerelemente in den Kopf- oder Fu�bereich des Formulares zu verschieben. Komplett leer ist n�mlich nur der Detailbereich. Weitere Info: KB-Artikel im Webarchiv nach oben https://www.donkarl.com?FAQ4.35Problem Du m�chtest, dass ein Access-Formular keine eigene Schlie�en-Schaltfl�che in seiner Titelleiste hat. Die entsprechende Eigenschaft f�r Formulare deaktiviert das Schlie�en-Symbol, wenn das Formular nicht maximiert ist. A97 hat aber den Bug, dass die Schlie�en-Schaltfl�che des Formulars bei maximiertem Formularfenster wieder aktiviert ist. (in neueren Versionen ist das behoben) L�sung Wenn du nur das Schlie�en des Formulares verhindern m�chtest, kannst du das Ereignis "Beim Entladen" des Formulares zum Abfangen verwenden (s. FAQ 1.12). Das hat den Vorteil, dass auch Windows-Tastenkombinationen wie+und der Men�befehl zum Schlie�en des Fensters nicht mehr funktionieren. Das Fehlverhalten von A97 ist hingegen nur per Windows-API zu verhindern. Das Code-Beispiel von Terry Kreft zeigt, wie man das Formular an die Gr��e des Access-MDI-Fensters anpassen kann, statt es maximiert zu �ffnen: nach oben https://www.donkarl.com?FAQ4.36Problem Du hast in einem Formular 2 (oder mehr) Kombinations- oder Listenfelder und m�chtest, dass der Inhalt des zweiten Kombis vom ersten abh�ngig ist, also nur mehr jene Datens�tze anzeigt, f�r die im ersten die �bergeordnete Kategorie gew�hlt wurde. L�sung Vorbemerkungen: Kombinationsfelder und Listenfelder sind diesbez. ident zu behandeln. Ich gehe auch nicht n�her auf die Tabellenstruktur ein. Im Normalfall sollte es zwischen den involvierten Tabellen eine 1:n-Beziehung geben. Angenommen du hast ein Formular "frm_Artikel" mit 2 Kombis. Eines "cbo_Gruppen" mit den Artikelgruppen, eines "cbo_Artikel" mit Artikeln. Nun m�chtest du die Artikelgruppe ausw�hlen und das zweite (abh�ngige) Kombi soll nur mehr jene Artikel zeigen, die dieser Gruppe angeh�ren. Enscheidend ist die Datensatzherkunft von cbo_Artikel. Es kann aber auch ein SQL-Ausdruck sein, der in der Eigenschaft Datensatzherkunft des abh�ngigen Kombis steht oder der im Ereignis-Code Nach Aktualisierung des �bergeordneten Kombis zugewiesen wird:
Wenn die Datensatzherkunft des abh�ngigen Kombis nicht - wie im letzten Beispiel - dynamisch zugewiesen wird sondern z.B. eine gespeicherte Abfrage ist, dann muss noch die Anzeige aktualisiert werden. Dazu kannst du im Ereigniscode Nach Aktualisierung des �bergeordneten Kombis die Requery-Methode verwenden: Bei http://www.pc-creativ.de/ (unter "Tools) gibt es eine Beispiel-mdb "CreaKombi" von Anette Ratjen mit verschiedenen Varianten. nach oben https://www.donkarl.com?FAQ4.37aktualisiert 2007-01-03Problem Du m�chtest in einem Textfeld eine Rechenformel eingeben, deren Ergebnis in einem anderen Textfeld erscheinen soll. L�sung Daf�r l�sst sich die Funktion Eval() verwenden. Angenommen das Textfeld hei�t "txt_Formel" und das Ergebnisfeld "txt_Ergebnis". Im Steuerelementinhalt von txt_Ergebnis k�nnte dann stehen:
St�rend ist dabei oft, dass man f�r Eval den Punkt als Dezimaltrennzeichen verwenden muss. Wenn im Textfeld mit dem Komma gearbeitet werden soll, kann man es mit Stringfunktionen oder ab A00 mit Replace (wesentlich einfacher) f�r Eval austauschen. Der Ausdruck im Ergebnisfeld k�nnte dann z.B. lauten:
Das Ergebnis wird so nur im Steuerelement angezeigt. Falls es gespeichert werden soll s. Berechnetes Feld speichern. nach oben https://www.donkarl.com?FAQ4.38aktualisiert 2007-01-03Problem Du m�chtest verhindern, dass beim Dr�cken der Tabulator-, Enter- oder Pfeiltaste im ersten/letzten Steuerelement eines Datensatzes zum vorigen/n�chsten Datensatz gewechselt wird. L�sung Stelle die Eigenschaft Zyklus des Formulares auf Aktueller Datensatz ein. s.a. Tasten BildAuf/BildAb deaktivieren nach oben https://www.donkarl.com?FAQ4.39aktualisiert 2016-09-06Problem Du m�chtest in einem Formular ein Textfeld mit einer fortlaufenden Nummer oder fortlaufenden Summe haben. L�sung Laufende Nummer Du kannst daf�r eine vorbereitende Abfrage verwenden, die bereits die laufende Nummer erzeugt. '************* CODE START ************
Laufende Summe Daf�r gibt's ebenfalls mehrere Varianten, z.B. per DAO-Programmierung oder mithilfe der DSum-Funktion: nach oben https://www.donkarl.com?FAQ4.40aktualisiert 2021-10-25Problem Du m�chtest in einem Formular mehrere Datens�tze markieren und dann per VBA ermitteln, welche markiert sind. L�sung Der Datensatzmarkierer von Access erlaubt nur eine zusammenh�ngende Markierung von Datens�tzen. Die-Taste hat hier nicht die sonst in Windows geltende Funktion einer getrennten Markierung. Wenn also mit dem Datensatzmarkierer mehrere DS markiert wurden, so kann man mithilfe der Seltop- und Selheight-Eigenschaften des Formulares eruieren, welche DS markiert sind. Ausf�hrliche Beispiele dazu bieten folgende KB-Artikel: KB-Artikel im Webarchiv Wenn es um die Markierung von Datens�tzen geht, die sich nicht unmittelbar untereinander befinden, ist der �bliche Workaround die Verwendung eines gebundenen Kontrollk�stchens, das dann in jedem DS gesetzt werden muss und z.B. mit einer Aktualisierungsabfrage wieder in einem Rutsch zur�ckgesetzt wird. Eine andere Variante ist die Verwendung eines Listenfeldes, bei dem die Eigenschaft Mehrfachauswahl auf Erweitert eingestellt ist. nach oben https://www.donkarl.com?FAQ4.41aktualisiert 2011-04-28Problem Du m�chtest ein Textfeld f�r eine Passwort-Eingabe verwenden, d.h. man soll beim Tippen nur die �blichen Sternchen sehen. L�sung Setze die Eigenschaft Eingabeformat des Textfeldes auf: Kennwort Zwei Anmerkungen zu diesem Themenbereich: - Eine h�ufige Frage ist, ob das auch mit VBA-Inputboxen geht. - Wenn sich der Cursor in dem Kennwort-Textfeld befindet und mitoder per Men�punkt/Ribbon die Rechtschreibpr�fung aktiviert wird, erscheint der eingegebene Text im Rechtschreibdialog in Klarschrift. Falls das ein Problem darstellt, sollte man die Funktionstaste deaktivieren (in den Starteigenschaften oder per Tastaturmakro) und den Men�- bzw. Ribboneintrag ausblenden. Wie funktioniert eine Aktualisierungsabfrage in Access?Klicken Sie auf der Registerkarte Entwurf in der Gruppe Abfragetyp auf Aktualisieren. In diesem Verfahren wird gezeigt, wie Sie eine Auswahlabfrage in eine Aktualisierungsabfrage ändern. Wenn Sie dies tun, fügt Access die Zeile Aktualisieren der Zeile im Abfrageentwurfsraster hinzu.
Was ist ein ungebundenes Formular?Alternativ können Sie ein "ungebundenes" Formular erstellen, das nicht direkt mit einer Datenquelle verknüpft ist, aber dennoch Befehlsschaltflächen, Beschriftungen oder andere Steuerelemente enthält, die Sie zum Bedienen der Anwendung benötigen.
Was ist ein Datensatz Access?Ein Datensatz besteht aus einer Sammlung von miteinander verknüpften, aber eigenständigen Daten, die entweder einzeln oder auch gemeinsam aufgerufen und weiterverarbeitet werden können. Jeder Datensatz ist in einer bestimmten Datenstruktur organisiert.
Was ist der Primärschlüssel bei Access?Ein Primärschlüssel ist ein Feld oder eine Gruppe von Feldern mit Werten, die in einer Tabelle eindeutig sind. Da jeder Datensatz einen anderen Wert für den Schlüssel hat, können Werte für den Schlüssel zum Verweisen auf ganze Datensätze verwendet werden. Jede Tabelle kann nur einen Primärschlüssel haben.
|