Daten aus Unterformular im Hauptformular öffnen. (VBA)

Frager @, Freitag, 09.11.2018, 09:11 (vor 251 Tagen)

Hallo zusammen,

ich möchte gerne eine ausgewählte Zeile eines Unterformulars in ein Hauptformular übertragen, um den Datensatz darin zu editieren.

Der Aufbau: Ich habe ein Hauptformular, auf dem sich Reiter befinden. In einem dieser Reiter ist ein Unterformular. Dieses Unterformular zeigt in Listendarstellung alle Einträge. Klickt man nun doppelt auf die Leiste ganz links, geht ein neues Hauptformular auf. Und dieses Hauptformular geht auch ohne Fehlermeldung auf! Ich löse das hiermit aus:

Private Sub Form_DblClick(Cancel As Integer)
 
Dim IntID As Variant
IntID = txtID.Value
 
DoCmd.OpenForm "HF_RechercheDetailForm"
Forms!HF_RechercheDetailForm!ID = Me!txtID
 
End Sub

Klickt man nun also ganz links auf die Leiste in der jeweiligen Zeile, so öffnet sich das neue Hauptformular und überträgt auch die ID. Ich habe ein Kontrollfeld in das Formular aufgenommen. Mein Problem ist aber, dass der restliche Datensatz hier nicht reingeladen wird. Und ich habe keine Ahnung warum... Ist an dem Code irgendwas falsch? Könnte an dem neuen Hauptformular irgendwas falsch sein? Ich bin viel zu sehr Anfänger, als dass ich das gelöst bekomme. An diesen Punkt zu kommen, kostete mich schon 5 Arbeitstage.

Ich würde mich sehr über Hilfe freue!
Viele Grüße.

Daten aus Unterformular im Hauptformular öffnen.

Martin Asal @, Freitag, 09.11.2018, 20:31 (vor 251 Tagen) @ Frager

Hallo,

ich nehme mal an, HF_RechercheDetailForm hat eine Datensatzquelle. Dann sollte es wie folgt gehen:

Private Sub Form_DblClick(Cancel As Integer)
 
Dim IntID As Long    'kein Grund für Variant!
IntID = txtID.Value
 
DoCmd.OpenForm "HF_RechercheDetailForm"
DoCmd.GoToRecord acDataForm, "HF_RechercheDetailForm", acGoTo, IntID
 
End Sub

Ich habs jetzt aber nicht getestet

Martin

Daten aus Unterformular im Hauptformular öffnen.

Frager @, Montag, 12.11.2018, 14:25 (vor 248 Tagen) @ Martin Asal

Vielen Dank für deine Hilfe! Leider kommt es bei mir zu einem Laufzeitfehler, den ich aufgrund mangelnder VBA-Kenntnisse nicht beheben kann. In meiner Anweisung steht nun:

 
Private Sub Form_DblClick(Cancel As Integer)
 
Dim IntID As Variant
IntID = txtID.Value
 
DoCmd.OpenForm "HF_RechercheDetailForm"
DoCmd.GoToRecord acDataForm, "HF_RechercheDetailForm", acGoTo, IntID
 
End Sub
 

Und wenn ich diese Zeile in einem neuen Fenster mittels Doppelklick öffnen möchte, erhalte ich den Laufzeitfehler 2105. Der dazugehörige Hinweis lautet: "Sie können nicht zu dem angegebenen Datensatz springen.".

Die Datensatzquelle des 1. Formulars wie auch die des Formulars welches geöffnet wird, sind identisch. Was mache ich denn falsch?

Danke und beste Grüße
Martin

Daten aus Unterformular im Hauptformular öffnen.

Frager @, Montag, 12.11.2018, 15:35 (vor 248 Tagen) @ Frager

Ich habe es jetzt mal hiermit ausprobiert:

 
Private Sub Form_DblClick(Cancel As Integer)
 
Dim IntID As Variant
IntID = txtID.Value
 
DoCmd.OpenForm "HF_RechercheDetailForm"
 
DoCmd.OpenForm "HF_RechercheDetailForm", acNormal, , IntID, acFormReadOnly, acWindowNormal
 
End Sub
 

Das funktioniert zum ersten Mal ohne Fehler. Jedoch ist völlig egal, welche Parameter ich hier übergebe, es wird immer der erste Datensatz übergeben und nicht der mit "IntID" angeforderte.

Daten aus Unterformular im Hauptformular öffnen.

Martin Asal @, Montag, 12.11.2018, 19:10 (vor 248 Tagen) @ Frager

Hi,

sorry, manchmal sollte ich das, was ich schreibe, nicht nur im Zug sitzend aus dem Gedächtnis runterschreiben ;-) Mit GotoRecord gehst du soundsoviele Datensätze vor oder zurück, nicht zu einem Datensatz mit einer bestimmten ID.

Der folgende Code ist da schon sinnvoller:

 
Private Sub Form_DblClick(Cancel As Integer)
Dim f As Form
 
DoCmd.OpenForm "HF_RechercheDetailForm"
 
Set f = Forms("HF_RechercheDetailForm")
f.Recordset.FindFirst "ID=" & Me.txtID
Set f = Nothing
End Sub

(Eigentlich hätte mir ja auffallen müssen, dass man irgendwie angeben muss, nach welchen Feld denn gesucht werden soll. Sorry)

Martin

Daten aus Unterformular im Hauptformular öffnen.

Frager @, Mittwoch, 14.11.2018, 09:42 (vor 246 Tagen) @ Martin Asal

Hallo Martin, vielen Dank für deine Hilfe! Ich habe das ausprobiert und leider war´s erfolglos. Ich lese deine Zeilen so:


Dim f As Form

Deklaration einer Variable mit dem Hinweis, dass sie gleich eine Formularanweisung bekommt. -> Funktioniert

DoCmd.OpenForm "HF_RechercheDetailForm"
Öffnen des neuen Formulars. -> Funktioniert

Set f = Forms("HF_RechercheDetailForm";)
Weise f das Formular zu. -> Funktioniert

f.Recordset.FindFirst "ID=" & Me.txtID
Inhalt von f ist jetzt die Anweisung, den Inhalt aus "txtID" im Datensatz zu finden und darzustellen. -> txtID ist auch immer richtig, das war vorher nie ein Problem. Der Inhalt von txtID oder zuvor IntID (IntID = txtID.Value) war schon immer richtig

Set f = Nothing
f wird wieder geleert. ->Funktioniert, f ist wieder leer.

Und dennoch ist es so, dass der Datensatz mit der ID6 nicht aus der Tabelle in das Formular geladen wird. Das gesamte Formular ist leer. Ich habe schon diverse Umstellversuche deines Codes ausprobiert. Als Beispiel: Ich hätte angenommen, dass ich das Formular erst mit DoCmd.OpenForm öffnen darf, wenn ich vorher mit f.Recordset.FindFirst auch gesagt habe, was ich denn darin sehen will. Das bringt aber einen Fehler mit sich. Und dann bin ich auch schon mit meinem Latein am Ende. Dafür habe ich zu wenig Ahnung von VBA.

Daten aus Unterformular im Hauptformular öffnen.

Frager @, Mittwoch, 14.11.2018, 13:50 (vor 246 Tagen) @ Frager

Ganz interessant: Ich habe gerade mal ein neues Access Dokument begonnen. Wenn ich das dort so mache, ein einfaches Formular mit einer Listenansicht mit einem Doppelklick dazu zu bewegen, ein neues Formular zu öffnen und den Datensatz dort anzuzeigen, dann passiert auch genau das! In der eigentlich Datei wo´s aber gehen muss, passiert hingegen nichts!

Daten aus Unterformular im Hauptformular öffnen.

Martin Asal @, Mittwoch, 14.11.2018, 18:59 (vor 246 Tagen) @ Frager

Als Beispiel: Ich hätte angenommen, dass ich das Formular erst mit DoCmd.OpenForm öffnen darf, wenn ich vorher mit f.Recordset.FindFirst auch gesagt habe, was ich denn darin sehen will.

Nein, denn bevor das Formular nicht geöffnet ist, kann es mit set f= ... nicht zugewiesen werden (Es ist dann noch nicht in der Forms-Auflistung enthalten).

Wenn das Beispiel, wie du sagst, in einer neuen Datenbank funzt, ist also in deiner "richtigen" Datenbank, bzw einem deiner Formulare, irgendwas nicht korrekt eingestellt. Aber was, kann ich dir auch nicht sagen. sorry.

Martin

Daten aus Unterformular im Hauptformular öffnen.

Frager @, Donnerstag, 15.11.2018, 07:04 (vor 245 Tagen) @ Martin Asal

Ich denke, dass ich sie heute immer wieder neu aufsetzen werde und das immer wieder testen werde. Nützt ja nix.... Trotzdem ganz vielen Dank für deine engagierte Hilfe!!!

Daten aus Unterformular im Hauptformular öffnen.

Frager @, Donnerstag, 15.11.2018, 15:10 (vor 245 Tagen) @ Frager

Und das war´s dann auch. Ich habe die entsprechenden Formulare neu generiert. Ganz entspannt über den Assistenten. Und plötzlich geht es. Ich habe abschließend noch einmal alles miteinander verglichen. Leider ergebnislos, ich kann den Fehler partout nicht finden. Egal, nu geht´s ja.

Ganz vielen Dank für die Hilfe!

RSS-Feed dieser Diskussion
powered by my little forum