Neuigkeiten:

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

Mobiles Hauptmenü

Popup Formular

Begonnen von Blauschnabel, April 08, 2018, 20:12:31

⏪ vorheriges - nächstes ⏩

Blauschnabel

Guten Abend
Leider bin ich im Web zu meinem Problem nicht fündig geworden, darum erhoffe ich mir eine Antwort in diesem Forum.
Das Problem ist wie folgt:
Ich habe eine Tabelle mit Spalten für verschiedene Jahre (Rechnung 2016, Rechnung 2017, Rechnung 2018, etc.), in denen ich das jeweilige Zahlungsdatum für verschiedene Personen eintrage.
Dazu habe ich eine Abfrage, die Vorname, Nachname, Strasse, PLZ, Ort, Rechnung 2016, Rechnung 2017, Rechnung 2018.... auflistet.
Nun möchte ich mit einem Popupformular über ein Listenfeld (Rechnung 2016, Rechnung 2017, Rechnung 2018, etc.) die Abfrage so generieren dass ich, wenn ich z.B. ,,Rechnung 2018" im Listenfeld wähle, in der Abfrage nur die Spalten Vorname, Nachname, Strasse, PLZ, Ort, Rechnung 2018 gezeigt werden.
Das Listenfeld habe ich eingerichtet und das Oeffnen der Abfrage funktioniert. Beim Rest bin ich für jede Hilfe dankbar.

Lachtaube

Die Datenform und ebenso Feldnamen wie mit Sonder- und Leerzeichen sind schlecht für eine Relationale Datenbank wie Access. Ebenso sollte man Personendaten, wenn eine Einmaligkeit nicht zutrifft, besser in eine eigene Tabelle auslagern und über einen Fremdschlüssel verknüpfen.

Hättest Du eine Spalte Jahr und eine Spalte für den Wert, kann man ein einfaches Kriterium für das Jahr einsetzen, um an's Ziel zu gelangen.

Das gesagt, kannst Du trotzdem noch, wenn auch umständlich und langsam mit einer Vereinigungsabfrage an's Ziel gelangen. Etwas abgekürzt:
SELECT Nachname,
       Vorname,
       CInt(1016) As Jahr,
       [Rechnung 2016] As Betrag
FROM   Tabname
WHERE  [Rechnung 2016] Is Not Null
UNION  ALL
SELECT Nachname,
       Vorname,
       2017,
       [Rechnung 2017]
FROM   Tabname
WHERE  [Rechnung 2017] Is Not Null
UNION  ALL
SELECT Nachname,
       Vorname,
       2018,
       [Rechnung 2018]
FROM   Tabname
WHERE  [Rechnung 2018] Is Not Null


PS: am besten schaust Du Dir einmal Links des Benutzers DF6GL an, um an Grundkenntnisse zu gelangen.
Grüße von der (⌒▽⌒)

Blauschnabel

Hallo Lachtaube
Besten Dank für dein Rückmeldung. Leider stehe ich immer noch auf dem Schlauch. Hier vielleicht noch 3 Printsscreens zum Problem.

MzKlMu

Hallo,
Du solltest ein ordentliches Datenmodell aufbauen, wie das Lachtaube auch schon empfohlen hat. Die Unionabfrage ist ja nur eine Krücke.
Die Rechnungen müssen in eine extra Tabelle mit einem Fremdschlüssel zur Person, einem Feld für das Jahr sowie einem Feld für das Datum. Jedes Jahr gibt ein Datensatz und nicht eine Spalte.
Die Felder für das Jahr in der Personentabelle kannst Du dann ersatzlos löschen.
Du solltest Dich zu einer Umstrukturierung durchringen, Du hast eine Exceltabelle und keine Datenbanktabelle.
Hier noch ein Link zu den Grundlagen einer Datenbank.
https://www.access-tutorial.de/
Gruß Klaus

Lachtaube

Ich unterstelle für das Beispiel mindestens Access Version 2010.
Grüße von der (⌒▽⌒)

MzKlMu

@Lachtaube
2 Fragen zu Deinem Beispiel.
Warum machst Du die Datenherkunft des Kombis per Werteliste (für meine Begriffe umständlich) und nicht per Abfrage (Jahr ermitteln und Distinct verwenden) ?
Außerdem ging es ja um das Zahlungsdatum und nicht um das Rechnungsdatum und das kann ja unterschiedlich sein und auch im Folgejahr liegen.
Gruß Klaus

Lachtaube

@Klaus,

zu 1) mir war heute einmal nach Werteliste. :)
zu 2) wie Datensätze nach einem Jahresinterval gefiltert werden können, war meine Intension - über die Bedeutung des Datumsfelds habe ich mir keinerlei Gedanken gemacht.
Grüße von der (⌒▽⌒)

Blauschnabel

Hallo Lachtaube, vielen Dank für deine Hilfe und die Unterstützung.