Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

ComboBox Recordset - RowSource

Begonnen von Stele4, Mai 19, 2025, 08:24:13

⏪ vorheriges - nächstes ⏩

Stele4

Hallo!
Ein Formular hat im Kopfbereich ComboBoxes zum Filtern.
Beim Laden werden die Listen der ComboBoxes gefuellt:
Set Me.cmbFld1.Recordset=...Das Recordset stammt von einer Abfrage in einer Stored Procedure im Sql Server.
Deshalb nicht:
Me.cmbFld1.RowSource="SELECT ...;"Im weiteren Verlauf soll der Inhalt der Listen der ComboBoxes angepasst werden.
Das Beschreiben der RowSource hat aber nun keine Wirkung mehr.

Warum ist das so?

Gruss
Stele

Knobbi38

Hallo Stele,

nach dem WARUM müßtest du die Entwickler fragen, die haben das offensichtlich so implementiert.
Ich sehe jetzt aber auch keinen Sinn darin, zwischen Rowsource und Recordset zu wechseln.

Gruß Knobbi38

Stele4

Hallo Knobbi!

Im anderen Thread hattest du mich auf die RowSource-Variante gebracht.
Du konntest natuerlich nicht wissen, dass die Combos vorab mit Recordset gefuellt wurden.
Ich hatte eine Weile gebraucht, herauszufinden, warum dein Vorschlag nicht funktioniert.

Dank und Gruss
Stele

PhilS

Zitat von: Stele4 am Mai 19, 2025, 08:24:13Im weiteren Verlauf soll der Inhalt der Listen der ComboBoxes angepasst werden.
Das Beschreiben der RowSource hat aber nun keine Wirkung mehr.

Warum ist das so?
Das genau Warum kann ich dir nicht beantworten. Ich glaube, es sollte funktionieren, wenn du vor Zuweisen der Rowsource das Recordset der ComboBox explizit auf Nothing setzt.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

Knobbi38

Hallo Stele,

ich habe es zwar noch nicht ausprobiert, aber theoretisch sollte es möglich sein, eine Stored Procedure als Rowsource zu verwenden. Wenn du dann die Parameter mit Tempvars kombinierst, bräuchte man eigentlich nur die Tempvars ändern und für die betreffende Combox ein Requery aufrufen.

Leider kann ich das i.M. mangels Zugriff auf einen SQL-Server nicht testen.

Gruß
Knobbi38

PhilS

Zitat von: knobbi38 am Mai 19, 2025, 11:49:49Wenn du dann die Parameter mit Tempvars kombinierst, bräuchte man eigentlich nur die Tempvars ändern und für die betreffende Combox ein Requery aufrufen.
Stored Procedures müssen über eine Pass-Through-Abfrage ausgeführt werden. Im SQL-Text einer Pass-Through-Abfrage werden aber keine Ausdrücke ausgewertet, daher funktioniert das mit TempVars so direkt nicht.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

Knobbi38

Hallo Phil,

wie gesagt, ich habe es noch nie ausprobiert. Theoretisch könnte als Rowsource eine Querydefs als Passthrough verwenden und dabei das SQL-Statement ändern, aber da bringen Tempvars keine Vorteile mehr (aircode):


Set qdf = CurrentDb.QueryDefs("PTQ")
qdf.SQL = "exec SP_Test " & Tempvars!Parameter
Me.cboBox.RowSource = "PTQ"

Am einfachsten wird wohl sein, gleich eine Parameterabfrage zu verwenden, aber wechseln zwischen Rowsource und Recordset zuzuweisen gibt dann auch keinen Sinn.

Gruß Ulrich

Stele4

Hallo!
Manchmal sind die einfachen Dinge zu offensichtlich.

Zitat von: PhilS am Mai 19, 2025, 10:45:21Ich glaube, es sollte funktionieren, wenn du vor Zuweisen der Rowsource das Recordset der ComboBox explizit auf Nothing setzt.
Das werde ich so nicht anwenden (Knobbi hat natuerlich recht bzgl. Doppelstrategie), aber es passt ins Bild und die Welt ist wieder heil. Sehr wertvoll.

Ich verwende den gleichen Mechanismus wie beim 1. Fuellen der Combo-Listen: PT mit SQL.

Ich habe die Vorstellung, ein eingebundenes View ist in Access 'da' und wird zyklisch aktualisiert.
Wenn nun in Access Abfragen mit dieser View als Quelle erfolgen: Gibt es Anfragen beim SQL Server?

In der alten Access-Welt war die Recordsource des Formulars eine Abfrage und die Filterkriterien waren die Werte der Combos. Die RowSources der Combos bezogen sich auf Detailtabellen, koennten sich aber auch auf diese Abfrage beziehen. Das war schoen einfach.

Gruss
Stele