Bestimmten Datensatz eines Formulars öffnen

Hallo:smile:
Ich hoffe ihr könnt mir bei meinem kleinen Accessproblem weiterhelfen.
Ich habe ein Formular (Form2) mit mehreren Datensätzen. Dieses Formular öffnet sich aus einem Befehl heraus, welcher wiederum in einem Formular (Form1) mit mehreren Datensätzen vorhanden ist. Soweit so gut. Nun öffnet sich natürlich Form2 mit dem ersten Datensatz. Ich möchte aber mithilfe eines VBL-Codes erreichen, dass sich Form2 mit dem Datensatz öffnet, der auch gerade in Form1 aktiv ist.
Mit einem Makro kann ich ja immer nur auswählen, dass der letzte/erste usw. Datensatz geöffnet werden soll.

Ich hoffe meine Frage ist einigermaßen verständlich, wenn nicht dann könnt ihr natürlich jederzeit nachfragen:smile:

Ich freu mich auf alle Lösungsvorschläge!

Claudia

Hallo:smile:
Ich hoffe ihr könnt mir bei meinem kleinen Accessproblem
weiterhelfen.
Ich habe ein Formular (Form2) mit mehreren Datensätzen. Dieses
Formular öffnet sich aus einem Befehl heraus, welcher wiederum
in einem Formular (Form1) mit mehreren Datensätzen vorhanden
ist. Soweit so gut. Nun öffnet sich natürlich Form2 mit dem
ersten Datensatz. Ich möchte aber mithilfe eines VBL-Codes
erreichen, dass sich Form2 mit dem Datensatz öffnet, der auch
gerade in Form1 aktiv ist.
Mit einem Makro kann ich ja immer nur auswählen, dass der
letzte/erste usw. Datensatz geöffnet werden soll.

Ich hoffe meine Frage ist einigermaßen verständlich, wenn
nicht dann könnt ihr natürlich jederzeit nachfragen:smile:

Hallo,

vergiß Makros (obwohl man dort auch ein Öffnungs-Kriterium angeben kann)!

Docmd.Openform „Form2“,„ID=“ & Me!ID

ID ist der Primärschlüsselfeld in der Tabell und hier vom DAtentyp Zahl,Long angenommen.

Ich rate aber dringend davon ab, ein- und denselben DS von zwei unterschiedlichen Formularen anzeigen zu lassen…

Viele Grüße vom Bodensee
Franz , DF6GL

PS: Feedback erwünscht!

Danke, erstmal für deine Antwort, aber so richtig will das nicht funktionieren, denn durch den Befehl muss ich immer nochmal die ID eingeben und das ist ziemlich umständlich…
warum rätst du denn davon ab?
mir ist gerade noch eine andere Idee gekommen und zwar könnte ich aus Form2 ja auch ein Unterformular von Form1 machen und mir das nur anzeigen lassen, wenn ich in meinem Kombinationsfeld von Form1 einen bestimmten Datensatz (als Beispiel „Ring“) auswähle…
nur weiß ich da erst Recht keinen VBA-Code :frowning:
wäre die zweite Lösung besser, falls ja kann mir dann vielleicht jemand mit dem VBA-Code weiterhelfen?

Dankeschön:smile:

Danke, erstmal für deine Antwort, aber so richtig will das
nicht funktionieren, denn durch den Befehl muss ich immer
nochmal die ID eingeben und das ist ziemlich umständlich…

naja, Me!ID muß halt als Textfeld für die Anzeige des Primärschlüsselfeldes vorhanden sein.

Außerdem solltest Du Deine Feldnamen dort einsetzen.

warum rätst du denn davon ab?

Weil die zwei Formulare sich wie zwei User verhalten, die denselben DS (evtl.) ändern wollen, und das geht in die Hose.

mir ist gerade noch eine andere Idee gekommen und zwar könnte
ich aus Form2 ja auch ein Unterformular von Form1 machen und
mir das nur anzeigen lassen, wenn ich in meinem
Kombinationsfeld von Form1 einen bestimmten Datensatz (als
Beispiel „Ring“) auswähle…
nur weiß ich da erst Recht keinen VBA-Code :frowning:
wäre die zweite Lösung besser, falls ja kann mir dann
vielleicht jemand mit dem VBA-Code weiterhelfen?

„Besser“ ist nicht das richtige Wort, es ist lediglich eine andere Methode. Das Sperrproblem bleibt, nur die Darstellung ist etwas anders.

VBA-Code brauchst Du in diesem Fall nicht, es genügt, die UFO-Steuerelement-Eigenschaften „Verknüpfen von/nach“ auf die richtigen Feldnamen zu setzen.

Viele Grüße vom Bodensee
Franz , DF6GL

PS: Feedback erwünscht!

Ok, dann bleibe ich bei der ersten Lösung…
also ich habe jetzt folgenden Code:

Private Sub Probenart_AfterUpdate()
Dim Ring As String

Ring = Me!Probenart.Text
DoCmd.OpenForm „Ring“, , , „Probennummer“ & Me!Probennummer
End Sub

„Probenart“ ist das Kombinationsfeld, bei dem ich unter anderem den Datensatz „Ring“ auswählen kann.
„Ring“ ist das Formular, welches sich öffnet und „Probennummer“ ist der Primärschlüssel der Ursprungstabelle.
Wenn ich jetzt „Ring“ im Kombinationsfeld auswähle, erscheint zunächst ein Fenster, wo ich aufgefordert werde die Probennummer einzugeben und erst dann geht das eigentliche Formular „Ring“ auf.
Wie bekomme ich diese Abfrage der Probennummer weg?

Claudi

Hallo,

indem Du das Ganze richtig stellst…

Private Sub Probenart_AfterUpdate()
DoCmd.OpenForm „Ring“, , , "Probenart = " & Me!Probenart
End Sub

„Probenart“ ist das Kombinationsfeld, bei dem ich unter
anderem den Datensatz „Ring“ auswählen kann.
„Ring“ ist das Formular, welches sich öffnet und
„Probennummer“ ist der Primärschlüssel der Ursprungstabelle.
Wenn ich jetzt „Ring“ im Kombinationsfeld auswähle, erscheint
zunächst ein Fenster, wo ich aufgefordert werde die
Probennummer einzugeben und erst dann geht das eigentliche
Formular „Ring“ auf.
Wie bekomme ich diese Abfrage der Probennummer weg?

Das hört sich verworren an…

poste mal den Aufbau der beteiligten Tabellen (Feldnamen,Primärschlüssel, Datentypen), die Kombifeld-Abfrage und die evtl. Formualrabfrage, bzw. den Namen der Tabelle für die Datenherkunft.

Viele Grüße vom Bodensee
Franz , DF6GL

PS: Feedback erwünscht!

Damit kommt aber immernoch eine Abfrage:frowning:…

also nochmal geordnet:
Ich habe eine Tabelle „Probenpaar“ mit den Feldnamen „Probennummer“ (das ist auch der Primärschlüssel), „Probenhalter“, „Probenart“, „Außendurchmesser“,
„Innendurchmesser“ und „Radius“.
Für die Eingabe der Daten habe ich das Formular „Probenpaar“, mit den Feldern „Probennummer“, „Probenhalter“ und „Probenart“, .
Wobei es sich bei dem Feld „Probenart“ um ein Kombinationsfeld mit dem Inhalt „Ring“ und „Stift“ handelt.
Bei jeder Probenart (also Ring oder Stift) sind andere Parameter wichtig:
Bei Probenart „Ring“ der „Außendurchmesser“ und „Innendurchmesser“. Bei Probenart „Stift“ der „Radius“. Dadurch habe ich für die zwei Probenarten extra Formulare mit den Namen „Ring“ und „Stift“ angelegt, in denen jeweils die zugehörigen Parameter eingegeben werden können.

So und nun möchte ich erreichen, dass sich zum Beispiel mein Formular „Ring“ öffnet, wenn ich im Kombinationsfeld „Ring“ auswähle. Aber es soll sich genau der Datensatz öffnen, der gerade im Formular „Probenpaar“ bearbeitet wird, weil ich ja sonst nur Murx in meine Tabelle schreiben würde bzw. im Formular „Ring“ erst zum eigentlichen Datensatz wechseln müsste!

Das war eine lange Ausführung, aber ich hoffe etwas verständlicher. Kurz ist das ganze irgendwie nicht erklärbar, tut mir leid!

Claudia

HAllo Claudia,

Ich habe eine Tabelle „Probenpaar“ mit den Feldnamen
„Probennummer“ (das ist auch der Primärschlüssel),
„Probenhalter“, „Probenart“, „Außendurchmesser“,
„Innendurchmesser“ und „Radius“.
Für die Eingabe der Daten habe ich das Formular „Probenpaar“,
mit den Feldern „Probennummer“, „Probenhalter“ und
„Probenart“, .
Wobei es sich bei dem Feld „Probenart“ um ein Kombinationsfeld
mit dem Inhalt „Ring“ und „Stift“ handelt.
Bei jeder Probenart (also Ring oder Stift) sind andere
Parameter wichtig:
Bei Probenart „Ring“ der „Außendurchmesser“ und
„Innendurchmesser“. Bei Probenart „Stift“ der „Radius“.
Dadurch habe ich für die zwei Probenarten extra Formulare mit
den Namen „Ring“ und „Stift“ angelegt, in denen jeweils die
zugehörigen Parameter eingegeben werden können.

Das zweite Form ist eigentlich überflüssig. steuere doch anhand der Kombifeldauswahl die Sichtbarkeit der zugehörenden Parameter gleich im Ausgangsform.

So und nun möchte ich erreichen, dass sich zum Beispiel mein
Formular „Ring“ öffnet, wenn ich im Kombinationsfeld „Ring“
auswähle. Aber es soll sich genau der Datensatz öffnen, der
gerade im Formular „Probenpaar“ bearbeitet wird, weil ich ja
sonst nur Murx in meine Tabelle schreiben würde bzw. im
Formular „Ring“ erst zum eigentlichen Datensatz wechseln
müsste!

ja, ok, halt so:

Sub Ring_Afterupdate()
Docmd.OpenForm Me!Ring ,„Probennummer=“ & Me!Probennummer
End Sub

Das war eine lange Ausführung, aber ich hoffe etwas
verständlicher. Kurz ist das ganze irgendwie nicht erklärbar,
tut mir leid!

Es braucht Dir nicht leid zu tun, es ist immer besser, mehr als nötig zu erklären.

Versteh schon, was Du machst, nur das Problem mit evtl. Datansatzsperrung bleibt.

So aber nicht (nur ein Form):

Sub Form_Load()
Me!Außendurchmesser.visible=false
Me!Innendurchmesser.visible=false
Me!Radius.visible=false
End Sub

Sub Form_Current()
Ring_Afterupdate
End Sub

Sub Ring_Afterupdate()

If Me!Ring = „Ring“ then
Me!Außendurchmesser.visible=true
Me!Innendurchmesser. visible=true
Me!Radius.visible=false
Elseif Me!Ring = „Stift“ Then
Me!Außendurchmesser.visible=false
Me!Innendurchmesser.visible=false
Me!Radius.visible=true
End Sub

Viele Grüße vom Bodensee
Franz , DF6GL

PS: Feedback erwünscht!

Hallo,
also ich versiche das gerade mit einem Formular umzusetzen, aber irgendwie funktioniert das noch nicht wirklich. Ich habe der einfachheithalber erstmal nur den Code umgesetzt:

Private Sub Form_Open(Cancel As Integer)
Me!Außendurchmesser.Visible = False
Me!Innendurchmesser.Visible = False
Me!Dicke.Visible = False
End Sub

Sub Probenart_Current()
Ring_Afterupdate
End Sub

Sub Ring_Afterupdate()

If Me!Ring = „Ring“ Then
Me!Außendurchmesser.Visible = True
Me!Innendurchmesser.Visible = True
Me!Dicke.Visible = False
End Sub

Wenn ich jetzt das Formular Probenpaar öffne, sind tatsächlich die Felder „Außendurchmesser“, „Innendurchmesser“ und „Dicke“ ausgeblendet. Aber wenn ich in meinem Kombinationsfeld „Probenart“ „Ring“ auswähle, verändert sich nichts:frowning:…
Was mach ich denn nun schon wieder falsch. Zum verzweifeln:frowning:

Claudia

Ok, also ich habe nochmal rumprobiert und bin sogar auf eine Lösung gekommen, juhuuuuuu:smile::

Private Sub Form_Open(Cancel As Integer)
Me!Außendurchmesser.Visible = False
Me!Innendurchmesser.Visible = False
Me!Dicke.Visible = False
End Sub

Private Sub Probenart_Click()
If Me!Probenart.Value = „Ring“ Then
Me!Außendurchmesser.Visible = True
Me!Innendurchmesser.Visible = True
Me!Dicke.Visible = False
End If

Also, wenn ich „Ring“ im Kombinationsfeld „Probenart“ auswähle, werden die Felder „Außendruchmesser“ und „Innendurchmesser“ sichtbar!
Noch irgendwelche Verbesserungsvorschläge bzw. Ergänzungen?

Claudia