Access Rechnungsdatenbank, verschiedene Preise für verschiedene Kunden

trkiller

Semiprofi
Thread Starter
Mitglied seit
11.05.2009
Beiträge
1.552
Ort
Ludwigsburg
Bin gerade dabei mein aktuelles Rechnungsprogramm auf Access Basis umzubauen.

Nun möchte ich die Datenbank so ändern, das es mit Artikeln gefüllt werden soll. Jedoch habe ich gerade hier eine große Blockade und komme einfach nicht weiter. Jeder Kunde, der in der Datenbank eingetragen ist hat einen anderen Preis auf die verschiedenen Artikel.
Wenn Kunde1 auf Artikel1 den Preis 1€ hat, dann hat Kunde2 auf den Artikel1 den Preis 1,25€

Folgende Tabellen habe ich mir aufgebaut:

  • Anrede
  • Kunde
  • Artikel
  • Auftragskopf
  • Auftragszeile
  • Preis
  • Status
  • Meine erste Abfragen


qry_Auftragskopf

SELECT tb_Auftragskopf.Auftragsnummer, tb_Auftragskopf.Lieferdatum, tb_Auftragskopf.Rechnungsdatum, tb_Auftragskopf.KD_Nr, tb_Auftragskopf.Status, tb_Kunde.Firma, tb_Kunde.Anrede, tb_Kunde.Vorname, tb_Kunde.Nachname, tb_Kunde.Straße, tb_Kunde.PLZ, tb_Kunde.Ort
FROM tb_Kunde INNER JOIN tb_Auftragskopf ON tb_Kunde.Kundennummer = tb_Auftragskopf.KD_Nr;


qry_Auftragszeile

SELECT tb_Auftragszeile.AuftragszeilenNR, tb_Auftragszeile.Auftrags_Nr, tb_Auftragszeile.Artikel, tb_Auftragszeile.Menge, tb_Artikel.Kartoninhalt, [Menge]*[Kartoninhalt] AS Gesamt, tb_Artikel.Artikelbezeichnung
FROM tb_Artikel INNER JOIN tb_Auftragszeile ON tb_Artikel.ArtikelNr = tb_Auftragszeile.Artikel;


Ich habe ein Rechnungsformular erstellt und es funktioniert auch alles soweit, jedoch bekomme ich es einfach nicht hin das der Preis des Artikels für den jeweiligen Kunden eingetragen wird.
Ich will das direkt verknüpfen, sobald ich Artikel 1 selektiert habe, werden die Artikelinformationen aus der Tabelle Artikel entnommen und eingetragen. Für die Bezeichnung, Kartoninhalt usw. funktioniert das ganz gut jedoch nicht für den Preis.

Wenn ich in meine Query Rechnungszeile den Preis einfüge aus der Tabelle Preis, dann kann ich im Formular keine Daten mehr auswählen. Die Query wird dann komplett deaktiviert.
Ich habe in meiner Tabelle Artikel die Artikel eingegeben, nun möchte ich auch ein Formular erstellen, indem alle Artikel zu sehen sind ohne Preis und möchte es mit dem Kunden verknüpfen. Will also nach Kunde die Preise für die jeweiligen Artikel setzen und in die Tabelle Preis mit der Kundennummer abspeichern.

Das ganze beschäftigt mich so dermaßen, das ich nur noch am überlegen bin wie ich das machen soll.

Ich hoffe ich konnte mich gut genug ausdrücke. Über Hilfe wäre ich sehr sehr dankbar.

Zur Info, VBA und SQL Kenntnisse sind vorhanden.

Als Anlage habe ich mal meine Beziehungen eingefügt.
 

Anhänge

  • beziehungen.JPG
    beziehungen.JPG
    35,8 KB · Aufrufe: 306
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Der Aufbau ist so nicht richtig, denn du vergisst dabei die zwingend zu gewährleistende Nachvollziehbarkeit der Rechnungen.
Wenn du jetzt in der Tabelle Preis einen Preis änderst, so ändert sich automatisch auch der Preis aller bisher gedruckten Rechnungen dieses Artikels bei diesem Kunden.
Das darf niemals passieren!
Lösung: Du speicherst den Preis zusätzlich in der Tabelle Auftragszeile. Der Preis für eine neue Rechnung wird aus der Tabelle Preis gezogen und in der Tabelle Auftragszeile gespeichert.
Ich habe so etwas hier auch schon am laufen, allerdings mache ich rel. wenig mit querys, sondern viel mit vba.

Bei mir läuft das so ab:
In der Tabelle Artikel ist ein Grundpreis gespeichert.
Bei Rechnungserstellung wird geschaut, ob für den Kunden und den Artikel schon ein Preis in der Tabelle Preis gespeichert ist.
Ist dort ein Preis gespeichert, wird dieser Preis herangezogen. Ist dort kein Preis gespeichert, wird der Preis aus der Tabelle Artikel herangezogen.
Bei der Rechnungserstellung kann der Preis geändert werden. Ist der Preis noch nicht in der Tabelle Preis gespeichert, wird er automatisch dort gespeichert.
In beiden Fällen wird der Preis zusätzlich in der Tabelle Auftragszeile gespeichert, damit Preisänderungen keine Auswirkungen auf bereits geschriebene Rechnungen haben.
Dir fehlt übrigens noch eine Verknüpfung mit Aktualisierungsweitergabe zwischen der Tabelle Preis und der Tabelle Kunde.
Sonst kannst du in der Tabelle Preis Preise für nicht existierende Kunden anlegen und Änderungen bei der Kundennummer werden nicht in die Tabelle Preis repliziert, was zu Dateninkonsistenzen führt.

In der Praxis ist das bei mir noch weit ausgefeilter, auch z.B. Sammelrechnungen etc. sind bei mir möglich.
Das auszuführen, würde aber den Rahmen des Forums sprengen.

Noch etwas:
Firmenkunden haben i.d.R. mehr als einen Ansprechspartner.
Du solltest daher die Tabelle Kunde aufteilen in eine Tabelle Kunde, in der nur die Grunddaten (Anschrift, Firmierung, Telefonnummer der Zentrale, etc.) des Kunden drin stehen und eine zweite Tabelle Kundenkontaktperson, in der die spezifischen Daten der Kontaktpersonen (Name, Telefondurchwahl, Email etc.) drin stehen.
 
Zuletzt bearbeitet:
Ja du hast Recht, ich habe auch sehr viele Änderungen vorgenommen nachdem ich hier gepostet habe.
Ich habe mich dazu entschlossen vieles mit VBA zu machen und bei der Auswahl des Artikels die Sachen über mehrere Tabellen abzufragen mit Standardpreis wie du es hier beschrieben hast.
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh