PDA

Vollständige Version anzeigen : Aktualisierung von Unterformular


rafzio
28.09.2005, 09:00
Hallo,

Ich bin kein Profi in Access. Mein Problem ist folgendes:

Ich habe 2 Tabellen A,B. Beide sind durch eine Relation n:m verbunden (z.B. zu eine Autor kann es mehrern Titel geben, ein Titel kann mehrere Autoren haben). Ich habe ein Formular für Eingabe von Tabelle A. In einem Unterformular werden alle Datensätze angezeigt, die dem aktuellen Datensatz in der Tabelle B zugeordnet sind. Diese funktioniert einwandfrei. Ich will aber dem Benutzer erlauben, neue Datensätze in der Tabelle B einzugeben. Dazu habe ich eine Schaltfläche definiert, mit der das Eingabeformular für die Tabelle B eingeblendet wird. Das funktioniert auch. Nach dem schliessen des Formulars für Tabelle B, wenn ich ein Feld in dem Unterformular klike, werden neue Datensätze nicht angezeigt, ich muss zuerst das ganze Formular schliessen und wieder öffen, damit die Änderungen sichtbar werden. Ich habe versucht die Basic-Befehle Requery und Refresh einzubauen, aber ohne Erfolg.
Wie kann ich die Aktualisierung des Unterformulars erzwingen?

Ich werde für jeden Hinweis dankbar

Rafal Ziolkowski

molnar
28.09.2005, 09:12
Im Hauptformular: Me.Unterformularname.Requery

Reinhard

rafzio
28.09.2005, 09:33
Hallo,

Danke für den schnellen Hinweis. Funktioniert aber nur Teilweise: nur wenn ich im Formular B einen Eintrag ändere, wenn aber ein neuer hinzugefügt wird, dann erscheint dieser nicht in der Dropdown-Liste.

Rafael Ziolkowki

molnar
28.09.2005, 10:39
Welche Dropdownliste?

Reinhard

rafzio
28.09.2005, 11:10
Hallo,

Leider kenne ich die deutschen Bezeichnungen für die visuellen Elemete von Windows. Ich komme von Delphi dort wird eine Dropdown-Liste als ComboBox bezeichnet. Es ist ein Textfeld, das über eine Schaltfläche verfügt (rechts). Wenn man diese anklikt wird eine Liste eingeblendet, ähnlich wie bei Menu, aus der man einen Eintrag wählen. MsAccess setzt es bei Tabellen ein, die in einer Beziehung zueinander stehen.
In meiner Datenbank müssen Tabellen A und B mit einer dritten Tabelle C verbunden werden damit eine n:m Beziehung möglich sind. Ein Datensatz besteht dort aus schlüsseln der Tabellen A, und B, die miteinander kombiniert werden. Mit einer Abfrage kann man für einen Element der Tabelle A alle passenden Datensätze aus der Tabelle B abfragen. Das gleiche gilt in umgekehrten Richtung.
Der Unterformular stellt eine solche Abfrage dar. Wenn ich im Hauptformular ein Datensatz einstelle, werden in der Tabelle im Unterformular alle passenden Datensätze in der Tabelle B ausgesucht. Ich kann sie edieren, dazu klike ich eine Zelle im Unterformular, dort erscheint eine ComboBox mit aller Datensätzen aus der Tabelle B. Da die Abfrage auf der Tabelle C beruht, kann ich enteweder einen Eintrag ersetzen durch einen ändern Eintrag aus der Tabelle B, oder einen neuen Rekord dazugeben, der Eintrag muss aber schon in der Tabelle B existieren. Deswegen muss das Eingabeformular für Tabelle B aufrufen um dort einen neuen Eintrag einzugeben. Was ich erreichen will, dass nach Abschluss, dieser neuer Eintrag in der ComboBox (vielleicht heisst es Listenfeld?) zur Auswahl steht. Das geschieht nicht mit Hilfe von Unterformular.requery.

Es ist etwas lang geworden, aber ich konnte keine einfachere Erklärung finden. Entschuldigung für sprachliche Fehler, ich komme aus Polen.

Rafal Z

Smaug
28.09.2005, 11:40
Beim Schliessen des Eingabeformulars (TabelleB):
Forms!FormularnameVonTabelleA!Unterformularsteuerelementname.Form.Requery wäre ein Versuch wert.

rafzio
28.09.2005, 14:53
Hallo,

Dieses hat nicht geholfen, aber der Pfad ist gut. Was ich nicht wiess, ist wie ich an ein Unterformular komme zB.

Forms!FormularnameVonTabelleA!Unterformularsteuerelementname.Form.unterformular name.Requery

Dieses funktioniert nicht. Wie kann ich Kontrollelemente über die Forms-Eigenschaft erreichen?

Rafal Z

Smaug
29.09.2005, 06:24
Requery des Unterformulars selbst funktioniert über:
Forms!HF!Unterformularsteuerelement.Form.Requery
Den Namen des Unterformulars brauchst Du dabei nicht mehr da dieses bereits über die Form-Eigenschaft angesprochen wird.
Wenn die Programmierung nicht aus einem anderen Formular heraus erfolgt sondern direkt aus dem Hauptformular verkürzt sich das Ganze auf:
Me!Unterformularsteuerelement.Form.Requery

Steuerelement in Unterformular:
Forms!HF!Unterformularsteuerelement.Form!SteuerelementUFo
hier auch ein allgemeiner Artikel aus dem Code-Archiv (mit einer Zugriffstabelle am Ende des Dokumentes): http://www.ms-office-forum.net/forum/showthread.php?t=125416

rafzio
30.09.2005, 11:01
Danke für die Hinweise, den Artikel werde ich durchlesen. Allerdings habe ich erst dann mein Ziel erreicht, als ich in der Ereignisprozedur im Englischen "Enter" des Kombifelds seine Requery funktion aufgerufen habe.
Inzwischen habe ich neues problem: wie kann ich auf das Drücken der Taste in der Gruppe für das Bewegen zwischen Datensätzen, die zur Eingabe eines neuen Datensatzes dient? Unter den Ereignissen in den Eigenschaften des Formulars habe ich nichts dazu gefunden.

Grüsse

Rafal Z