Access unterformular vorwärts immer gleich

Hinweis: Das Ändern der Eigenschaft Standardansicht für eine Tabelle oder Abfrage bestimmt, wie sie bei jedem Öffnen angezeigt wird, egal ob das Öffnen im Navigationsbereich oder in einem Unterformular/-bericht-Steuerelement erfolgt. Da das Ändern der Ansichtseinstellungen für eine Tabelle manchmal zu Verwirrung führen kann, wenn die Tabelle aus dem Navigationsbereich heraus geöffnet wird, empfiehlt es sich, für dieses Verfahren eine Abfrage anstelle einer Tabelle zu verwenden.

Erich Walczak

2004-06-30 12:06:30 UTC

Permalink

Hallo Henry

Post by Henry Habermacher [MVP Access]
Hallo Erich

Post by Erich Walczak
ich arbeite mit Access 2000 und habe dort ein Unterformular in einem
Formular erstellt. Das Formular arbeitet mit Tabelle "a" und das
unendlich- Beziehung verknüpft.
Sowohl im Formular, als auch im Unterformular habe ich Felder mit VBA
erstellt, die den jeweiligen aktuellen, als auch den letzten
Datensatz zeigen. Während nun im Formular mit der Tabelle "a" über
entsprechende Buttons (zum Anfang, vorwärts, rückwärts, zum Ende)
problemlos durch das Formular geblättert werden kann und die
entsprechenden Datensätze auch einwandfrei angezeigt werden, passiert
im Unterformular NICHTS!
Wie kann ich im Unterformular die Anzeige des ersten (normalerweise
immer 1) und jeweiligen letzten Satzes (unterschiedlich) der
zugehörigen Verknüpfung durch Betätigen der oben erwähnten Buttons im
Formular mittels VBA lösen?

Du musst die "Verknüpfen von" und "Verknüpfen nach" Eigenschaften des
Unterformular Steuerelementes auf die Felder setzen, über die die
Tabelle a und die Tabelle b verknüpft werden, dann funktioniert das
automatisch.
Gruss
Henry
--
Keine E-Mails auf Postings in NGs senden!
Don't send e-mails to postings in newsgroups!
KB: //support.microsoft.com/default.aspx
FAQ: //www.donkarl.com/AccessFAQ.htm
OH: Online Hilfe von Microsoft Access (Taste F1)
Downloads: //www.dbdev.org

Die Verknüpfung ist vorhanden, jedoch nur in den Eigenschaften für das Unterformular selbst. Die beiden von mir angesprochenen
Felder (es handelt sich um Bezeichnungsfelder) zur Anzeige des jeweiligen ersten und letzten Datensatzes der Tabelle "b" für das
Unterformular haben keine "Verknüpfen von"- bzw. "Verknüpfen nach"- Eigenschaft.

Hast Du evtl. noch einen Tipp?

Gruß
Erich

Erich Walczak

2004-07-01 12:13:16 UTC

Permalink

Hallo Henry,

Post by Henry Habermacher [MVP Access]
Hallo Erich

Post by Erich Walczak
Die Verknüpfung ist vorhanden, jedoch nur in den Eigenschaften für
das Unterformular selbst. Die beiden von mir angesprochenen Felder
(es handelt sich um Bezeichnungsfelder) zur Anzeige des jeweiligen
ersten und letzten Datensatzes der Tabelle "b" für das Unterformular
haben keine "Verknüpfen von"- bzw. "Verknüpfen nach"- Eigenschaft.

In diesem Fall mach eine Ereignisprozedur "beim Anzeigen" ins UFO rein
und mach dort auf die beiden Felder ein Requery
Private Sub Form_Current()
Me!DeinFeld1.Requery
Me!DeinFeld2.Requery
End Sub
Die beiden Felder musst Du natürlich so füllen, dass diese auf der
aktuellen Auswahl im HFO beruhen, oder sich auf das Link Feld des UFOs
beziehen, welches ja den Wert wechselt, wenn das HFO den wert wechselt.
Der Requery macht dann beim Datensatz anzeigen, dass die beiden Felder
neu eingelesen werden.
HTH
Henry
--
Keine E-Mails auf Postings in NGs senden!
Don't send e-mails to postings in newsgroups!
KB: //support.microsoft.com/default.aspx
FAQ: //www.donkarl.com/AccessFAQ.htm
OH: Online Hilfe von Microsoft Access (Taste F1)
Downloads: //www.dbdev.org

zunächst einmal vielen Dank für Dein Mitmachen und Deine Tipps. Leider habe ich aber bisher keinen Erfolg damit gehabt.

Ich habe allerdings das Problem zum Anzeigen des letzten Datensatzes in der zugehörigen Tabelle "b" zunächst wie folgt gelöst:

Ich habe im UFO (zugehörige Tabelle "b") einen Button "Datensatz aktualisieren" erstellt. Dieser Button ruft beim Klicken folgende
Prozedur auf:

Public Sub datensatzaktualisieren()
DoCmd.GoToRecord , , acLast
Me!txtletztersatz = CurrentRecord
End Sub

Hierdurch wird dann der letzte Satz einwandfrei aktualisiert, ist jedoch umständlich. Mir ist es allerdings bisher nicht gelungen,
diese Prozedur aus dem HFO (zugehörige Tabelle "a") aufzurufen.

Ich habe auch nur den Befehl

DoCmd.GoToRecord , , acLast
Me!txtletztersatz = CurrentRecord

im HFO verwendet, wobei ich dann dort für "Me!" die Ausdrucksweise "Forms!HFO!HFU.Form!" angewendet habe. Problematisch ist hier die
Zeile "DoCmd.GoToRecord , , acLast", die sich ja im HFO ja auf die Tabelle "a" und nicht wie erforderlich auf die Tabelle "b"
bezieht. Das funktioniert natürlich nicht!

Kurz und gut. Hast Du hierzu vielleicht auch noch einen Tipp?

Gruß
Erich

Henry Habermacher [MVP Access]

2004-07-01 12:35:45 UTC

Permalink

Hallo Erich

Erich Walczak wrote in news:cc0v7m$j0q$03$***@news.t-online.com:

Bitte keine Fullquotes mehr, danke

Post by Erich Walczak
Ich habe allerdings das Problem zum Anzeigen des letzten Datensatzes
Ich habe im UFO (zugehörige Tabelle "b") einen Button "Datensatz
aktualisieren" erstellt. Dieser Button ruft beim Klicken folgende
Public Sub datensatzaktualisieren()
DoCmd.GoToRecord , , acLast
Me!txtletztersatz = CurrentRecord
End Sub
Hierdurch wird dann der letzte Satz einwandfrei aktualisiert, ist
jedoch umständlich. Mir ist es allerdings bisher nicht gelungen,
diese Prozedur aus dem HFO (zugehörige Tabelle "a") aufzurufen.
Ich habe auch nur den Befehl
DoCmd.GoToRecord , , acLast
Me!txtletztersatz = CurrentRecord
im HFO verwendet, wobei ich dann dort für "Me!" die Ausdrucksweise
"Forms!HFO!HFU.Form!" angewendet habe. Problematisch ist hier die
Zeile "DoCmd.GoToRecord , , acLast", die sich ja im HFO ja auf die
Tabelle "a" und nicht wie erforderlich auf die Tabelle "b" bezieht.
Das funktioniert natürlich nicht!

DoCmd geht immer auf das aktuelle Formular und das ist das HFO. Wenn Du
willst, dass das UFO betroffen wird, dann musst Du im HFO den Focus
zuerst auf das UFO legen.

Ich weiss immer noch nicht, was das Problem mit dem Feld txtLetzterSatz
ist. Mit einem DMax() müsste das doch direkt einlesbar sein, wo liegt
das Problem?
CurrentRecord des letzten Datensatzes gibt doch nichts anderes wieder
als die Anzahl Datensätze, die im UFO angezeigt werden. Wieso machst Du
nicht einfach:

Me!DeinUFO!txtletztersatz = Me!DeinUFO.Form.RecordsetClone.RecordCount

das gibt doch dann die gleiche Zahl. Falls diese kleiner ist, als
erwartet:

Dim rs as Recordset
set rs = Me!DeinUFO.Form.RecordsetClone
rs.movelast
me!DeinUFO!txtletztersatz = rs.Recordcount
set rs = nothing

Oder einfach (mal angenommen, das UFO sei über ID and das HFO gebunden,
die Datenquelle heisse TabelleB)

me!txtletztersatz = DCount("*", "TabelleB", "ID=" & Me!ID)

müsste auch das gleiche Ergebnis geben. Viele Wege führen nach Rom,
einige sind holperiger. Es gibt aber auch wege, die nach Südostasien
führen und da bist Du dann ganz schön weit vom Ziel weg ;-)

Gruss
Henry

--
Keine E-Mails auf Postings in NGs senden!
Don't send e-mails to postings in newsgroups!
KB: //support.microsoft.com/default.aspx
FAQ: //www.donkarl.com/AccessFAQ.htm
OH: Online Hilfe von Microsoft Access (Taste F1)
Downloads: //www.dbdev.org

Was ist ein unterformular Access?

Wenn Sie beispielsweise ein Formular in der Layout- oder in der Entwurfsansicht bearbeiten und eine Tabelle oder Abfrage aus dem Navigationsbereich auf das Formular ziehen, wird von Access ein Unterformular/-bericht-Steuerelement erstellt, das die Daten in dem Objekt anzeigt.

Welches Werkzeug von Access unterstützt Sie dabei die Größe Position und Darstellung von Steuerelementen exakt einzustellen?

Standardmäßig bleiben die Steuerelemente in einem Access-Formular in der oberen linken Ecke des Formulars verankert und ändern die Größe nicht, wenn Sie die Größe des Formulars ändern. Um dieses Verhalten zu ändern, können Sie den Befehl Ankern verwenden.

Wie erstellt man ein Formular in Access?

Um ein Formular aus einer Tabelle oder Abfrage in Ihrer Datenbank zu erstellen, klicken Sie im Navigationsbereich auf die Tabelle oder Abfrage, die die Daten für Ihr Formular enthält, und klicken Sie auf der Registerkarte Erstellen auf Formular . Access erstellt ein Formular und zeigt es in der Layoutansicht an.

Toplist

Neuester Beitrag

Stichworte