November 27, 2020, 06:03:49

Neuigkeiten:

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


In Abfrage einen Ausdruck mit Wenn-Funktion mit externer Abfrage?

Begonnen von BeaglePapa61, Oktober 20, 2020, 18:19:44

⏪ vorheriges - nächstes ⏩

BeaglePapa61

Hallo zusammen,

ich bin neu hier und kein Access-Spezialist und habe trotzdem eine Datenbank erstellt, die für meinen Kenntnisstand schon einiges kann (bilde ich ir ein... ;-) ).

Nun habe ich ein Problem, das ich nicht alleine gelöst kriege:

Ich habe folgende Abfrage A -->

***
SELECT Tabelle8_AnbieterName.AnbieterName
FROM Tabelle1_GesamtUebersicht LEFT JOIN Tabelle8_AnbieterName ON Tabelle1_GesamtUebersicht.Anbieter1 = Tabelle8_AnbieterName.ID
WHERE (((Tabelle1_GesamtUebersicht.AnbieterWahlSerie)=1));
***

und in einer weiteren Abfrage B u. a. diesen Ausdruck -->

***
AnbieterWahl: Wenn([AnbieterWahlSerie]=1;[Anbieter1];Wenn([AnbieterWahlSerie]=2;[Anbieter2];Wenn([AnbieterWahlSerie]=3;[Anbieter3];0)))
***

Ich hätte gerne den Ausdruck so erweitert, dass in allen drei Wenn-Funktionen jeweils die o. g. Abfrage drin ist. Geht das überhaupt? Und wenn ja, wie!?

Es wäre super, wenn mit jemand helfen könnte - und vielen Dank im Voraus!

LG Michael

MzKlMu

Hallo,
ich habe das nicht richtig verstanden.
Beschreibe das Vorhaben und die Tabellen genauer.

Kannst Du mal ein Bild des Beziehungsfensters hier zeigen ?
Gruß
Klaus

PhilS

Zitat von: BeaglePapa61 am Oktober 20, 2020, 18:19:44***
AnbieterWahl: Wenn([AnbieterWahlSerie]=1;[Anbieter1];Wenn([AnbieterWahlSerie]=2;[Anbieter2];Wenn([AnbieterWahlSerie]=3;[Anbieter3];0)))
***

Ich hätte gerne den Ausdruck so erweitert, dass in allen drei Wenn-Funktionen jeweils die o. g. Abfrage drin ist. Geht das überhaupt? Und wenn ja, wie!?
Ich habe auch Schwierigkeiten deine Datenstruktur und dein Vorhaben zu verstehen.

Allerdings habe ich die Vermutung, dass da ein Fehler in deiner Datenstruktur ist. Es sieht so aus, als hättest du die drei Felder
Anbieter1, Anbieter2 und Anbieter3 in deiner Tabelle. - Das ist so eigentlich immer ein Normalisierungsfehler in der Tabellenstruktur. Stattdessen solltest du ein Feld Anbieter in der Tabelle haben. Die Inhalte deiner bisherigen AnbieterX-Felder sind dann mehrere Datensätze in dieser Tabelle. Siehe: 1. Normalform, Stichwort: Feste Breite
Access DevTools - Find and Replace
Komfortables Suchen und Ersetzen in den Entwurfseigenschaften von Access-Objekten. In Abfragen, Formularen, Berichten und VBA-Code - Überall und rasend schnell!

ebs17

Die gewünschte AnbieterWahl kann man leicht lösen und dabei die Wenn-Dann-Orgie vermeiden, wenn man die Tabelle mit den unikaten Anbieternamen mit der gegebenen Tabelle über den Schlüssel AnbieterWahlSerie verknüpft (joint).
Näheres dann bei Klarheit des Datenmodells.
Mit freundlichem Glück Auf!

Eberhard

BeaglePapa61

Oktober 21, 2020, 09:44:55 #4 Letzte Bearbeitung: Oktober 21, 2020, 09:56:08 von BeaglePapa61 Grund: Ergänzung und Bild anhängen
Guten Morgen zusammen,

vielen Dank schon mal. Wie gesagt, ich bin kein Spezialisit und habe mich auch nicht an die Regeln gehalten, die ich anfangs gar nicht kannte, von wegen "Normalform" und Nomenklatur und so... pardon...

Sie dürfen in diesem Board keine Dateianhänge sehen.

Also ich habe eine Tabelle "Tabelle8_AnbieterName", mit allen Anbietern.

In der Haupttabelle "Tabelle1_GesamtUebersicht" kann ich drei Anbieter für die Muster auswählen, und drei für die Serie, für die es Angebote gibt, für die ich die Preise eintrage und die Angebotsdateien verlinke und so.

Jetzt habe ich eine Abfrage erstellt, die mir die Daten nach bestimmten Kriterien zusammenstellt, die ich dann von einer Exceltabelle aus abrufen kann für die Weiterverarbeitung. In dieser Abfrage möchte ich aber nur den einen Anbieter Muster und einen Anbieter Serie drin haben, den ich mit dem Feld AnbieterWahlSerie bzw. AnbieterWahlMuster definiert habe, wer der "Auserwählte" sein soll. Deshalb hatte ich angefangen mit der WENN-Verschachtelung.

(Bisher hatte ich den auserwählten Anbieter extra in das Feld Anbieter1 eingetragen und mit der Tabelle8 in Beziehung gesetzt, deshalb gibt es noch nur diese eine Beziehung, aber das ist mir zu umständlich, denn ich weiß ja nie von Anfang an, wer der Auserwählte sein wird und das Umschreiben der Reihenfolge ist blöd...)

Ist mein Vorhaben damit klarer geworden?

MzKlMu

Hallo,
kein Bild zu sehen.
Das kannst Du hier direkt am Beitrag anhängen.
Gruß
Klaus


DF6GL

Hallo,

das Datenmodell (Tabellenaufbau und Beziehungen) ist völlig ungeeignet. Damit kommst Du nicht weit(er).

Siehe u. st. Links 1, 1a und 1b.

Setze die Normalisierungsregeln entspr. den Datenverhältnissen um, dann sehen wir weiter.




BeaglePapa61

Hallo DF6GL,

vielen Dank für das Prüfen und die vorläufige weitere Vorgehensweise für mich. Ich werde mich da einlesen und meine Tabellen prüfen. Da ich das aber alles "nebenher" mache, wird das etwas dauern.

Kannst Du mir vielleicht einen Tipp geben, an welcher Stelle ich genauer schauen sollte ;-) ?

DF6GL

Hallo,


es geht in erster Linie um Tabelle Gesamtübersicht.

Die darin enthaltenen Aufzählungen von Feldern mit gleichen sinngemäßen Inhalts (z. NB. Angebot1, Angebot2, Angebot3) müssen in separate Tabellen ausgelagert werden.
Die Beziehungen sollten (müssen), wo immer es geht, mit referenzieller Integrität ausgeführt werden. Evtl. wo sinnvoll/notwendig, mit Aktualisierungsweitergabe und Löschweitergabe.

Weiterhin sollten Feldnamen über die gesamte DB gesehen eindeutig benamst werden, also nicht "ID" in jeder Tabelle, sondern z. B. MaterialID, AnbieterID etc. Desgleichen die dazugehörenden Fremdschlüsselfelder: MaterialID_F, AnbieterID_F etc.


Eine Tabelle "Gesamtübersicht" gibt es im Allgemeinen nicht.  Übersichten werden per verknüpfende Abfragen über die beteiligten Grund-Tabellen(daten) erstellt und als Bericht dargestellt. Solche Übersichtsabfragen sind in aller Regel nicht aktualisierbar.