Hallo,
da ich keine Ahnung von VBA habe brauche ich mal Hilfe.
Anbei mein Datenbankbeispiel.
"_frmnavstart" ist mein Hauptformular. Hier wird die Datenbank geöffnet.
Mit dem Reiter "Warenausgang" wird mein Problem-Formular geöffnet.
Auf der linken Seite des Formulars ist eine Vorgangsübersicht.
Ich möchte nun, dass per Doppelklick auf dem Feld "ID" auf der rechten Seite der jeweilige Datensatz geöffnet wird.
Dies funktioniert aktuell auch, jedoch öffnet sich oben ein neuer Reiter und dies befindet sich nicht mehr in Hauptformular.
Folgenden Code habe ich für die Funktion benutzt, welcher im Unterformular "frmHal_Vorgangerfassung_1" ausgeführt wird:
Private Sub ID_Click()
' damit öffnest du das entsprechende Formular
DoCmd.OpenForm "frmHal_Vorgangerfassung"
' und hiermit stellst du das Formular auf deinen kunden ein ->
Forms!frmHal_Vorgangerfassung.Form.RecordSource = "SELECT * FROM tblVorgänge " & _
"WHERE ID =" & Me!ID
'(in dem Datensatz des kunden ist bestimmt die kundenid hinterlegt
End Sub
Ich habe nun alles mögliche probiert den Link zu ermitteln, damit sich das Formular ohne Reiter öffnet.
Kann mich jemand bei dem VBA Code unterstützen?
Vielen Dank für eure Hilfe!
Hallo,
warum so aufwendig, so reicht es:
Private Sub ID_Click()
DoCmd.OpenForm "frmHal_Vorgangerfassung", , , "ID =" & Me!ID
End Sub
Was Du jetzt allerdings mit dem Reiter meinst, habe ich nicht verstanden.
Da ich nur Access2003 habe, kann ich mir die DB nicht ansehen.
Erst mal danke für deine Hilfe.
Stimmt, das geht auch, aber leider löst dies nicht mein Problem.
Der Reiter öffnet sich immer noch.
Wie kommen wir jetzt weiter?
Ich kann mir nur das Backend mit Access 2007 ansehen. Am besten erstellst Du eine 2003er-Datenbank und lädst diese dann hoch oder Du beschreibst das Szenario verständlich.
Hallo,
der "neue" Reiter ist die Darstellung der Fenster mit Access-Option "Dokumente im Registerkartenformat".. Entweder wird dies auf "Überlappende Fenster" umgestellt oder das Form wird modal geöffnet:
DoCmd.OpenForm "frmHal_Vorgangerfassung", , , , , acDialog
Alternativ dazu führt auch die Einstellung der Form-Eigenschaft "Popup" auf Ja zum Ziel.
Hier die Datenbank als A2000-mdb (ungetestet)
Gruß
Josef
Ich kann die Formulare leider nicht öffnen - wüßte auch nicht, welches Formular zur Debatte steht.
Hallo,
die Formulare.accdb benutzt ein Navigationsformular mit zwei Navigationcontrols, was aber hier für das Problem keine Rolle spielt. Wenn in einem Navi-Ufo ein Feld (ID) angeklickt wird, wird ein weiteres Form direkt im Access-Fenster geöffnet (siehe u. st. Code) . Die Access -Optionen der akt. DB sind so eingestellt, dass Objekte im Access-Fenster in Registerkartenformat (Tabs) dargestellt werden, ergo öffnet sich das besagte Form als Vollbild mit einem "neuen Reiter" (Tab), was unerwünscht ist.
Ich kann jetzt nicht sagen, ob sich die Formulare (das Naviform) nach A2007 konvertieren lassen.
Die Access-Optionen
Hi,
wenn ich aber das Formular "frmHal_Vorgangerfassung" öffne ohne dass ich das Navigatonsformular nutze, erkennt Access dass das Formular bereits geöffnet wurde und öffnet keine weitere Registerkarte. Der Datensatz ist auch der richtige.
Deshalb meine Frage, ob ich direkt irgendwie beim Öffnen den direkten Link öffnen kann (so ungefähr.. =_frmnavstart!frmHal_Vorgangerfassung!frmHal_Vorgangerfassung1) ?? Vielleicht erkennt Access dies dann auch.
Ein POPUp Fenster finde ich keine gute Lösung. Auch die Registerlösung ist nicht schön. Ich würde gerne in meinem Formular bleiben und dort den Datensatz auswählen können.
Hat jemand eine Idee?
Danke
Ich hoffe ihr wisst was ich meine.
Gruß
Hallo,
unklar (jetzt), was Du meinst und überhaupt erreichen willst...
Und WO willst Du das neu geladene Form anzeigen? Soll das dann im Navigationsform angezeigt werden, wenn Du kein Popup willst?. Was hat das dann mit den (Access-)Reitern (Tabs)zu tun?
Hi,
erstmal wieder Danke.
ich möchte nur erreichen, dass wenn ich im linken Feld auf "ID" klicke, auf der rechten Seite der Datensatz, welche ich ausgewählt habe angezeigt wird.
Deshalb diese Lösung. Wenn du aber eine andere Idee hast, dann nehme ich auch gerne diese, Hauptsache ich kann den Datensatz irgendwie auswählen.
Datensätze kann man im Recordset des Formulars suchen. Wenn also beispielsweise in einem ungebundenen Kombi- oder Listenfeld IDs der Datensätze der Datenherkunft des Formulars aufgeführt werden, kann man im Nach Aktualisierung Ereignis des Steuerelements die ID im Recordset des Formulars suchen (und in diesem Fall auch sicher finden).Private Sub ListenfeldGebundenAnID_AfterUpdate()
Me.Recordset.FindFirst BuildCriteria("ID", dbLong, Me.ListenfeldGebundenAnID)
End Sub
Hallo,
warum sagst Du das denn nicht gleich?
Ändere die vorher gezeigte Prozedur so ab:
Private Sub ID_Click()
Me.Parent.Form.RecordSource = "SELECT * FROM tblVorgänge WHERE ID =" & Me!ID
End Sub
Hi,
du bist mein "Held des Tages".
Vielen Dank.
Hi,
kannst du mir bei noch einem Problem helfen? Im Anhang findet du das Beispiel.
Auch hier ist der Link:
_frmnavstart starten. Dann Warenausgang, und dort dann links unten auf die Such-Lupe linken.
In der folgenden Maske möchte ich, dass wenn ich auf eine ID Nummer klicken, dass Suchfenster geschlossen wird und dann der ausgewählte Vorgang in der Hauptmaske angezeigt wird.
Kannst du mir hier beim VBA helfen? Tausend Dank.
Hallo,
anbei
Danke, Danke, Danke.
Einfach tauschend Dank.