SetFilterDirectSQL läuft richtig, wenn Ansicht bereits geöffnet, falsch wenn Neuöffnung

Ich habe eine Schaltfläche (Scriptzeilen ausführen), die den Nutzer zu einer Ansicht wechseln soll und diese Ansicht filtern. Wenn die Ansicht bereits geöffnet ist, als man den Button clickt, dann läuft das Skript richtig – die Ansicht wird gewechselt, der Filter wird gesetzt und die richtigen Daten werden angezeigt. Aber wenn die Ansicht beim Buttonklick noch nicht geöffnet ist, dann ist etwas beim Filtersetzten falsch – zwar wird die Filterung angewandt, aber ich sehe keine Datensätze, als ob keine gefunden wurden. Der Code:

Dim sViewName : sViewName = "LieferAngeboteVerwendung"
Dim oVerwendungView : Set oVerwendungView = cRM.CurrentProject.OpenActiveViewByName(sViewName)

If (oVerwendungView Is Nothing) Then

    Set oVerwendungView = cRM.CurrentProject.OpenNewViewByName(sViewName)

End If


GroupId = cRM.CurrentProject.ActiveViews.ActiveView.CurrentInputForm(2).GetContentsValueByName("GroupID")

Dim sSQL : sSQL = "SELECT v.RecordId " & _
                    "FROM LieferantenangeboteVerwendung v " & _
                    "INNER JOIN Factura_Belege b ON b.RecordId = v.BelegRecordId " & _
                    "WHERE b.GroupID = 0x" & GroupID

Dim rsVerwendung : Set rsVerwendung = oVerwendungView.CurrentRecordSet()
rsVerwendung.SetFilterDirectSQL(sSQL)

Call oVerwendungView.Activate
' set table view mode
Call oVerwendungView.InvokeMenu(32782, True)


Das Problem scheint irgendwie auf die Stelle bezogen zu werden, wo der Filter angewandt wird. Ich habe bereits Dokus zu den Methoden nochmals gelesen und versucht Einzelteile dieses Skriptes umzusortieren. Das hat noch nicht geholfen.

Ich wäre dankbar falls mir jemand helfen könnte.

Quizfrage: was ist die „ActiveView“, wenn Sie direkt davor ein OpenNewViewByName gemacht haben? :nerd_face: (mich wundert, dass es im OpenActiveViewByName-Fall klappt, aber das könnte ein timing-Zufall sein)

Ich vermute, wenn Sie die GroupId bereits in Zeile 1 (ja, schon dort) auslesen, dann klappt es immer.