Supportnet / Forum / Datenbanken
an Rudolf
Frage
Hallo Rudolf
vom Prinzip her war das genau richtig.
Das Problem in dieser Lösung ist, das die Anbieter untereinander stehen und daher der Artikel zeimal eingegeben werden muß.Auch dürfen keine gleichen Preise sein, die werden sonst alle mit angezeigt. Meine Frage, glaubst Du das ist auch möglich die Anbieter nebeneinander also pro Anbieter eine Spalte und die verschieden Artikel auch in einer Spalte zu setzten. Mit dem Ergebnis in einer Abfrage wird mir zu jedem Artikel der günstigste Preis und der dazugehörige Anbieter ausgegeben.
Tausend Dank
Margret
Antwort 1 von Roadrunner90
Das geht im Prinzip schon, d.h. aber, dass du in der Anzahl der Anbieter festgelegt bist. Kommt nun ein weiterer dazu, musst du ja die Tabellen-Definition ändern.
Antwort 2 von Margret
und was heißt das genau? Was muß ich da machen?
Die Tabelle sieht wie folgt aus.
Artikel AnbieterA AnbieterB
Birnen 10€ 20€
Äpfel 20€ 10€
Abfrage:
Artikel AnbieterA AnbieterB
Birnen 10€ -
Äpfel - 10€
so sollte es in etwa aussehen. Meinst Du das geht, wenn ja wie? Kannst Du mir helfen?
Die Tabelle sieht wie folgt aus.
Artikel AnbieterA AnbieterB
Birnen 10€ 20€
Äpfel 20€ 10€
Abfrage:
Artikel AnbieterA AnbieterB
Birnen 10€ -
Äpfel - 10€
so sollte es in etwa aussehen. Meinst Du das geht, wenn ja wie? Kannst Du mir helfen?
Antwort 3 von Margret
ups die werte haben sich verschoben, aber ich glaub Du weißt was ich meine.
Antwort 4 von kleenes
Bescheidene Frage, könntest Du vielleicht irgendwie einen aussagekräftigen Betreff einbauen???
Gruß,
k.
Gruß,
k.
Antwort 5 von oliverV
Hallo Margret,
was Rudolf meint, solange du nur eine fest definierte Anzahl von Anbietern hast (in deinem Fall zwei), kannst du die Variante wählen, das du für jeden Anbieter ein Spalte erstellst.
Der Nachteil ist, jedes Mal wenn ein neuer Anbieter hinzukommt, musst du deine Tabelle um eine weitere Spalte für diesen neuen Anbieter erweitern.
Beispielsweise nach einem Monat kommt ein dritter Anbieter hinzu, du hast aber schon einige Datensätze für die ersten zwei Anbieter erfasst, du fügst nun eine dritte Spalte hinzu, diese Spalte ist aber leer, denn als du die bisherigen Daten erfasst hast, gab es die dritte Spalte ja noch nicht.
Du könntest nun die Spalte mit „0“ auffüllen, aber was du bei der Abfrage nach dem günstigsten Preis herausbekommt, brauch ich dir wohl nicht zu erklären.
Das gleiche Problem hast du wenn ein Anbieter die Ware nicht anbieten kann, du also keinen Preis eingeben kannst, der günstigste Anbieter ist dann derjenige, der kein Angebot abgegeben hat (0,00 €).
Deshalb meine Aussage „Falsche Datenbankstruktur“.
Die praxisnahe und eleganteste Lösung ist der Aufbau wie Rudolf ihn in Antwort 7 der „Daten vergleichen“-Frage beschrieben hat.
Dadurch bist du flexibel, wenn die zuvor beschriebenen Fälle eintreten. Wenn ein Anbieter keinen Preis abgibt (du also keinen Datensatz erfasst), wird der günstigste der noch vorhandenen Anbieter durch deine Abfrage ermittelt.
Gruß
oliver
was Rudolf meint, solange du nur eine fest definierte Anzahl von Anbietern hast (in deinem Fall zwei), kannst du die Variante wählen, das du für jeden Anbieter ein Spalte erstellst.
Der Nachteil ist, jedes Mal wenn ein neuer Anbieter hinzukommt, musst du deine Tabelle um eine weitere Spalte für diesen neuen Anbieter erweitern.
Beispielsweise nach einem Monat kommt ein dritter Anbieter hinzu, du hast aber schon einige Datensätze für die ersten zwei Anbieter erfasst, du fügst nun eine dritte Spalte hinzu, diese Spalte ist aber leer, denn als du die bisherigen Daten erfasst hast, gab es die dritte Spalte ja noch nicht.
Du könntest nun die Spalte mit „0“ auffüllen, aber was du bei der Abfrage nach dem günstigsten Preis herausbekommt, brauch ich dir wohl nicht zu erklären.
Das gleiche Problem hast du wenn ein Anbieter die Ware nicht anbieten kann, du also keinen Preis eingeben kannst, der günstigste Anbieter ist dann derjenige, der kein Angebot abgegeben hat (0,00 €).
Deshalb meine Aussage „Falsche Datenbankstruktur“.
Die praxisnahe und eleganteste Lösung ist der Aufbau wie Rudolf ihn in Antwort 7 der „Daten vergleichen“-Frage beschrieben hat.
Dadurch bist du flexibel, wenn die zuvor beschriebenen Fälle eintreten. Wenn ein Anbieter keinen Preis abgibt (du also keinen Datensatz erfasst), wird der günstigste der noch vorhandenen Anbieter durch deine Abfrage ermittelt.
Gruß
oliver
Antwort 6 von klausinger
@margret
will ja nicht meckern, aber ich glaube nicht dass es hilft zu EINEM Problem gleich DREI Threads aufzumachen, die dann weder einen sinnigen Betreff noch einen Hinweis auf den Ursprungsthread haben.
Also Für alle:
Ursprungsthread
Betreff: Daten vergleichen
dann dieser
Betreff: Rudolf HILFE !!!!!
der dritte war dann dieser hier ....
Die vorgeschlagene Lösung von Rudolf finde ich übrigens sehr gut, denke damit sollte es hinhauen, vor allem wenn man ein Abfrageformular davorsetzt ...
Gruß
klaus
will ja nicht meckern, aber ich glaube nicht dass es hilft zu EINEM Problem gleich DREI Threads aufzumachen, die dann weder einen sinnigen Betreff noch einen Hinweis auf den Ursprungsthread haben.
Also Für alle:
Ursprungsthread
Betreff: Daten vergleichen
dann dieser
Betreff: Rudolf HILFE !!!!!
der dritte war dann dieser hier ....
Die vorgeschlagene Lösung von Rudolf finde ich übrigens sehr gut, denke damit sollte es hinhauen, vor allem wenn man ein Abfrageformular davorsetzt ...
Gruß
klaus
Antwort 7 von Roadrunner90
@Margret
ich hab mal deine Variante durchgespielt, das führt mit der Zeit unweigerlich ins Chaos. Die Version die ich dir gesagt habe, ist auf jeden Fall besser. Sie ist leichter zu warten und an der Tabellenstruktur müssen keine Änderungen gemacht werden.
In deiner Variante ist das alles zu unflexibel. Mit einer Abfrage ist es da auch schwierig den billigsten Anbieter zu finden. Es wäre dann besser mit VBA den richtigen Anbieter zu finden. Das geht zwar ist aber, wie schon gesagt, nicht empfehlenswert.
sieht dann etwa so aus:
Wenn jetzt ein neuer Anbieter dazu kommt musst du nicht nur die Tabelle, sondern auch den oben stehen Code erweitern. D.h. irgendwann ist die Übersicht beim Teufel.
Gruß Rudolf
ich hab mal deine Variante durchgespielt, das führt mit der Zeit unweigerlich ins Chaos. Die Version die ich dir gesagt habe, ist auf jeden Fall besser. Sie ist leichter zu warten und an der Tabellenstruktur müssen keine Änderungen gemacht werden.
In deiner Variante ist das alles zu unflexibel. Mit einer Abfrage ist es da auch schwierig den billigsten Anbieter zu finden. Es wäre dann besser mit VBA den richtigen Anbieter zu finden. Das geht zwar ist aber, wie schon gesagt, nicht empfehlenswert.
sieht dann etwa so aus:
Private Sub obstart_Change()
Dim obst As New adodb.Recordset
sql = "select obstart, anbieter1,preis1,anbieter2,preis2 from testobst2 "
sql = sql & "where obstart = " & "'" & obstausformular & "'"
obst.Open sql, ActiveConnection
If Not obst.EOF Then
If obst(2) < obst(4) Then
billigster = obst(1)
Else
billigster = obst(3)
End If
End If
End Sub
Wenn jetzt ein neuer Anbieter dazu kommt musst du nicht nur die Tabelle, sondern auch den oben stehen Code erweitern. D.h. irgendwann ist die Übersicht beim Teufel.
Gruß Rudolf
Antwort 8 von Roadrunner90
@Klaus
danke für die Zusammenfassung. Hätte fast die Übersicht verloren :)
wir sollten uns auf einen Thread einigen
damit die Übersicht
danke für die Zusammenfassung. Hätte fast die Übersicht verloren :)
wir sollten uns auf einen Thread einigen
damit die Übersicht
Antwort 9 von Roadrunner90
... Fortsetzung von A8
nicht verloren geht. - sollte da stehen -
Mir ist die Tastatur ausgefallen.
Gruß Rudolf
nicht verloren geht. - sollte da stehen -
Mir ist die Tastatur ausgefallen.
Gruß Rudolf
Antwort 10 von Margret
hallo Rudolf,
hatte wenig Zeit die letzten Tage. Danke erst einmal für Deine Bemühungen. Ich glaube Du hast Recht, es gibt wohl keine elegante Lösung für dieses Problem, also habe ich es erst einmal auf Eis gelegt.
Danke nochmals
Margret
hatte wenig Zeit die letzten Tage. Danke erst einmal für Deine Bemühungen. Ich glaube Du hast Recht, es gibt wohl keine elegante Lösung für dieses Problem, also habe ich es erst einmal auf Eis gelegt.
Danke nochmals
Margret
Antwort 11 von Roadrunner90
Hallo Margret,
du kannst mir das Problem auch mal genauer beschreiben und als mail zukommen lassen, dann überlege ich mir eine elegante Lösung.
Gruß Rudolf
p.s. bevor sich jemand beschwert - Problem und Lösung werden dann in Kürze
veröffentlicht
du kannst mir das Problem auch mal genauer beschreiben und als mail zukommen lassen, dann überlege ich mir eine elegante Lösung.
Gruß Rudolf
p.s. bevor sich jemand beschwert - Problem und Lösung werden dann in Kürze
veröffentlicht

