Hallo Wissende,
ich möchte in einem UFO mit Doppelklick auf eine Positionsnummer die Nummer des geklickten Datensatzes in einem anderen UFO anspringen, also theoretisch
Private Sub Position_DblClick(Cancel As Integer)
Parent!frmBearbeitung!DoCmd.GoToRecord , , acGoTo, Form.CurrentRecord
End Sub
Ich habe schon geahnt, dass man dies "GotoRecord" nicht auf diese Weise fremdsteuern kann. Aber ich denke, es wird so klar, was ich gern möchte. Habt ihr da eine Idee für mich?
Ich weiß, dass ich einen Filter "auf die Ferne" setzen könnte, aber das möchte ich nicht, denn im Bearbeitungsufo ist eine Datensatznavigation aktiv, man soll also von diesem Einstieg aus auch vor- und zurückblättern können.
Viele Grüße und vielen Dank im voraus
Hans-Jürgen
Das geht z.B. mit Hilfe der FindXXX-Methoden des Recordset-Objekts.
Siehe auch:
https://learn.microsoft.com/en-us/office/client-developer/access/desktop-database-reference/recordset-findfirst-method-dao (https://learn.microsoft.com/en-us/office/client-developer/access/desktop-database-reference/recordset-findfirst-method-dao)
Hallo Knobbi,
vielen Dank für die schnelle Antwort. Ich habe mich auf "FindFirst" beschränkt, weil jeder gesuchte Wert genau einen Treffer findet. Trotzdem klappt es leider nicht, einen meiner Versuchscodes siehe unten. Ich habe aber auch in der FindFirst-Zeile vieles rumprobiert (z.B. statt der Variable mit einem festen Wert verglichen), immer kommt "Operation wird für diesen Datentyp nicht unterstützt"
Ich gehe davon aus, dass das Statement hinter FindFirst einem SQL-WHERE entspricht und habe deshalb auch rein im Textbereich ein vorhandenes Feld "Nachname" mit einem vorhandenen Eintrag "Meier" zu finden - vergeblich. (rst.FindFirst "[Nachname] LIKE 'Maier'".
Immer der gleiche Fehler.
Was mache ich falsch? Gibt es noch einen anderen Weg?
Vielen Dank
Hans-Jürgen
Private Sub Position_DblClick(Cancel As Integer)
Dim dbs As DAO.Database
Dim rst As DAO.Recordset
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("tblBasisdaten")
rst.FindFirst "[Position] LIKE " & CStr(Form.CurrentRecord)
rst.Close
Set rst = Nothing
Set dbs = Nothing
End Sub
Hallo Hans-Jürgen,
Vorab, LIKE ohne Jokerzeichen (*. ?) ist "=".
Um in einem UFo einen DS zu fokussieren musst du natürlich auch
dessen Recordset ansprechen
Private Sub Position_DblClick(Cancel As Integer)
With Me.Parent.UFo2ControlName.Form.Recordset
.FindFirst = "Position = " & Me.Position
'zur Sicherheit
If .NoMatch Then
Msgbox "Kein Datensatz gefunden"
Cancel = True
End If
End With
wobei
Me = UFo1
.Parent = das HFo
.UFo2ControlName = der Name des UFo-Steuerelements von UFo2
.Form = das eingebette Formular
gruss ekkehard
Hallo Ekkehard,
nach einigem Rumprobieren klappt es jetzt, herzlichen Dank !
Erst nach längerer Zeit fiel mir auf, dass in deinem Beispiel zwischen FindFirst und dem String ein Gleichheitszeichen war, was vorher nicht da war ;-) Ich habs weggelassen, dann gings.
Viele Grüße
Hans-Jürgen
Hallo,
je nach Bedarf gibt es auch noch andere Möglichkeiten:
https://www.fmsinc.com/microsoftaccess/forms/Synchronize/LinkedSubforms.asp (https://www.fmsinc.com/microsoftaccess/forms/Synchronize/LinkedSubforms.asp)
Gruß
Knobbi38
Zitatzwischen FindFirst und dem String ein Gleichheitszeichen war,
Sorry, da war ich im Kopf schon ein Stück weiter im Text. Hinter "FindFirst"
gehört natürlich nur der Filterstring.