Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Auswahl in der Liste vom Kombinationsfeld abhängig von dessen Eingabe filtern

Begonnen von KonradR, April 23, 2023, 09:53:09

⏪ vorheriges - nächstes ⏩

KonradR

Hallo liebe Accessfreund,

ich habe ein Formular mit einem Kombinationsfeld, dass in einer Tabelle einen Wert nachschlagen soll.
Per VBA möchte ich veranlassen, dass sich abhängig von der Eingabe im Textfeldteil des Kombinationsfeldes die Auswahl der Anzeige im Listenteil des Kombinationsfeldes während der Eingabe einschränkt. Beispiele für die Kombination eines separaten Textfeldes und Listenfeldes habe ich gefunden. Leider funktioniert das mit einem Kombinationsfeld als Eingabe und gleichzeitiger Anzeige im Listenfeld bei mir nicht. Das Kombinationsfeld bleibt einfach leer. Ich müsste wahrscheinlich den Eingabeteil (Textfeldteil) und Listenteil des Kombinationsfeldes separat ansprechen. Wie kann das gehen? Habt ihr da eine Idee? Hier ist mein Code dazu:

Private Sub cbomahlzRezepIDRef_Change()
            SucheRezeptnamenPerAnschlag Nz(Me.cbomahlzRezepIDRef.Text, "")
End Sub


Private Sub SucheRezeptnamenPerAnschlag(strRezeptname As String)
    Dim strSQL As String

    strSQL = "SELECT rezepName FROM tblRezept WHERE cbomahlzRezepIDRef LIKE '*" & strRezeptname & "*' "
    strSQL = strSQL & " ORDER BY rezepName"

    Me.cbomahlzRezepIDRef.RowSource = strSQL
End Sub

DF6GL

Hallo,


hier dürften Fehler vorliegen:

ZitatstrSQL = "SELECT rezeptName FROM tblRezept WHERE cbomahlzRezeptIDRef LIKE '*" & strRezeptname & "*' "

--->

ZitatstrSQL = "SELECT RezeptID, RezeptName FROM tblRezept WHERE RezeptName LIKE '*" & strRezeptname & "*' "


wenn das Kombi so eingestellt ist:

Spaltenbreiten: 0cm, 10cm
Spaltenanzahl: 2

Beaker s.a.

Wozu soll das gut sein?
Ein Kombi zeigt doch automatisch die zur Eingabe passenden Einträge
an (Autovervollständigen). Ein Kombi einzuschränken macht IMO nur
Sinn, wenn ich ein Referenzfeld für ein Kriterium habe.
Wenn man nach Teilstrings a la "*blabla" suchen will muss man in der
Ereignisprozedur "Kombifeld_Change" die RowSource neu setzen.
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

DF6GL

Hallo Ekkehard,

ZitatWenn man nach Teilstrings a la "*blabla" suchen will
will er ja

Zitatmuss man in der Ereignisprozedur "Kombifeld_Change" die RowSource neu setzen.

macht er ja, nur mit einem falschen SQL-String... ;)

KonradR

Hallo DF6GL,

Zitat von: DF6GL am April 23, 2023, 11:16:21Hallo,


hier dürften Fehler vorliegen:

ZitatstrSQL = "SELECT rezeptName FROM tblRezept WHERE cbomahlzRezeptIDRef LIKE '*" & strRezeptname & "*' "

--->

ZitatstrSQL = "SELECT RezeptID, RezeptName FROM tblRezept WHERE RezeptName LIKE '*" & strRezeptname & "*' "


wenn das Kombi so eingestellt ist:

Spaltenbreiten: 0cm, 10cm
Spaltenanzahl: 2


Danke für deinen Tip. Ich habe alle deine Änderungen eingearbeitet. Jetzt funktioniert es. Allerdings zeigt das Kombinationsfeld nach der Auswahl nur ein leeres Feld an. Anscheinend ist aber der Inhalt übernommen. Denn ein Textfeld, was dessen Inhalt anzeigt, zeigt und wechselt diesen auch mit dem Wechsel des Datensatzes. Hast du da vielleicht auch eine Idee, wie ich den Inhalt sichtbar machen kann?

Beaker s.a.

Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

MzKlMu

Hallo,
ZitatHast du da vielleicht auch eine Idee, wie ich den Inhalt sichtbar machen kann?
Das Verhalten ist normal bei abhängigen Kombifeldern. Das kann man nur mit Tricks ändern.
Ein Trick ist der mit dem Textfeld.
ZitatDenn ein Textfeld, was dessen Inhalt anzeigt, zeigt .....
Dieses Textfeld plaziert man neben das Kombi und schiebt das Kombi so klein, dass man nur den Pfeil sieht.
Gruß Klaus

KonradR

Hallo Beaker s.a.,

Zitat von: Beaker s.a. am April 24, 2023, 20:44:31Tomaten auf den Augen  >:(

nein ich habe keine Tomaten auf den Augen. Tomaten liegen bei mir im Fensterbrett und werden die Woche noch zum kochen kleingeschnitten. Deinem Smeily mit dem Mund nach unten entnehme ich, dass dich aus dem Gesprächsverlauf etwas wütend macht. Kann das sein bzw. ist das mit den Tomaten evtl. ein Hinweis in dem du mir sagen willst, dass ich den Gesprächsverlauf nicht gründlich genug gelesen habe? Wenn ja, bin ich über deine Antwort sehr dankbar, denn dann kann ich in Zukunft ja mehr darauf achten.

KonradR

Hallo  MzKlMu,

Zitat von: MzKlMu am April 24, 2023, 20:49:01Das Verhalten ist normal bei abhängigen Kombifeldern. Das kann man nur mit Tricks ändern.

Danke für den Hinweis. Allerdings habe ich festgestellt, dass unter bestimmten Umständen die Inhalte der Nachschlagetabelle im Kombinationsfeld dargestellt werden. Allerdings verschwinden sie wieder, wenn ich in einen neuen Datensatz im Unterformular klicke. Hier meine Vorgehensweise:

1.0 Mausklick in das entsprechende Kombinationsfeld
1.1 irgendetwas in das Kombinationsfeld schreiben
1.2 das Geschriebene im Datensatz löschen, weil Einträge die nicht in der Liste sind nicht zulässig sind und eine Warnmeldung erzeugen (der aktuelle Datensatz ist immer noch in Bearbeitung)
1.3 Es wird nichts in den Kombinationsfeldern angezeigt.

2.0 Mausklick in ein anderes Kombinationsfeld eines anderen Datensatzes des gleichen Unterformulares (Das Unterformular ist ein Endlosformular mit 5 Datensätzen)
2.1 Mausklick in das ursprünglich editierte Feld
2.2 Es werden die Daten in den Kombinationsfeldern angezeigt.

3.0 Wiederholung von Schritt 2.0
3.1 Die Kombinationsfelder zeigen wieder leere Felder an.

Hier ein Bild vom Formular ohne angezeigte Inhalte:
Sie dürfen in diesem Board keine Dateianhänge sehen.

und  ein Bild vom Formular mit angezeigten Inhalten:
Sie dürfen in diesem Board keine Dateianhänge sehen.

Gehört das auch zu dem von dir genannten normalen Verhalten der Kombinationsfelder oder ist das doch anders und kann irgendwie umgangen werden?


MzKlMu

Hallo,
das Verhalten ist wie gesagt normal. Die bilder hätte es nicht benötigt.
Eine mögliche Lösung des Problems habe ich in #6 beschrieben. Bist Du aber nicht weiter darauf eingegangen.
Gruß Klaus

KonradR

Hallo MzKlMu,

Zitat von: MzKlMu am April 28, 2023, 12:35:00Eine mögliche Lösung des Problems habe ich in #6 beschrieben. Bist Du aber nicht weiter darauf eingegangen.

ich habe jetzt ein Textfeld auf das Endlosformular neben dem Kombinationsfeld platziert. Wenn ich jetzt den Rezeptnamen auslesen und im Textfeld anzeigen lassen will, dann wird mir in jedem Textfeld des Unterformulars der gleiche Inhalt angezeigt. Irgendwie auch logisch, weil ich einen neuen Recordset beruhend auf der ID des aktuellen Datensatzes erzeugt habe. Wie kann ich für jedes Textfeld auf dem Unterformular, dass als Endlosformular ausgeführt ist, festlegen, dass die ID vom aktuellen Datensatz herangezogen wird?

Hier mein Code dazu:
Private Sub cbomahlzRezepIDRef_AfterUpdate()
    Dim rcsP As DAO.Recordset
   
    If IsNull(Forms![frm00BWT_Haupt]![fsubBWTMahlzeitRezepte_Unter].Form![cbomahlzRezepIDRef].Value) Then
        Forms![frm00BWT_Haupt].Form![txtRezepNummer].Value = "Bitte ein Rezept auswählen."
    Else
        Set rcsP = CurrentDb.OpenRecordset("SELECT * FROM qryRezepteSortiert WHERE rezepID = " & _
        Forms![frm00BWT_Haupt]![fsubBWTMahlzeitRezepte_Unter].Form![cbomahlzRezepIDRef].Value, dbOpenDynaset)
   
'            Do Until rcsP.EOF
                Forms![frm00BWT_Haupt].Form![txtRezepNummer].Value = rcsP.Fields("rezepName").Value
                Forms![frm00BWT_Haupt]![fsubBWTMahlzeitRezepte_Unter].Form![txtCboAusgabe].Value = rcsP.Fields("rezepName").Value
'                rcsP.MoveNext
'            Loop
    End If
End Sub

MzKlMu

Hallo,
das Textfeld muss gebunden sein und zwar an das Klartextfeld aus der Tabelle für das Kombi. Dazu müssen beide Tabellen (die für das Formular und die für das Kombi) in der Abfrage (mit der Verknüpfung über das Schlüsselfeld) enthalten sein.
ZitatWenn ich jetzt den Rezeptnamen auslesen ....
Da muss nichts ausgelesen werden, es wird auch kein Buchstabe VBA benötigt, das geht alles automatisch.
Gruß Klaus

KonradR

Hallo MzKlMu,

Danke. Jetzt funktioniert es.

Beaker s.a.

Zitatnein ich habe keine Tomaten auf den Augen
Ich meinte doch mich.
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

KonradR