PDA

Vollständige Version anzeigen : Portoabfrage


Hägar
24.10.2003, 11:24
Hallo
Ich möchte eine Datenbank erstellen um schnell meine Frachtkosten ermitteln zu können. diese hängen unter anderem vom Gewicht ab.
Nun habe ich nachfolgende Tabelle erstellt

Gewicht | Preis
100 | 0,23€
200 | 0,21€
300 | 0,19€

Wie baue ich eine Abfrage auf um bei 201 Kg die richtige Position angezeigt zu bekommen, ich stehe dabei irgendwie auf dem Schlauch

:-( Hägar

strausto
24.10.2003, 11:27
Hier bietet sich die Funktion DLookUp an (siehe OH)

Ev hilft Dir auch eine Theta Join

Hägar
24.10.2003, 11:40
Ich kann mit beiden Befehlen nichts anfangen, ich kenne Sie nicht.
Ich hatte gehoft das Problem mit einer Abfrage zu lösen, da meine Erfahrung beim Erstellen von Macros, bzw Modulen im Access sehr gering ist
:-( Hägar

dancer1970
24.10.2003, 11:46
Ich würde eine gesonderte Tabelle Preise empfehlen.
Darin würde ich Felder wie Gewicht von/bis, Gültigkeit von/bis usw. einfügen.
Damit dann die Preisberechnung durchführen.
In einer abfrage müßten dann die Werte entsprechen zusammengeführt werden.

Ein einfacherer Weg wäre über verschachtelte wenn/dann funktion.
Das ist aber nicht besonders zukunftsfähig.

strausto
24.10.2003, 11:47
Ich kann mit beiden Befehlen nichts anfangen, ich kenne Sie nicht.


Ein Theta Join ist kein Befehl!

DLookUp ist eine Funtion, da ein Wert zurückgegeben wird.

Siehe Online Hilfe zum Thema DLookUp!


Ich hatte gehoft das Problem mit einer Abfrage zu lösen, da meine Erfahrung beim Erstellen von Macros, bzw Modulen im Access sehr gering ist


Diese Funktion kannst Du direkt im Formular verwenden und VBA Kenntnisse zu haben. Mit Makros hat das nichts zu tun!

Nouba
24.10.2003, 11:54
@Torsten,

den Theta Join unter Access bleibst Du uns aber noch schuldig. :biggrinl:

Claus33
24.10.2003, 12:39
Warum ist die Wenn(dann; ist;)-Funktion nicht zukunftssicher?

Würde mich interessieren, weil ich diese Formel immer sehr gerne in meine Abfragen eigebaut habe?

Danke Claus

dancer1970
24.10.2003, 13:33
Die Formel an sich ist ja ok,
aber wenn sich die Grundlagen für den Preis ändern, muß alles neu programmiert werden.
Es könnte ja sein, dass ab morgen ein Preis von 150-250kg existiert.
Oder ab nächsten Monat mit anderen Werten gerechnet werden muß.
Daher ein externer Preisbezug, der auch die Preise vom letzten Jahr korrekt berechnet.

Stefan

Claus33
24.10.2003, 15:45
Achso hast du das gemeint, und ich dachte ich müsste all meine Abfragen ändern
,-))

Grüsse
Claus

strausto
24.10.2003, 16:18
@Nouba ;)

Versuche heute abend mal ein MinimalBsp einzustellen.

strausto
25.10.2003, 12:49
@Nouba

Hier der versprochene Theta Join:

Tabelle1

Weight
10
10
20
30
210
60
110
100

Tabelle2

WeightU WeightO Porto
0 49 10
50 99 15
100 149 20
150 199 25

Abfrage (Theta Join)

SELECT
Tabelle1.Weight
, Tabelle2.WeightU
, Tabelle2.WeightO
, Tabelle2.Porto
FROM Tabelle1 INNER JOIN Tabelle2
ON (Tabelle1.Weight< Tabelle2.WeightO)
and (Tabelle1.Weight >= Tabelle2.WeightU)
order by Tabelle1.Weight


Ergebnis:

Weight WeightU WeightO Porto
10 0 49 10
10 0 49 10
20 0 49 10
30 0 49 10
60 50 99 15
100 100 149 20
110 100 149 20

Hägar
25.10.2003, 17:28
Toll die letzte Mail von Nouba hat mich auf genau die Idee gebracht die mir noch gefehlt hat.
Nochmal vielen Dank für die rege beteiligung
:-))) Hägar

strausto
25.10.2003, 20:50
Schön! Und was hat er Dir nun geraten?

Sascha Trowitzsch
25.10.2003, 23:46
Ja, Hägar, das würde evtl alle Beteiligten interessieren.

Ansonsten: Faul und schlampig, wie ich gerne programmiere, würde ich eine der beiden folgende Lösungen nehmen: ;)

SELECT CCur( Choose (1+Int(([Gewicht]/100)), 0.23, 0.21, 0.19)) AS Preis FROM Tabelle

oder

SELECT CCur( Switch ([Gewicht]<200, 0.23, [Gewicht]>=200, 0.21, [Gewicht]>=300, 0.19)) AS Preis FROM Tabelle;

Ciao, Sascha

Nouba
26.10.2003, 08:59
@all,

außer hier im Beitrag habe ich zu Niemandem geflüstert. :blabla:

Torsten hat ja wie gewohnt mit wenigen Worten zwei Lösungen präsentiert, die IMO leider nicht im QBE-Grid darstellbar sind.

Hägar
26.10.2003, 19:23
Manchmal steht man ja auf dem Schlauch, als ich mir aber die Tabelle angesehen habe, und sah das er mit einer Unter, und einer Obergrenze gearbeitet hat war alles ganz einfach.
Ich habe die Tabelle um die Untergrenze erweitert. Dann habe ich eine Abfrage erstellt in der ich nachfolgende Bedingung eingegeben habe.
Untergrenze < Gewicht
Obergrenze >= Gewicht
Damit war mein Problem gelöst, Ich kann beliebig Unter und Obergrenzen ändern, bzw hinzufügen und bekomme das passende Porto angezeigt.
:-))) Hägar