collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 54
  • Punkt Versteckte: 0
  • Punkt Mitglieder: 2
  • Punkt Benutzer Online:

* Forenstatistik

  • stats Mitglieder insgesamt: 13700
  • stats Beiträge insgesamt: 62191
  • stats Themen insgesamt: 8474
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 16
  • stats Am meisten online: 415

Autor Thema: Kombifeld soll nach Aktualisierung Listenfeld aktualisieren, geht aber nicht  (Gelesen 569 mal)

Offline derilzemer

  • Access-Meister
  • ***
  • Beiträge: 506
    • Quartettportal
Hallo,
ich habe auf einem Kombifeld in Datensatzherkunft einen Select dem folgende Query zugrunde liegt:
SELECT tblQuartette.SpielID_F, tblQuKarten.QuKartenID, tblSpiele.SpielNr, tblSpiele.Ausgabejahr, [QuartettKz] & [KartenNr] AS Karte, tblQuKarten.Kartenbezeichnung
FROM tblSpiele
INNER JOIN (tblQuartette INNER JOIN tblQuKarten ON tblQuartette.QuartettID = tblQuKarten.QuartettID_F) ON tblSpiele.SpielID = tblQuartette.SpielID_F
WHERE QuKartenID IN
   (SELECT QuKartenID_F
    FROM tblKartenMerkmale)
ORDER BY tblQuKarten.Kartenbezeichnung;
Die Select selbst sieht dann aber so aus:
SELECT qrySpielKarten.Kartenbezeichnung
FROM qrySpielKarten
GROUP BY qrySpielKarten.Kartenbezeichnung;
Ich lasse mir als nur das eine Feld Kartenbezeichnung (und das gruppiert) anzeigen. Das funktioniert alles sauber. Sowohl der select als auch der Query liefern die gleiche Anzahl an Datensätzen
Das Listenfeld als Datensatzherkunft folgenden Select:
SELECT tblQuartette.SpielID_F,
       tblQuKarten.QuKartenID,
       tblSpiele.SpielNr,
       tblSpiele.Ausgabejahr,
       [QuartettKz] & [KartenNr] AS Karte,
       tblQuKarten.Kartenbezeichnung
FROM tblSpiele
INNER JOIN (tblQuartette
            INNER JOIN tblQuKarten ON tblQuartette.QuartettID = tblQuKarten.QuartettID_F) ON tblSpiele.SpielID = tblQuartette.SpielID_F
WHERE (((tblQuKarten.QuKartenID) IN
          (SELECT QuKartenID_F
           FROM tblKartenMerkmale)))
ORDER BY tblQuKarten.Kartenbezeichnung;
Letztendlich ist es der gleiche Select wie bei dem Kombifeld. Wenn ich nun einen Wert aus dem Kombi auswähle, dann sollte  er das Listenfeld aktualisieren, aber genau das klappt nicht und ich weiß nicht warum. Wähle ich einen Wert im Kombifeld aus, dann wird das Listenfeld (zeigt alle Datensätze an) leer und aus Maus :-(.
Am Kombifeld ist als Ereignis --> Nach Aktualisierung folgendes als Codeschnipsel hinterlegt:
Private Sub cboSpielkarte_AfterUpdate()
    Me.ufKarten.Form.Filter = "False"
    Me.lstKarten.RowSource = "SELECT tblQuartette.SpielID_F, tblQuKarten.QuKartenID, tblSpiele.SpielNr, tblSpiele.Ausgabejahr, [QuartettKz] & [KartenNr] AS Karte tblQuKarten.Kartenbezeichnung " _
        & " FROM tblSpiele INNER JOIN (tblQuartette INNER JOIN tblQuKarten ON tblQuartette.QuartettID = tblQuKarten.QuartettID_F) ON tblSpiele.SpielID = tblQuartette.SpielID_F " _
        & " WHERE QuKartenID IN (SELECT QuKartenID_F FROM tblKartenMerkmale)='" & Me.cboSpielkarte & "'"
End Sub

Natürlich frage ich mich, warum das Ergebnis 0 ist. Hat jemand eine Idee?

Gruß und Danke für die Unterstützung
Andreas
« Letzte Änderung: Juli 28, 2017, 22:38:33 von derilzemer »
Grüße und Dank im voraus
Andreas
 

Offline Lachtaube

  • Access-Meister
  • ***
  • Beiträge: 728
Ohne Verwendung von Aggregaten in einer Abfrage ist eine Gruppierung suboptimal - verwende das Prädikat DISTINCT (Eigenschaft: eindeutige Datensätze in der Entwurfsansicht einer Abfrage)
Warum nimmst Du nicht zusätzlich QuKartenID als gebundene (versteckte) Spalte im Kombifeld auf? Dann wüsstest Du auch, was miteinander in der Abfrage zu vergleichen wäre.
FilterOn ist vom Datentyp Boolean und kein String.
Grüße von der (⌒▽⌒)
 

Offline derilzemer

  • Access-Meister
  • ***
  • Beiträge: 506
    • Quartettportal
Hi Lachtaube,
Zitat
Ohne Verwendung von Aggregaten in einer Abfrage ist eine Gruppierung suboptimal - verwende das Prädikat DISTINCT (Eigenschaft: eindeutige Datensätze in der Entwurfsansicht einer Abfrage)
Warum nimmst Du nicht zusätzlich QuKartenID als gebundene (versteckte) Spalte im Kombifeld auf?
Das habe ich jetzt mal gemacht.
SELECT DISTINCT qrySpielKarten.Kartenbezeichnung, qrySpielKarten.QuKartenID
FROM qrySpielKarten
ORDER BY qrySpielKarten.Kartenbezeichnung;
Zitat
Dann wüsstest Du auch, was miteinander in der Abfrage zu vergleichen wäre.
Dein Hinweis deswegen ist ja dahingehend, dass diese wohl falsch ist was die Abfrage angeht, oder?
Zitat
FilterOn ist vom Datentyp Boolean und kein String.
Damit beziehst du dich wohl auf den Codeschnipsel
Zitat
Me.ufKarten.Form.Filter = "False"
. Aber ehrlich gesagt komme ich damit nicht klar, was du mir damit sagen willst.
Private Sub cboSpielkarte_AfterUpdate()
    Me.ufKarten.Form.Filter = "False"
    Me.lstKarten.RowSource = "SELECT tblQuartette.SpielID_F, tblQuKarten.QuKartenID, tblSpiele.SpielNr, tblSpiele.Ausgabejahr, [QuartettKz] & [KartenNr] AS Karte tblQuKarten.Kartenbezeichnung " _
        & " FROM tblSpiele INNER JOIN (tblQuartette INNER JOIN tblQuKarten ON tblQuartette.QuartettID = tblQuKarten.QuartettID_F) ON tblSpiele.SpielID = tblQuartette.SpielID_F " _
        & " WHERE QuKartenID IN (SELECT QuKartenID_F FROM tblKartenMerkmale) WHERE Kartenbezeichnung ='" & Me.cboSpielkarte & "'"
End Sub
Die Abfrage des Listenfeldes habe ich noch mal angepasst, was allerdings nicht zu einer Änderung beigetragen hat. Wenn ich im Kombifeld einen Datensatz auswähle, dann leert sich das LF.

Gruß Andreas
« Letzte Änderung: Juli 29, 2017, 15:24:54 von derilzemer »
Grüße und Dank im voraus
Andreas
 

Offline Lachtaube

  • Access-Meister
  • ***
  • Beiträge: 728
Gestalte die Abfrage um, so das das numerische Feld an die erste Position rückt.SELECT DISTINCT q.QuKartenID, q.Kartenbezeichnung
FROM   qrySpielKarten As q
ORDER  BY 2;

In den Eigenschjaften des Kombifelds legst Du 2 Spalten fest, setzt die gebundene Spalte auf 1 und legst Spaltenweiten 0cm;Xcm an. Damit wird die erste Spalte ausgeblendet. Wobei X durch einen vernünftigen Wert zu ersetzen ist. An der Darstellung sollte sich nichts verändert haben. Nur wird jetzt nicht mehr mit der Kartentext, sondern die QuKartenID in der Bedingung verwendzt.
   & " WHERE QuKartenID = " & Nz(Me.cboSpielkarte, 0)
Ansonsten werden Bool'sche Wertangaben ohne Hühnerfüße verwendet: False und nicht "False"
Grüße von der (⌒▽⌒)
 
Folgende Mitglieder bedankten sich: derilzemer

Offline derilzemer

  • Access-Meister
  • ***
  • Beiträge: 506
    • Quartettportal
Hallo Lachtaube,
Gestalte die Abfrage um, so das das numerische Feld an die erste Position rückt.SELECT DISTINCT q.QuKartenID, q.Kartenbezeichnung
FROM   qrySpielKarten As q
ORDER  BY 2;
In den Eigenschaften des Kombifelds legst Du 2 Spalten fest, setzt die gebundene Spalte auf 1 und legst Spaltenweiten 0cm;Xcm an. Damit wird die erste Spalte ausgeblendet. Wobei X durch einen vernünftigen Wert zu ersetzen ist. An der Darstellung sollte sich nichts verändert haben. Nur wird jetzt nicht mehr mit der Kartentext, sondern die QuKartenID in der Bedingung verwendet.
   & " WHERE QuKartenID = " & Nz(Me.cboSpielkarte, 0)
Ich habe es mal genauso umgestellt, jedoch habe ich nun keinen Effekt des DISTINCT mehr. Vor der Umstellung hatte ich 7 "Redundanzen" nun zeigt er die alle wieder an. Das liegt dann wohl daran, dass er in der Spalte QuKartenID natürlich keine Redundanten ID's findet, oder? Wie stellt man das nun ein, dass er den Distinct nur über die Spalte 1 macht, also nicht über beide bzw. 0?
Was ich dann immer noch nicht nachvollziehen kann ist folgendes. Am Kombifeld ist ja das Ereignis Nach Aktualisierung gebunden (sagt man das so überhaupt, gebunden?).
SELECT tblQuartette.SpielID_F,
       tblQuKarten.QuKartenID,
       tblSpiele.SpielNr,
       tblSpiele.Ausgabejahr,
       [QuartettKz] & [KartenNr] AS Karte tblQuKarten.Kartenbezeichnung
FROM tblSpiele
INNER JOIN (tblQuartette
            INNER JOIN tblQuKarten ON tblQuartette.QuartettID = tblQuKarten.QuartettID_F) ON tblSpiele.SpielID = tblQuartette.SpielID_F
WHERE QuKartenID = & Nz(Me.cboSpielkarte, 0)
Das bedeutet doch, dass er das Listenfeld aktualisieren soll, sobald ich eben eine Karte ausgewählt habe, richtig? Tut es nicht wirklich. Wenn ich eine Auswahl treffe erhalte ich zuerst das Fenster Parameterwert eingeben und es steht Falsch da, bestätige ich es bekomme ich wieder das leere Listenfeld  :(. Der Select im Listenfeld sieht wie folgt aus:
SELECT tblQuartette.SpielID_F,
       tblQuKarten.QuKartenID,
       tblSpiele.SpielNr,
       tblSpiele.Ausgabejahr,
       [QuartettKz] & [KartenNr] AS Karte,
       tblQuKarten.Kartenbezeichnung
FROM tblSpiele
INNER JOIN (tblQuartette
            INNER JOIN tblQuKarten ON tblQuartette.QuartettID = tblQuKarten.QuartettID_F) ON tblSpiele.SpielID = tblQuartette.SpielID_F
WHERE (((tblQuKarten.QuKartenID) IN
          (SELECT QuKartenID_F
           FROM tblKartenMerkmale)))
ORDER BY tblQuKarten.Kartenbezeichnung;
Zitat
Ansonsten werden Bool'sche Wertangaben ohne Hühnerfüße verwendet: False und nicht "False"
Das habe ich jetzt verstanden, hab die Hühnerfüße gekickt.

Danke und Gruß
Andreas
« Letzte Änderung: Juli 29, 2017, 17:40:27 von derilzemer »
Grüße und Dank im voraus
Andreas
 

Offline Lachtaube

  • Access-Meister
  • ***
  • Beiträge: 728
Ich habe einmal die Abfrage aus dem Anfangsbeitrag (Spalten verschoben) in einem Upload von Dir getestet und kann darin keine Doubletten (weder bei der QuKartenId noch bei der Kartenbezeichnung) erkennen. Wo steckt das Problem

Edit: Ich sehe gerade, dass ich blind bin und nehme meine Aussage zurück.
 
Grüße von der (⌒▽⌒)
 

Offline derilzemer

  • Access-Meister
  • ***
  • Beiträge: 506
    • Quartettportal
Guten morgen,
Ich sehe gerade, dass ich blind bin und nehme meine Aussage zurück.
kein Problem. Aber das mal zum Anlass genommen, ich bin ein echtes Rindvieh, sorry. Ich lasse mich irgendwie zu arg vom Ergebnis einfangen. Was will ich denn eigentlich.
Das Feature heißt Spielkarten vergleichen. MAn vergleicht in der Regel etwas, was auch "annäherend identisch ist". Ergo
ist Redundanz in form vom DISTINCT einfach und schlicht weg falsch. Group by ist also korrekt.
Ich muss also die Redundanzen finden und die Einzelkarten die unique sind in den künftig 90000 ausselektieren! Deswegen müsste die Abfrage doch eigentlich so aussehen
SELECT tblQuartette.SpielID_F,
       tblQuKarten.QuKartenID,
       tblSpiele.SpielNr,
       tblSpiele.Ausgabejahr,
       tblQuKarten.Kartenbezeichnung,
       [QuartettKz] & [KartenNr] AS Karte
FROM tblSpiele
INNER JOIN (tblQuartette
            INNER JOIN tblQuKarten ON tblQuartette.QuartettID = tblQuKarten.QuartettID_F) ON tblSpiele.SpielID = tblQuartette.SpielID_F
WHERE (((tblQuKarten.QuKartenID) IN
          (SELECT QuKartenID_F
           FROM tblKartenMerkmale))
       AND ((tblQuKarten.Kartenbezeichnung) IN
              (SELECT Kartenbezeichnung
               FROM tblQuKarten
               GROUP BY Kartenbezeichnung
               HAVING Count(*) > 1)
            AND (tblQuKarten.Kartenbezeichnung)<>"-"));
und unter Datensatzherkunft für das Kombi dann so?
SELECT qrySpielKarten.Kartenbezeichnung FROM qrySpielKarten GROUP BY Kartenbezeichnung;Hab das dann so mal aufgebaut. Die Abfrage passt, die query für das Kombi passt, aber sobald ich einen Wert auswähle, dann poppt das Fenster Parameterwert eingeben auf (bild1, dazu hänge ich jetzt mal ein Bild an). Bestätige ich das mit ok, dann ist das Listenfeld wieder leer.

Edit: Wenn ich im Parameterfenster statt ok auf Abbruch gehe, dann springt der Debugger auf folgende Zeile und markiert diese gelb.
Private Sub cboSpielkarte_AfterUpdate()
    Me.ufKarten.Form.Filter = False

Gruß Andreas
« Letzte Änderung: Juli 30, 2017, 09:49:58 von derilzemer »
Grüße und Dank im voraus
Andreas
 

Offline Xoar

  • Access-Profi
  • **
  • Beiträge: 379
Hi, wenn nur der Filter "deaktiviert" werden soll, schreib
Me.ufKarten.Form.FilterOn = false

Den Filter deaktiviert man über die FilterOn Eigenschaft.

Grüße

 
Folgende Mitglieder bedankten sich: derilzemer

Offline derilzemer

  • Access-Meister
  • ***
  • Beiträge: 506
    • Quartettportal
Hi,
danke für den Hinweis. Jetzt gibt es keinen Fehler mehr, jedoch wird weiterhin in der Liste auch kein Auswahlergebnis aufgeführt, zeigt also 0 Datensätze an. Das Ding macht mich noch Kirre :(.
Gruß Andreas
Grüße und Dank im voraus
Andreas
 

Offline PhilS

  • Administrator
  • Access-Profi
  • *****
  • Beiträge: 231
    • Tipps zu Access, VBA, SQL und Co.
...jedoch wird weiterhin in der Liste auch kein Auswahlergebnis aufgeführt, zeigt also 0 Datensätze an.
Kann es NULL-Werte in tblQuKarten.Kartenbezeichnung geben? Wenn ja, würde ich diese in dem SubSelect ausschließen. Bin gerade nicht sicher wie Access das handhabt, aber andere DB-Systeme werten einen solchen Ausdruck immer als Falsch aus, wenn ein NULL-Wert enthalten ist.
Also so:
...
 (SELECT Kartenbezeichnung
               FROM tblQuKarten
               WHERE Kartenbezeichnung IS NOT NULL
               GROUP BY Kartenbezeichnung
               HAVING Count(*) > 1)
...

Außerdem ist es oft hilfreich zur Fehlersuche, ein solches SQL-Statement einfach mal die SQL-Ansicht einer neue Abfrage zu kopieren und auszuführen. Dort gibt es dann ggfls. deutliche Meldungen für Fehler, die in einer Rowsource einfach ignoriert werden.

Offline derilzemer

  • Access-Meister
  • ***
  • Beiträge: 506
    • Quartettportal
...jedoch wird weiterhin in der Liste auch kein Auswahlergebnis aufgeführt, zeigt also 0 Datensätze an.
Kann es NULL-Werte in tblQuKarten.Kartenbezeichnung
Nein, grundsätzlich findet er schon mit der aktuellen Abfrage auch nur Datensätze, die eben Einträge haben. Ich habe trotzdem mal den Zusatz gemacht, mit dem gleiche Ergebnis, dass das Listenfeld dann 0 anzeigt. Ich mache das auch so wie du gesagt hast, den SQL query ausführen, dann sieht man gleich ob es passt oder ob nicht.
Ich denke, ich habe da ein grundsätzliches Problem mit dem Verständnis der Funktionsabfolge. Ich habe eine Query, qrySpielkarten. Dieser sieht aktuell so aus:

SELECT tblQuartette.SpielID_F,
       tblQuKarten.QuKartenID,
       tblSpiele.SpielNr,
       tblSpiele.Ausgabejahr,
       tblQuKarten.Kartenbezeichnung,
       [QuartettKz] & [KartenNr] AS Karte
FROM tblSpiele
INNER JOIN (tblQuartette
            INNER JOIN tblQuKarten ON tblQuartette.QuartettID = tblQuKarten.QuartettID_F) ON tblSpiele.SpielID = tblQuartette.SpielID_F
WHERE (((tblQuKarten.QuKartenID) IN
          (SELECT QuKartenID_F
           FROM tblKartenMerkmale))
       AND ((tblQuKarten.Kartenbezeichnung) IN
              (SELECT Kartenbezeichnung
               FROM tblQuKarten
               GROUP BY Kartenbezeichnung
               HAVING Count(*) > 1)
            AND (tblQuKarten.Kartenbezeichnung)<>"-"));
In den Eigenschaften des Kombifeldes cboSpielkarte unter Datensatzherkunft sprech ich die query dann so an:
SELECT qrySpielKarten.Kartenbezeichnung FROM qrySpielKarten GROUP BY Kartenbezeichnung;
Dem Kombifeld habe ich entsprechend die Spalte angegeben, welche angezeigt werden soll, damit eine Auswahl gemacht werden kann, gebunden 1, Spaltenanzahl 6. Das passt.  Als weiteres habe ich dem Kombifeld eben das Ereignis Nach Aktualisierung zugeordnet
Private Sub cboSpielkarte_AfterUpdate()
    Me.ufKarten.Form.FilterOn = False
    Me.lstKarten.RowSource = "SELECT tblQuartette.SpielID_F, tblQuKarten.QuKartenID, tblSpiele.SpielNr, tblSpiele.Ausgabejahr, [QuartettKz] & [KartenNr] AS Karte tblQuKarten.Kartenbezeichnung " _
        & " FROM tblSpiele INNER JOIN (tblQuartette INNER JOIN tblQuKarten ON tblQuartette.QuartettID = tblQuKarten.QuartettID_F) ON tblSpiele.SpielID = tblQuartette.SpielID_F " _
        & " WHERE Kartenbezeichnung = " & Nz(Me.cboSpielkarte)
End Sub
Die nahezu gleiche Query wie qrySpielkKarte habe ich an das Listenfeld gebunden.
SELECT tblQuartette.SpielID_F,
       tblQuKarten.QuKartenID,
       tblSpiele.SpielNr,
       tblSpiele.Ausgabejahr,
       tblQuKarten.Kartenbezeichnung,
       [QuartettKz] & [KartenNr] AS Karte
FROM tblSpiele
INNER JOIN (tblQuartette
            INNER JOIN tblQuKarten ON tblQuartette.QuartettID = tblQuKarten.QuartettID_F) ON tblSpiele.SpielID = tblQuartette.SpielID_F
WHERE (((tblQuKarten.QuKartenID) IN
          (SELECT QuKartenID_F
           FROM tblKartenMerkmale)));
Wenn ich das Feature aufrufe, dann zeigt das Listenfeld erst mal 153 gefundene Datensätze an, also alle, ob mit oder ohne Wert! Als Ereignis für das Listenfeld ist dann nur noch angegebn, was geschehen soll, wenn man einen oder mehrere Datensätze im Listenfeld markiert.
Private Sub lstKarten_AfterUpdate()
    Dim strKarten As String
    Dim itm As Variant
    If Me.lstKarten.ItemsSelected.count > 0 Then
        ' ausgewählte Karten anzeigen
        For Each itm In lstKarten.ItemsSelected
            strKarten = strKarten & "," & Me.lstKarten.ItemData(itm)
        Next
        Me.ufKarten.Form.Filter = "QuKartenID in (" & Mid(strKarten, 2) & ")"
        Me.ufKarten.Form.FilterOn = True
    Else
        ' leeres Ufo anzeigen
        Me.ufKarten.Form.Filter = False
        Me.ufKarten.Form.FilterOn = True
    End If
End Sub
Aus meiner Sicht, passiert der fehler, wenn ich im Kombifeld eine Auswshl treffe, dann geht es in die Büsche. Also scheint das Thema RowSource falsch zu sein, die Übergabe, sprich wenn das Feld aktualisiert, da läuft was schief, aber was?
Gruß Andreas
Grüße und Dank im voraus
Andreas
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 22990
Hallo,

ich kann jetzt nicht den ganzen Thread von Anfang an durchlesen,  deshalb einfach die Frage:

Ist das Kombi gebunden?  (Steuerelementinhalt irgendein Tabellenfeldname)?

Zum anderen verstehe ich nicht (den Sinn) diese(r) Monster-Abfragen für ein (Auswahl-) Kombifeld, zudem da nicht mit PKs , sondern über Bezeichnungen gefiltert wird.

Offline derilzemer

  • Access-Meister
  • ***
  • Beiträge: 506
    • Quartettportal
Ist das Kombi gebunden?  (Steuerelementinhalt irgendein Tabellenfeldname)?
Nein, das Kombi ist nicht gebunden, also Steuerelementinhalt ist leer.
Zitat
Zum anderen verstehe ich nicht (den Sinn) diese(r) Monster-Abfragen für ein (Auswahl-) Kombifeld, zudem da nicht mit PKs , sondern über Bezeichnungen gefiltert wird.
Monsterabfrage stimme ich dir zu, wobei sie ja funzt. Das GROUP by Bezeichnung (ich denke das meinst du) deshalb, weil ich eben nur da doppelte Werte drin habe. Genau die suche bzw. brauche ich ja. Das bekomme ich mit einem PK nicht hin oder irre ich mich?

Gruß Andreas
Grüße und Dank im voraus
Andreas
 

Offline Lachtaube

  • Access-Meister
  • ***
  • Beiträge: 728
Auf jeden Fall sollte das Zusammenkleben der Abfrage mit & " WHERE Kartenbezeichnung = " & Nz(Me.cboSpielkarte) bei Zeichenketten ncht funktionieren, weil hier einfache oder doppelte Hochkommata fehlen.

PS: Verwende Debug.Print Me.lstKarten.RowSource und kopiere die Ausgabe zum Prüfen in die SQL-Ansicht einer leeren Abfrage.

PPS: dem Feld Kartenbezeichnung sollte man auch einen Index in der Tabelle spendieren, damit man bei größerem Datenbestand keine allzu langen Wartezeiten hat.
Grüße von der (⌒▽⌒)
 

Offline derilzemer

  • Access-Meister
  • ***
  • Beiträge: 506
    • Quartettportal
Halo Lachtaube,
Auf jeden Fall sollte das Zusammenkleben der Abfrage mit & " WHERE Kartenbezeichnung = " & Nz(Me.cboSpielkarte) bei Zeichenketten nicht funktionieren, weil hier einfache oder doppelte Hochkommata fehlen.
Das stimmt, sind abhanden gekommen :(. Hab ich jetzt "nachgepflegt". Du meintest so, oder?
& " WHERE Kartenbezeichnung ='" & Nz(Me.cboSpielkarte) & "'"Wenn ich nach der Änderung jetzt im Kombifeld einen Datensatz auswähle, dann ist zumindest kein 0 mehr im Listfeld. Es bleibt bei 153 gefundenen Datensätzen, also genau soviel, wie es von Anfang an hat.
Zitat
PPS: dem Feld Kartenbezeichnung sollte man auch einen Index in der Tabelle spendieren, damit man bei größerem Datenbestand keine allzu langen Wartezeiten hat.
Ich habe das Feld in der Tabelle indiziert, also Duplikate zulassen. Das hast du wohl damit andeuten wollen.

Zitat
PS: Verwende Debug.Print Me.lstKarten.RowSource und kopiere die Ausgabe zum Prüfen in die SQL-Ansicht einer leeren Abfrage.
Das bring ich nicht auf die Kette, wie ich das mache Debug.Print Me.lstKarten.RowSource. Mit leerer Abfrage meinst du ja sicher, wenn ich einen Datensatz auswähle, dass ich dann 0 zurück bekomme oder wie meinst du genau, sorry :(.

Gruß Andreas
Grüße und Dank im voraus
Andreas