Supportnet Computer
Planet of Tech

Supportnet / Forum / Datenbanken

Access-Abfrage





Frage

Hallo, ich bitte um Hilfe für eine Access-Abfrage: Habe folgede Tabelle: Art-Nr. Art.-Name Preis1 Preis2 Preis3 Preis4 100 Test 4,55 € 3,99 € 0,00 € 5,22 € Nun möchte ich in einer Abfrage zu jedem Artikel den kleinsten Preis von den 4 Preisen ermitteln, natürlich ohne 0,00 €./Wert Das Ergebnis sollte also hier 3,99 € ergeben. mfg

Antwort 1 von Marie

Es ist mir jetzt zur späten Stunde nicht gelungen sämtliche Abfragen in einer zu verschachteln, der Wurm wäre mir jetzt zu lang und zu unübersichtlich geworden, deshalb habe ich zwei Hilfsspalten eingefügt wo ich Preis 1 mit Preis 2 als MinWert1_2 verglichen habe und entsprechend Preis 3 mit Preis 4 als MinWert3_4 verglichen habe, und dann aus diesen beiden Ergebnissen wieder das Ergebnis MinWert gebildet habe. Du kannst jedoch dann die Hilfsspalten nicht ausblenden. Es geht natürlich auch ohne diese Hilfsspalten, aber wenn Du schon solche Programmierfehler machst sowas vergleichen zu müssen, was nebeneinandersteht, dann musst Du das jetzt in Kauf nehmen oder aus meinen drei Würmen selbst einen zusammenbasteln. Viel Spaß dann dabei. :-)
Leider ist das jetzt im SN eine Endloszeile, aber Du kannst das in den Editor kopieren, dann entsprechend Deinen Tabellennamen einsetzen und falls nötig mit suchen und ersetzen die Tabellenfelder ändern

Gruß Marie

SELECT IIf([preis1]>0,IIf([preis1]<[preis2],[preis1],IIf([preis2]>0,[preis2],[preis1])),[preis2]) AS MinWert1_2, IIf([preis3]>0,IIf([preis3]<[preis4],[preis3],IIf([preis4]>0,[preis4],[preis3])),[preis4]) AS MinWert3_4, IIf([MinWert1_2]>0,IIf([MinWert1_2]<[MinWert3_4],[MinWert1_2],IIf([MinWert3_4]>0,[preis4],[MinWert1_2])),[MinWert3_4]) AS MinWert
FROM tblArtikel;


Antwort 2 von Juventas

Hallo Marie,

vielen Dank für Deine Antwort. Aber was meinst Du mit
Programmierfehler. Wie soll ich es sonst machen.
Ich habe also für jeden Artikel 4 Einkaufspreise von
4 verschiedenen Lieferanten. Das Ergebnis soll sein,
dass mir Access den besten/niederigsten Lieferanten-
preis ausgibt.

Hast Du eine ander Programmier-Lösung ???

mfg

Juventas

Antwort 3 von Marie

Ja normalerweise macht man eine neue Tabelle und die unterschiedlichen Preise dort untereinander, aber wenn Du das jetzt halt eben so hast, dann probier mal ob Du so klarkommst.

Gruß Marie

Antwort 4 von Juventas

Hallo Marie,

zunächst vielen Dank für Deine Mühe. Aber ich verstehe noch nicht, wie man es untereinander hinbekommt, dass für jeden
Artikel in einer Liste mit allen Artikeln der niedrigste Preis angezeigt wird. Vielleicht hast Du noch mal Lust, mir das kurz
zu erklären - vielen Dank für Deine Mühe.

Gruß

Juventas

Antwort 5 von Pausenfueller

Hallo Juventas,

das lässt sich nicht kurz erklären, du lässt dich bei der Gestaltung deiner Datenbank vermutlich zu sehr von der Tabellenkaltulation beeinflussen.

Was meinte also Mari mit 'Preise untereinander'?

Eine Datenbank ist zunächst einmal eine Ansammlung verschiedener Daten, in verschiedenen Tabellen, die wiederum über gemeinsame Merkmale miteinander verknüpft sind. Dabei gibt man die Daten nicht direkt in diese Tabellen ein, sondern verwendet entsprechende Erfassungsmasken zum Erzeugen der entsprechenden Datensätze. Neue Informationen werden also durch neue Datensätze erfasst, die dan in den entsprechenden Tabellen 'untereinander' stehen.

So könnte man z.B. in einer Maske 'Wareneingang' bei Bedarf neue Artikel anlegen oder einen vorhandenen aufrufen, Zugangs-Datum, Zugangs-Menge, Preis eingeben, Lieferant und Lagerort auswählen oder neu anlegen usw.. Damit werden dann in den entsprechenden Tabellen neue Datensätze erzeugt, die man in Abfragen auswerten kann. U.a. auch, welches der niedrigste Preis war, welcher jemals, oder in einem bestimmten Zeitraum für einen bestimmten Artikel bezahlt wurde. Man könnte auch auswerten, welcher Artikel momentan in welcher Menge an welchem Lagerort lieg, dafür auch einen Durchschnittspreis ermitteln u.v.m..

Die ganzen Funktionen dafür liefert Access mit, man braucht keine zusätzlichen Scripts dafür. Das A. und O. an der ganzen Sache ist ein vernünftiger Aufbau der grundlegenden Tabellen in ihren Inhalten und Wechselbeziehungen.

Du solltest dir also zuerst Gedanken darüber machen, was du alles mit deiner Datenbank realisierten willst und danach die Datenbanktabellen gestalten. Dein Verfahrensweg ist vermutlich umgekehrt, du fängst mit einer an Excell erinnernden Tabelle an und willst diese dann mit allen möglichen Script-Tricks auswerten.

Ich hoffe, du nimmst mir diese etwas kritischen Hinweise jetzt nicht übel, aber wenn du den Ansatz nicht änderst, wird du nach einer Scriptlösung für dein jetziges Problem, schon bald auf die nächste Hürde stoßen.

Gruß
Pausenfüller

Antwort 6 von Juventas

Hallo Pausenfüller,

besten Dank für Deine Hinweise. Warum soll ich Deine Kritik denn übel nehmen. Jeder Hinweis ist mir willkommen, auch
kritische.

Tja, leider kann ich nicht auf eine tabellarische Aufstellung verzichten. Es muss mit einem Blick sichtbar sein, welcher
Lieferant den niedrigsten Preis bei den Artikeln hat.

Ich habe jetzt eine Umweg-Lösung gefunden. Da kein Artikel
über 1000 € kostet und kosten wird, habe ich den Standardwert
für jeden LFieferanten auf 1000 gesetzt. Bei der Abfrage habe ich dann für jeden LF eine Abfragespalte hinzugefügt und mit einer Wenn-Formel den kleinsten Preis ermittelt, so dass in den 4 Spalten nur ein Preis erscheint - und zwar der niedrigste.
In einer 5 Spalte habe ich dann die 4 LF-Spalten summiert, so
dass ich hier den kleinsten Preis habe.
Bei den LF-Preisen habe ich dann eine begingte Formatierung
vorgenommen, so dass immer der niedrigste Preis des jeweiligen LF in "grün" erscheint. Es funktioniert.

Nochmals herzlichsten Dank für die Mühe.

Gruß

Juventas

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: