1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

MS-Access: Auswahl in Listenfeld wird ignoriert

Discussion in 'Office-Programme' started by Der_Anfänger, Feb 11, 2010.

Thread Status:
Not open for further replies.
  1. Hallo!

    Ich habe mal wieder ein kleines (?) MS-Access-Problem. Ich fürchte, meine Problembeschreibung ist ziemlich komplex, aber vielleicht steigt ja doch jemand durch

    Ich habe ein Formular namens
    B2.

    Dieses Formular bezieht seine Daten aus einer Abfrage namens
    ADRESSAT.

    In B2 gibt es ein Unterformular namens
    C2.

    Dieses Unterformular bezieht seine Daten aus einer Abfrage namens
    DIFFERENZ.

    Beim Anlegen habe ich das Unterformular über ein Feld namens
    ID_ADRESSAT
    mit dem übergeordneten Formular B2 verknüpft. ID_ADRESSAT kommt sowohl in ADDRESSAT als auch in DIFFERENZ vor.

    Im Unterformular gibt es ein Listenfeld namens
    VERSANDVORGANG.

    Dieses Listenfeld bezieht seine Daten ebenfalls aus der Abfrage DIFFERENZ – mit der Einschränkung, dass nur Datensätze angezeigt werden, bei denen ID_ADRESSAT mit der Auswahl im übergeordneten Formular B2 übereinstimmt.

    Das habe ich gelöst, indem ich bei der Datensatzherkunft des Listenfelds das Kriterium
    [forms]![B2]![ID_ADRESSAT]
    eingegeben habe.

    Das funktioniert auch soweit.

    Die Abfrage DIFFERENZ, also die Datensatzherkunft des Listenfeldes, enthält neben dem Feld ID_ADRESSAT noch ein Feld namens
    ID_HEFT.

    Ich habe eine Anfügeabfrage namens
    VERSENDEN
    geschrieben.

    Diese soll sich für den im Listenfeld ausgewählten Datensatz die entsprechenden Inhalte von ID_ADRESSAT und ID_HEFT holen und damit einen neuen Datensatz in einer Tabelle namens
    VERSAND
    erzeugen.

    Dazu enthält die Anfügeabfrage im Feld ID_ADRESSAT das Kriterium
    [forms]![B2]![C1]![ID_ADRESSAT]
    und im Feld ID_HEFT das Kriterium
    [forms]![B2]![C1]![ID_HEFT].

    Wenn man die Abfrage von Hand ausführt und die benötigten Kriterienparameter von Hand eingibt, macht die Abfrage auch genau das, was sie soll.

    Wenn ich jedoch stattdessen im Listenfeld einen Datensatz auswähle und dann die Anfügeabfrage über einen Knopf ausführe, dann wird nur der Wert des Feldes ID_ADRESSAT korrekt an den neuen Datensatz übergeben. Im Feld ID_HEFT steht nicht der Wert, der gemäß der Auswahl dastehen sollte, sondern immer der Wert aus dem obersten Datensatz, der im Listenfeld angezeigt wurde.

    Ich habe das Gefühl, dass ich durch meine Auswahl im Listenfeld VERSANDVORGANG gar keinen Einfluss darauf nehme, welchen Datensatz das Unterformular C2 jetzt gerade für den aktuellen Datensatz hält.
    Der Inhalt von ID_ADRESSAT ist wohl nur deshalb korrekt, weil ich das Unterformular C2 schon beim Anlegen über das Feld ID_ADRESSAT mit dem übergeordneten Formulart B2 verknüpft habe.

    Falls ich mit meiner Vermutung richtig liege, läuft es als auf die Frage hinaus: Wie sage ich dem Unterformular C2, das der im Listenfeld VERSANDVORGANG ausgewählte Datensatz der aktuelle Datensatz ist.

    Was mich nur verwundert ist, dass ich beim Anlegen des Listenfeldes bereits die Option
    „Einen Datensatz im Formular; basierend auf dem im Listenfeld gewählten Wert suchen.“
    benutzt hatte. Ich dachte, diese Option wäre genau dafür da.

    Vielen Dank und viele Grüße,

    Alexander
     
  2. Hascheff

    Hascheff Moderator

    Hallo Alexander,
    ich kann mir vorstellen, was du meinst, jedenfalls hast du den Sachverhalt gut beschrieben.

    Ich fang mal hinten an.
    > Ich dachte, diese Option wäre genau dafür da.
    diese Option verwendet man im Kopf eines Formulars, um den gewünschten Datensatz anzuzeigen. Ich glaube, ich habe das auch schon mal in einem Unterformular gemacht, es müsste dort auch funktionieren.

    Aber mit dem Erstellen von Aktionsabfragen unter Nutzung von Daten aus einem Unterformular habe ich auch schon Probleme gehabt. Möglicherweise hat Access hier Grenzen, die von uns nicht zu überwinden sind.

    Meinen Vorschlag könnte man als Workaround bezeichnen.
    Erstelle im Unterformular im Detailbereich einen Button, der ein neues Formular öffnet. Im Button-Code kannst du den Datensatz des eröffneten Formulars anwählen, der den Daten deines Unterformular-Datensatzes entspricht.
    In diesem eigenständigen Formular gibt es kein Problem mehr mit Aktionsabfragen.

    Es ist schon eine Weile her, dass ich das ähnlich gemacht habe. Ich hoffe, ich habe das richtig in Erinnerung.

    Gruß
    Hascheff
     
Thread Status:
Not open for further replies.

Share This Page