Hallo liebe Forumsgemeinde und Accessgenies,
ich stelle mich offenbar gerade sehr dumm an und studiere seit 3h Stunden erfolglos das Internet oder suche schlicht nach den falschen Schlüsselwörtern.
Ich habe ein Formular mit dem Namen "Hauptseite". Darauf habe ich ein Register mit Namen "Registerstr10" und drei Register (mit Nummerierung 0,1,2).
Ich möchte nun in Register 0 (auf dem mit dem Bericht "Bericht Aktuelle Arbeitspakete" alle relevanten Arbeitspakete aus der Datenbank zusammengefasst sind) auf einen Button klicken können und dadurch Register 2 aufrufen. Dort ist das Formular "ArbeitspaketeDetail" eingebettet. Dort soll natürlich nicht irgendein Arbeitspaket, sondern genau das Arbeitspaket mit der ID mit der ID von Registerseite 0 angezeigt werden.
Im Prinzip hätte ich gern so etwas
Forms!Hauptseite!RegisterStr10 = 2.Recordset.FindFirst "ID = " & Me.[ID]
was natürlich nicht funktioniert.
Ich hänge also bei der schlichten Öffnung des Registers fest:
Private Sub Öffnen_Click()
Forms!Hauptseite!RegisterStr10 = 2
End Sub
Ist einer so lieb und kann mir weiterhelfen?
Hallo,
bist Du sicher, da ein vernünftiges Konzept zu verfolgen?
Stimmt es auch , dass Du einen Bericht auf der 1. Reg-Seite anzeigst?
Prinzipiell ist sowas nur möglich, wenn beim Klick auf den Button die ID in eine globale Variable (oder Ähnliches, wie TempVar-Element) abgelegt wird und bei Ändern-Ereignis des Register-St.El. das Formular "ArbeitspaketeDetail" gefiltert wird.
Registerseiten haben eindeutige Werte, die im Eigenschaftsblatt als Seitenindex eingesehen werden können, wenn die Seite im Entwurfsmodus aktiviert ist. Zum Wechelsn auf eine bestimmte Seite, genügt es dann Me.RegisterStr10 = 4711 zu schreiben bzw. aus einem Unerformmular heraus Me.Parent.RegisterStr10 = 4711. Beim Zugriff auf ein Recordset eines Unterformulars spielt es keine Rolle, ob das Unteformularsteuerelement auf einer Seite oder sonstwo positioniert ist. Vom Unterformular erfolgt der Zugriff auf das Recordset eines anderen, parallel liegenden Unterformularsteuerelements mittels Me.Parent.NameDesAnderenUnterformularsteuerelements.Form.Recordset oder vom Hauptformular aus mittels Me.NameDesAnderenUnterformularsteuerelements.Form.Recordset.
Hallo ihr zwei!
@DF6GL:
bist Du sicher, da ein vernünftiges Konzept zu verfolgen? -> Eine schwere Frage und vielleicht etwas zu umfassen für so einen kleinen Unterpunkt. Es ist in der Tat ein Bericht. In der Übersicht sollen keine Einträge editiert werden, es geht mehr um den Überblick, deswegen dachte ich, dass Bericht hier gut wäre. Was wäre denn eine bessere Alternative?
@Lachtaube:
Das sind verdammt gute Hinweise, doch ich stelle mich noch beim Anwendungstransfer zu dämlich an. Soweit habe ich es verstanden und soweit funktioniert es natürlich auch.
Private Sub Öffnen_Click()
Me.Parent.RegisterStr10 = 2
End Sub
Jetzt fehlt natürlich noch die Zuordnung der richtigen ID und damit das Anzeigen des richtigen Datensatzes. Bitte sei so lieb und greif mir dabei noch mal unter die Arme...
Ich habe verstanden, dass ich die ID aus dem Bericht per Me.Parent.ID.Form.Recordset bekomme...(hoffe verstanden zu haben)
Aber wie wähle ich damit den Datensatz aus?
So geht es ja nicht
Me.Recordset.FindFirst "ID = " & Me.Parent.ID
Du musst das Unterformular adressieren, in dem die Suche stattfinden soll. Deine Anweisung bezieht sich auf das das Recordset desFormular, in welchem der Code hinterlegt ist und ausgeführt wird. Verwende also die vorletzte Form aus meiner Antwort und hänge dort die .FindFirst-Anweisung an.
PS: der des Unterformularsteuerelements kann wie der Name des darin beheimateten Formulars lauten - muss aber nicht. Am besten schaust Du im Eigenschaftblatt nach dem Namen.
Ich stehe noch immer auf dem Schlauch...das hier liefert mir ne Fehlermeldung
Private Sub Öffnen_Click()
Me.Parent.RegisterStr10 = 2
Me.Parent.ID.Form.Recordset.FindFirst "ID = " & Me.Parent.ID
End Sub
Also das Unterformular aus dem es kommt heißt BerichtAktuelleArbeitspakete. Das Unterformularsteuerelement, das ich haben möchte heißt ID. Die gefundene ID muss im nun aktuellen Unterformular ArbeitspaketeDetail mit ID abgeglichen und der entsprechende Datensatz ausgewählt werden.
Me.Parent.ArbeitspaketeDetail.Form.Recordset.FindFirst "ID=" & Me.ID
Also:
Private Sub Öffnen_Click()
Me.Parent.RegisterStr10 = 2
Me.Parent.ArbeitspaketeDetail.Form.Recordset.FindFirst "ID=" & Me.ID
End Sub
Vielen Dank! Das ist in der Tat eine der Varianten, die ich auf Deinen Tipp hin ausprobierte. Access haut allerdings auch hier ne Fehlermeldung raus: Laufzeitfehler 2465 - Anwendungs- oder Objektdefinierter Fehler.
Eine Idee, was das Problem ist?
Hallo,
lad mal die DB hier hoch, datenreduziert und gezippt.
Dann heißt das Unterformularsteuerelement vermutlich nicht ArbeitspaketeDetail.
Hier meine bisherige Datenbank... (deaktiviert da Lösung gefunden)
Hallo,
Du solltest erst mal die Beziehungen in Ordnung bringen bevor Du mit Abfragen und Formularen weiter machst.
- Beziehungen laufen immer über den Primärschlüssel und ggf. einen extra Fremdschlüssel
- es ist in den Beziehungen grundsätzlich referentielle Integrität einzustellen
- Die Mitarbeitertabelle muss 2x aufgenommen werden, sonst ist keine Unterscheidung zwischen Zugewiesen und Verantwortlich möglich
Was ist in der Projekttabelle der Unterschied zwischen der ID und der Projekt_ID ? Eines von beiden ist überflüssig, vermutlich die ID.
Erst wenn die Beziehungen passen, kannst Du Dich ernsthaft mit Abfragen und Formularen befassen.
Siehe Bild.
Hallo,
die Krux beim aktuellen Problem sind die falschen Namen der UFO_Steuerelemente:
Private Sub Öffnen_Click()
Me.Parent.RegisterStr10 = 2
Me.Parent.[Arbeitspakete im Detail].Form.Recordset.FindFirst "ID=" & Me.ID
End Sub
Hallo,
ZitatDann heißt das Unterformularsteuerelement vermutlich nicht ArbeitspaketeDetail.
Genau, das heisst "Bericht Aktuelle Arbeitspakete".
@xoius
Lies http://www.donkarl.com?FAQ4.2 (http://www.donkarl.com?FAQ4.2)
Die Codezeile muss also so aussehen
Me.Parent.[Arbeitspakete im Detail].Form.Recordset.FindFirst "ID=" & Me.ID
gruss ekkehard
edit:
War Franz mal wieder schneller.
Hallo,
ich würde trotzdem erst mal das Datenmodell bereinigen.
Ich danke euch allen. Ich dachte, ich hätte die Bezeichnung von "Arbeitspakete im Detail" in "ArbeitspaketeimDetail"geändert. Das hat scheinbar nicht so geklappt wie gedacht. Nun funktioniert es ausgezeichnet. Vielen vielen Dank für eure Geduld und eure Hilfe!
@MzKlMu: Deine vollkommen richtigen Anmerkungen habe ich natürlich auch übernommen.