Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Neuer Datensatz in einem abfragebasierten Formular

Begonnen von Chris_HN, Juli 10, 2023, 09:34:15

⏪ vorheriges - nächstes ⏩

Chris_HN

Hallo,
in Access 365 habe ich eine Datenbank mit verknüpften Tabellen (Lieferant, Bestellung, in der Bestellung zugehörige Artikel), welche u.a. in einer separaten Artikelliste und einer n:M Zuordnungstabelle (da ja eine Bestellung mehrere Artikel enthalten und ein Artikel in mehreren Bestellungen vorhanden sein kann) verbunden sind.

Nun habe ich mir ein Formular erstellt, in dem ich oben den Lieferant bzw. die Bestellnummer (wird automatisch generiert aus der Bestell-ID und dem Jahr des Bestelldatums) auswähle und mir dann unten im ersten UFo die Bestelldetails (Zahlungsbedingungen, Bestellstatus, etc.)  und in einem weiteren UFo die zur Bestellung gehörenden Artikel aufgeführt werden.

Diese beiden Ufo's (Bestelldetails und Artikel) basieren auf einer Abfrage. Als Kriterium der Abfrage habe ich über den Generator den Inhalt des Kombinationsfeldes (Bestellnummer aus dem Huauptformular) genommen.
Nun hätte ich gern innerhalb des Formulars (Also UFo ,,Bestelldetails") und UFo ,,Artikel") gerne neue Datensätze hinzugefügt, wenn eine neue Bestellung getätigt wird.

Heißt also, wenn ich eine neue Bestellung anlege, dann befülle ich über die UFo's erstmal nur die Abfrage und diese befüllt dann im Hintergrund die entsprechenden Tabellen (Lieferanten, Bestellung, Artikel...).
Geht das irgendwie oder muss ich das in einem speziellen, tabellenbasierten Formular machen?
Bzw. Wie setzt man sowas am einfachsten um?

Da in der Abfrage Werte aus verschiedenen Tabellen ,,zusammenlaufen" (Zahlungsziel, Lieferbedingungen, Rechnungsstatus etc.) wäre das natürlich eine komfortable Variante....

Grüße aus dem Süden der Republik.
Chris
Das Gras wächst nicht schneller, wenn man daran zieht.
(Afrikanisches Sprichwort)

Beaker s.a.

Hallo Chris,

Poste ein Bild des Beziehungsfensters. Damit lässt sich das
einfacher erklären.

gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Chris_HN

#2
..hier das Beziehungsfenster. Hoffe es hilft und die Beziehungen sind nicht allzu falsch.

Mir geht es darum, in einem Formular eine neue Bestellung anlegen zu können, wo ich (per ComboBox) den Lieferanten, die Zahlungs,- und Lieferbedingungen etc. auswählen kann und diese dann auch in die Tabellen zurückgeschrieben werden. Die zur Bestellung gehörenden Artikel am besten in einem separaten UFo dann ebenfalls per Drag'n Drop auswählen...

Geht bei mir per Abfrage auch soweit, aber das Schreiben in die Tabellen bekomme ich nicht gebacken...
Das Gras wächst nicht schneller, wenn man daran zieht.
(Afrikanisches Sprichwort)

Beaker s.a.

Hallo Chris,
Zitat..hier das Beziehungsfenster. Hoffe es hilft und die Beziehungen sind nicht allzu falsch.
Im Grossen und Ganzen nicht. Aber es fehlt eine Tabelle Bestellpositionen mit einem FK zu
Bestellungen. Und da kommen die Artikel hinein (1:n reicht hier, die tbl_Artikel_Bestellung
braucht es nicht).
tbl_Bestellungen 1:n tbl_BestellPositionen 1:n Artikel

Ich würde noch die Verbindung von Lieferanten zu Artikeln über eine n:m abbilden (selbst
wenn es z.Zt. nur einen Lieferanten geben sollte). Damit hättest du auch automatisch
eine Vorauswahl der Artikel in den Positionen. Die kommen i.Ü. als Unterformular in das
Bestellformular.
Die Zahlungs- und Lieferbedingungen würde ich schon beim Lieferanten hinterlegen, dann
hast du die auch direkt in der Bestellung und musst die nicht extra auswählen. Ausser die
ändern sich von Bestellung zu Bestellung.

gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

markusxy

#4
Zitat von: Beaker s.a. am Juli 10, 2023, 18:32:07tbl_Bestellungen 1:n tbl_BestellPositionen 1:n Artikel

Ah, die Artikel Tabelle ist also eine N Seite?

Vielleicht nochmal nachdenken.

Lieferant Artikel würde ich auch überlegen, je nach dem was man genau abbilden möchte.
Was ist das für ein Preis in der Artikel Liste? EK oder VK?
So was ist immer problematisch, da sich Preise ja ständig ändern.
Aber auch hier ist immer die Frage, was man konkret abbilden möchte - Historische Daten - Auswertungen usw.

Beaker s.a.

Hallo Markus,

Natürlich nicht, nur beim Tippen nicht aufgepasst.
Korrekt:
tbl_Bestellungen 1:n tbl_BestellPositionen n:1 Artikel

gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Chris_HN

#6
Zitat von: markusxy am Juli 10, 2023, 22:03:09Lieferant Artikel würde ich auch überlegen, je nach dem was man genau abbilden möchte.
Was ist das für ein Preis in der Artikel Liste? EK oder VK?
So was ist immer problematisch, da sich Preise ja ständig ändern.
Aber auch hier ist immer die Frage, was man konkret abbilden möchte - Historische Daten - Auswertungen usw.

Da hast Du recht. Den Artikelpreis lasse ich in der Artikeltabelle (vorerst) mal weg (eben weil sich Preise doch ändern) und werde den dann beim Erstellen der Bestellung und Auswahl des Artikels in der Bestellposition jeweils bestellungsspezifisch händisch eintragen und über ein berechnetes Feld dann mit der Anzahl multiplizieren. Guter Hinweis, hatte ich so nicht auf dem Schirm.

Zitat von: Beaker s.a. am Juli 10, 2023, 18:32:07Im Grossen und Ganzen nicht. Aber es fehlt eine Tabelle Bestellpositionen mit einem FK zu Bestellungen. Und da kommen die Artikel hinein (1:n reicht hier, die tbl_Artikel_Bestellung braucht es nicht).
tbl_Bestellungen 1:n tbl_BestellPositionen 1:n Artikel

Mille Grazie für den Super-Tipp. Die Lösung gefällt mir wesentlich besser als die zuerst anvisierte mit den Artikel-Bestellungen. War echt umständlicher als Dein Vorschlag mit den Bestellpositionen.

Zitat von: Beaker s.a. am Juli 10, 2023, 18:32:07Die Zahlungs- und Lieferbedingungen würde ich schon beim Lieferanten hinterlegen, dann hast du die auch direkt in der Bestellung und musst die nicht extra auswählen. Ausser die ändern sich von Bestellung zu Bestellung.

Ebenfalls hierfür - Tausend Dank. Allerdings mache ich das nur für die Zahlungsbedingungen, denn - hier hast Du vollkommen recht - diese sind normalerweise immer fix. Lediglich die Lieferbedingungen lasse ich per DropDown-Auswahl. Wir haben Lieferanten, die bspw. Stückgut mit der Spedition versenden und Kleinteile mit DHL o.ä.

Zur Info - die neue Beziehungsübersicht im Anhang. Funktioniert jetzt irgendwie besser. So langsam steige ich bei Access dahinter - zugegeben, gaaanz langsam....

Nur eine Frage hätte ich noch zu den Zahlungsbedingungen:
Oftmals ist es so, dass man bei einer Erstbestellung auf Vorkasserechnung bestellt und später dann auf Rechnung mit hinterlegten Zahlungsbedingungen (bspw. 14 Tage, 2% Skonto).
Wie bildet man so etwas am geschicktesten ab?

Nochmals herzlichen Dank für die wertvollen Tipps.....
Grüße aus dem Süden der Republik
Chris
Das Gras wächst nicht schneller, wenn man daran zieht.
(Afrikanisches Sprichwort)

Beaker s.a.

Hallo Chris,
ZitatWie bildet man so etwas am geschicktesten ab?
In dem du auf der Bestellung die ZB per Kombi auswählst/änderst. Den Vorschlag aus der
tbl_Lieferanten kannst du ja überschreiben.
Noch was zum Modell. Die Beziehung zwischen tbl_Lieferanten und tbl_Bestellpositionen
ist falsch. Der FK gehört in den Kopf (tbl_Bestellungen). Du kannst ja nicht bei mehreren
Lieferanten gleichzeitig sprich auf einer Bestellung Artikel bestellen.
Wie ich auch gesehen habe, gibt es da noch ein paar Beziehungen ohne RI (referentielle
Integrität). Musst du nacharbeiten.
Und dann noch ein Tipp, - ordne das Beziehungsfenster mal so, dass es keine (oder wenige)
Überschneidungen der Beziehungslinien gibt. Das hilft ungemein für den Durchblick.
Meist schau ich mir solche Art "moderne Kunst" gar nicht erst an.

gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Chris_HN

Mensch, ekkehard, danke für die schnelle Rückmeldung.

2 Fragen als Newbie:
  • Was ist mit dem FK gemeint und wie bringe ich den in den Kopf?
  • Woran sehe ich im Beziehungsfenster, ob die RI gegeben ist oder nicht - da hast Du völlig recht, die sollte gegeben sein....

Und wegen dem Beziehungsfenster gelobe ich Besserung - aufgrund der Vielzahl der Tabellen nicht ganz einfach...

Grüße aus dem Süden der Republik...
Chris
Das Gras wächst nicht schneller, wenn man daran zieht.
(Afrikanisches Sprichwort)

mdd

Hallo
Schaut es nur so aus oder ist die Verknüpfung zwischen tbl_kunden und tbl_Region auf dem falschen Feld?
Bei tbl_lieferanten würde ich das Feld lief_Land/Region sowie die Telefon (auch in tbl_Personal) die umbenennen, "/" und "(" und Umlaute gehören nicht in Feldbezeichnungen.
Gleiches gilt bei tbl_kunden, wobei mir nicht ganz klar ist warum du die Info (kun_Land/Region) noch direkt im Datensatz speicherst wenn du ne Tabelle dafür hast.
Für die Preise fehlt noch was. Artikelpreise stehen in Abhängigkeit zum Lieferanten genauso wie Rabatte und möglicherweise spezifische Bestellnummern.
Rabatte bzw. Preise auf Bestellpositionsebene fehlen mir noch irgendwie.

PS: FK steht für Foreign Key also den Fremdschlüssel. 

Chris_HN

Zitat von: mdd am Juli 13, 2023, 09:37:03Schaut es nur so aus oder ist die Verknüpfung zwischen tbl_kunden und tbl_Region auf dem falschen Feld?

Ja, war ein Fehler, hatte ich erst gemerkt, als ich die RI (dank dem Hinweis auf die fehlende RI von ekkehard) richten wollte.

Zitat von: mdd am Juli 13, 2023, 09:37:03Bei tbl_lieferanten würde ich das Feld lief_Land/Region sowie die Telefon (auch in tbl_Personal) die umbenennen, "/" und "(" und Umlaute gehören nicht in Feldbezeichnungen.

Auch hier hast Du recht - das Feld ist leer, wird also entfernt, da ich immer auf die entsprechende Tabelle verweise. Das Feld hatte ich wohl ganz am Anfang angelegt, bin aber später auf die separate Tabelle gegangeen.

Zitat von: mdd am Juli 13, 2023, 09:37:03Für die Preise fehlt noch was. Artikelpreise stehen in Abhängigkeit zum Lieferanten genauso wie Rabatte und möglicherweise spezifische Bestellnummern.
Rabatte bzw. Preise auf Bestellpositionsebene fehlen mir noch irgendwie.

Jep - da bin ich aktuell noch am Grübeln, wie ich das mit den Preisen und Rabatten umsetze... Aktuell ist geplant, die Preise erst bei der Bestellung händisch in ein Textfeld der einzelnen Bestellpositionen zu schreiben, da sich die Preise bei den Lieferanten (z.Bsp. wegen steigender Rohstoffpreise) häufig ändern und ich  (wenn man es perfekt machen möchte) dann irgendwie eine Historie abbilden müsste. Dafür fehlt mir als Anfänger noch das Wissen wie ich das am geschicktesten umsetze, deshalb starte ich mit der "einfachen" Variante und dem Eintrag der Preise für die Bestellpositionen (dann meistens aus dem Angebot).
Habe auch noch das Thema mit den unterschiedlichen MwST-Sätzen (19%/7%)...

Danke für die Hinweise.....
Das Gras wächst nicht schneller, wenn man daran zieht.
(Afrikanisches Sprichwort)

Beaker s.a.

Hallo Chris,

Für historische Preise brauchst du eine Preisliste (Tabelle) mit einem
Gültigkeitsdatum "Ab". Im Prinzip kannst du dazu auch die n:m zwischen
Artikeln und Lieferanten hernehmen und erweitern, denn da sind die beiden
nötigen FKs schon drin. Rabatte kannst du da auch per FK auf eine Rabatt-
tabelle abbilden.
Für die USt.-Sätze muss auch eine Tabelle her, ebenso mit "gueltig_ab".
Der Satz wird beim Artikel auch als FK geführt. Beim Lieferanten würde ich
in dem Zusammenhang auch noch ein Flag setzen ob überhaupt USt. berechnet
wird (Firmen im Ausland mit USTID oder aus Drittländern).

gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Chris_HN

#12
Zitat von: Beaker s.a. am Juli 10, 2023, 18:32:07Im Grossen und Ganzen nicht. Aber es fehlt eine Tabelle Bestellpositionen mit einem FK zu
Bestellungen. Und da kommen die Artikel hinein (1:n reicht hier, die tbl_Artikel_Bestellung
braucht es nicht).
tbl_Bestellungen 1:n tbl_BestellPositionen 1:n Artikel

Zuerst die positive Nachricht: Die Verknüpfung abe ich nach einigem Hin-und-Her hinbekommen, passt also...

Dazu hätte ich noch eine Frage...

Wenn ich in meinem Formular im UFo die einzelnen Artikel anziehe und auswähle, und dann (der Einfachheit halber, vorerst) die Preise dort händisch für jeden Artikel eintrage) wie bekomme ich in der Tabelle Bestellung dann am geschicktesten die Summe der Einzelartikel der zugewiesenen Bestellpositionen?
Ich würde gerne diese Summe als Bestellsumme errechnen lassen.

Grüße aus dem Süden der Republik.
Chris
Das Gras wächst nicht schneller, wenn man daran zieht.
(Afrikanisches Sprichwort)

Beaker s.a.

Verstehe ich nicht ganz.
Es gibt einen Positionsbetrag = Menge * Preis - Rabatt,
und einen Endbetrag der Bestellung = Summe der Positionsbeträge.
Den ersten Wert kannst du direkt im Formular berechnen, den zweiten
im Formfuss mit =Summe(Positionsbetrag).
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Chris_HN

#14
....Jep. hast Du recht. Hab ich gemacht. Passt auch. Die Logik fehlt mir manchesmal.
Ich stell das jetzt mal auf gelöst....
Meine anderen Fragen sind eher neue Threads....
Für Eure Mühe und die Antworten herzlichen Dank. Sowas steht in keinem Buch.....

Grüße aus dem Süden der Republik.
Chris
Das Gras wächst nicht schneller, wenn man daran zieht.
(Afrikanisches Sprichwort)