Neuigkeiten:

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

Mobiles Hauptmenü

Artikelabgleich

Begonnen von xtriv0r, Februar 05, 2012, 17:23:02

⏪ vorheriges - nächstes ⏩

xtriv0r

Guten Abend Zusammen,

mein erster Post im Forum und ich könnt ein wenig Unterstützung gebrauchen :-)
Vorweg meine Access Kentnisse sind nicht hervorragend aber es gibt ja google also ich hoffe, dass der ein oder andere mir einige Tipps oder Denkanstöße geben könnte. Ich kann dann natürlich selbst recherchieren aber ich weiß gerade nicht wo ich am besten starten soll

Ich habe folgende Frage:

Ziel: Aufbau einer Artikeldatenbank für BEZAHLTE Artikel. Per Abfrage schicke ich die Rohdaten in eine neue Tabelle namens Artikeldatenbank rein.
Jedoch gehen nicht alle Artikel dort rein. In die Tabelle werden nur Artikel importiert die eine Artikelnummer haben UND im Status bezahlt sind.

Frage 1: Wie kann ich die soeben in eine neuen Tabelle exportieren Datensätze aus der Rohtabelle löschen?

Weiterhin berechnen ich in der neuen Tabelle Artikeldatenbank den Zeitraum vom heutigen Tag bis zum Datum an dem das ausbezahlt worden ist.

Frage 2:
Jetzt möchte ich einen Abgleich durchführen!
Ich habe eine neue Bestelliste erhalten und möchte diese nun mit der Artikeldatenbank abgleichen und die auf der Bestelliste enthaltenen Warenwerte durch die Werte in der Artikeldatenbank ersetzen. ( Wahrscheinlich per Aktualisierungsabfrage)
Die Bestelliste soll jedoch nur die Warenwerte herausnehmen die vom Datum am am nächsten an das heutige Datum liegen.

Beispiel:

Artikelnr; Bezahlt am; Warenwert
123456; 01.01.2010: 150
123455: 01.01.2012; 167

Somit soll in der Bestelliste für alle Artikel 123456 der Wert 167 eingetragen werden.

Ich hoffe ihr könnt mir vielleicht ein paar Hilfen geben.

Gruß
xtriv0r

database

Hallo,

ohne näher auf den Datenbankaufbau einzugehen - zu 1:

entweder mit ...

DELETE * FROM Rohdatentabelle WHERE EXISTS
   (SELECT Artikelnummer FROM Artikeldatenbank WHERE Artikeldatenbank.Artikelnummer = Rohdatentabelle.Artikelnummer)


oder ...


DELETE * FROM Rohdatentabelle WHERE Artikelnummer IN (SELECT Artikelnummer FROM Artikeldatenbank)


Allerdings ist Vorsicht geboten wenn in der Rohdatentabelle Artikelnummern mehrfach vorkommen!
Ersetze daher DELETE durch SELECT um die zu löschenden Datensätze TESTWEISE anzuzeigen!

zu 2:

Ich glaube in deinem Beispiel hat sich ein Schreibfehler eingeschlichen - die Artikelnummern sollten BEIDE '123456' lauten - sonst macht das keinen Sinn.  :-\

Das Vorhaben wird ein wenig schwierig - die Aktualisierung 'in einem Rutsch' geht m.E. nicht
daher du müsstest zuerst aus der Bestellliste diejenigen Datensätze auslesen die deinem Kriterium entsprechen.
Das läßt sich bewerkstelligen in dem du eine gruppierte Abfrage erstellst und für das Datum den Max-Wert ermitteln läßt,
da das späteste Datum jenes ist, das dem aktuellen Tagesdatum am nächsten liegt.
Die gefundenen Daten kannst du dann per Tabellenerstellungsabfrage in eine Tabelle auslagern.
Über eine Aktualisierungsabfrage sollten sich dann die Preise der Artikel dieser neuen Tabelle mit den Einträgen aus der Artikeldatenbank aktualisieren lassen.
Das Zurückspielen der Daten in die Bestellliste erfolgt dann ebenfalls mit einer Aktualisierungsabfrage wobei Artikelnummer UND Datum der Bestellliste mit der aktualisierten Tabelle in Beziehung zu setzen wären.
Altenativ könntest du der Bestellliste einen Primärschlüssel (AutoWert) VOR dem Export verpassen, dann wird die Aktualisierung der Bestelliste etwas einfacher, da nur der Primärschlüssel der beiden Tabellen in Beziehung gesetzt werden muss.

HTH