Juni 27, 2022, 12:57:48

Neuigkeiten:

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


Kombifeld im Formular zur Parameterangabe in Abfrage mit Ausgabe ins Formular

Begonnen von Janky, April 01, 2022, 17:13:14

⏪ vorheriges - nächstes ⏩

Janky

Grüße, ich sitze seit ein paar Tagen an meiner Aufgabe für eine Hausarbeit. Hatte zuvor leider noch nie etwas mit Access zu tun und verzweifle an so manchen stellen. zu einigen Problemen bin ich hier schon fündig geworden, leider nicht zu meinem Aktuellen.
Worum geht es insgesamt: Ich soll eine Datenbank bauen für eine Firma die 3D-Druckteile fertigt und andere Artikel verkauft. Die Teile sollen vom Anwender per Dropdownmenü zusammengestellt werden. Es soll automatisch eine Artikelnummer erzeugt und über Kalkulationsfaktoren ein Preis errechnet werden.

Bisher habe ich 4 Tabellen: Form, Farbe, Größe, Bearbeitung. Jede Tabelle Hat die unterscheidlichen Eigenschaften wie z.B. bei Farbe Blau, Weiß usw., einen Code, und einen Kalk.Faktor. Über den Code wird die Artikelnummer erstellt.
Damit ich nicht alle 720 aktuellen Kombinationsmöglichkeiten einzeln erstellen muss hab ich das über eine Abfrage gelöst in der auch gleich die Artikelnummer erstellt wird. Zudem habe ich für die einzelnen Sachen Parameterabfragen erstellt welche per Dropdownmenü im Formular gesetzt werden. Somit wird mir in der Abfrage bereits immer ausschließlich der im Formular angezeigte Artikel gelistet.
Nun möchte ich dass die Artikelnummer welche in der Abfrage steht ins Formular in ein Textfeld übernommen wird. Leider erscheint in dem Feld aber nur #Name?
Irgendwo hatte ich dann gelesen dass das Problem sei, dass das Formular leer sei beim Start. Leider haben aber auch Standartwerte für Form usw. im Menü nichts gebracht. Wie bekomme ich meine Artikelnummer in mein Formular?

Wäre echt super wenn jemand dafür eine Lösung hat.
Hier hab ich noch Bilder von dem was ich bisher erstellt hab:
https://abload.de/image.php?img=1pakvk.png
https://abload.de/image.php?img=2ghknj.png
https://abload.de/image.php?img=350jep.png
https://abload.de/image.php?img=4g2jfo.png

DF6GL

Hallo,,
schreibe einfach in das Artikelnummer-Feld  Artikelnummer hinein (den Alias-Namen des berechneten Feldes aus der Abfrage, sofern die Abfrage Datensatzherkunft des Forms ist.


Für meine Begriffe fehlt aber ein Tabelle "tblArtikel" in der die Artikelnummern mit ihren Kombinationen  gespeichert werden. Der bisherige Zustand kann m. E. nur ein anfänglicher Initial-Vorgang sein, um alle möglichen Artikel(nummern) zu generieren.

Oder soll eine Artikelnummer jedes Mal auf's Neue per Zusammenstellung erzeugt werden?


Janky

Hallo, vielen Dank für die schnelle Antwort. Die Artikelnummer muss nicht jedes mal neu erzeugt werden. Habe jetzt die bisherige Abfrage abgeändert, so dass sie nun alles in eine Tabelle speichert. Habe dann eine neue Abfrage erstellt welche daraus nach Auswahl der Varianten im Formular die passende Artikelnummer findet. Leider funktioniert nun auch wieder die Ausgabe ins Formular nicht. für die Zuweisung hab ich im Formular im Textfeld nun =[ArtNrPreis]![Artikelnummer] stehen. ArtNrPreis ist der Name der Abfrage und Artikelnummer heißt die Spalte in der die Nummer steht. Ausgegeben wird wieder #Name?

DF6GL

Hallo,

Du sollst nur "Artikelnummer" in den Steuerelementinhalt schreiben  oder aus der Feldliste auswählen.


Eigentlich macht man das Ganze ganz anders, falls alle möglichen Kombinationen zu je einer Artikelnummer führen sollen:

Eine Anfügeabfrage ( an tblArtikel) die einmalig auf einen Rutsch sämliche Kombinationen zusammenführt und die Artikelnummer berechnet.


Dazu ein Formular, mit dem die generierten Artikel gepflegt werden können.  (Löschen, Ändern, Weiterverarbeiten) 


Kommt eine neue Kombination hinzu, läßt man die Anfügeabfrage nochmal ausführen.  Dabei ist ein richtiger Tabelleaufbau (Indizierung) (und auch ein prüfendes SQL-Statement) erforderlich .

Janky

auch mit "Artikelnummer" im Steuerelementinhalt bleibt der Fehler bestehen.
=[ArtNrPreis]![Artikelnummer] wurde mir beim Steuerelementinhalt mit dem Ausdrucks-Generator erstellt


Janky

vielen Dank, ich hoffe mal dass das so funktioniert

Moderatorenanmerkung: Datei hier im Forum angehängt. MzKlMu

DF6GL

Hallo,

lade Dateien hier im Forum hoch, nicht über einen Upload-Service...


Als erste Hausaufgabe:

--  Benenne Tabellen, Abfragen, Formulare mit einem sinnvollen Prefix:  Tabellen: tblXXXXX, Abfragen: qryXXXXX, Formulare: frmXXXXX  usw.

-- Vermeide Sonder- und Leerzeichen (überall!) in eigenerstellen Objektnamen.

-- Erweitere alle Tabellen mit einem sinnvoll benannten Autowertfeld als Primärschlüsselfeld:

Z. B. für Tabelle "Farben" (---> "tblFarben")  mit Feld "FarbID" als Autowert und Primärschlüssel.

Bei "Kunden" (--> "tblKunden")  benenne "ID" in "KundID" um. Dito bei "Verkäufe" ("ID" --> "VerkaufID")


-- Benenne "Drucktitel" in "tblArtikel" um (denn um solche handelt es sich hier). Füge Feld "ArtikelID" (Autowert) und ändere den PK auf dieses Feld

--  Legen einen eindeutigen Index  ("ohne Duplikate") auf Feld "Artikelnummer"
   
--  Entferne alle Felder (in "tblArtikel") bis auf ArtikelID, Artikelnummer,Grundpreis, Verkaufspreis

--  Füge für jede Tabelle bezgl. der entfernten Felder (4 Tabellen) einen Verweis (Fremdschlüsselfeld) auf die entspr. Tabelle ein (z. B . für "Form":  "FormID_f",,  für "Größen": "GrößenID_f").  Beachte den Zusatz "_f"  als Kennzeichnung eines Fremdschlüsselfeldes und den erforderlichen Datentyp ZAHL,LONG.

--  Setze 1:n-Beziehungen (im Beziehungsfenster) zwischen tblArtikel und allen damit verbundenen  Tabellen  (siehe Fremdschlüssel)


--  Wirf die Abfragen und die Formulare aus der DB...



Wenn das erledigt ist, lade die DB wieder hier(!) hoch.

Janky

ok, vielen Dank, ich lege gleich los. Ursprünglich wollte ich die DB auch direkt hier hochladen, leider kann ich den Button dafür nicht finden. Bei allen Feldern zum Sachen hinzufügen wird nach einer URL gefragt. Kann es sein dass mein Status im Forum das direkte Hochladen von Daten nicht erlaubt?

MzKlMu

Hallo,
Zitat von: undefinedmein Status im Forum das direkte Hochladen von Daten nicht erlaubt?
Nein, Du kannst hier auch Dateien hochladen.
Wenn Du den "Antworten" Button drückst, findest Du unten einen Button "Attachments and other options" dort kannst Du über "Add File" Dateien hochladen.

Im Beitrag #6 habe ich die Datei hier hoch geladen.
Gruß
Klaus

Janky

Dankeschön, habe bisher wohl die Schnellantwort genutzt. Ich hoffe sehr ich hab jetzt alles so umgesetzt wie es angedacht war

Sie dürfen in diesem Board keine Dateianhänge sehen.

MzKlMu

Hallo,
bei einer Beziehung muss noch RI eingestellt werden.

Kann ein Kunde bei einem Verkauf immer nur ein Artikel kaufen ?
Gruß
Klaus

DF6GL

Hallo,

Zitat von: undefinedalles so umgesetzt

nicht ganz.. Sonderzeichen waren vorhanden, Benamsungen nicht eindeutig über alle Tabellen gesehen ("Code" ,etc.),
Ref. Integrität bei Verkäufe-Artikel wegen fehlerhaften Daten nicht etabliert.


Als Lösung für die anfängiche Frage gibt es eine Abfrage qry_Erzeuge Artikel, die die tblArtikel mit der berechneten Artikelnummer und den dazugehörenden Fremdschlüsselwerten füllt.


Diese Abfrage habe ich aber etwas "reduziert", nachdem die tblArtikel gefüllt wurde.  Sie enthält nur die Berechnung der Artikelnummer, damit Du ( weil "Hausaufgabe") die restlichen Spalten selber einbaust.


Grundsätzlich ist aber eine solche "Berechnung" einer Artikelnummer und deren Speicherung in einer Tabelle eher nicht zu empfehlen.  Die Artkelnummer kann jederzeit und überall aus den Grunddaten ("Code") dort zusammengesetzt werden, wo man sie braucht.


Und noch eine Optimierung:

Die 4 Grundtabellen könnten zu einer einziger Tabelle zusammengefasst werden, mit einem zusätzlichen Feld ("ArtikelEigenschaft"),  das die "Art" der Daten kennzeichnet und unterscheidbar macht.


Weiterhin solltest Du überlegen, welche Felder in "tblVerkäufe" noch zusätzlich erforderlich sind (z. B. "Verkaufsdatum", "Menge", etc.) .

Das Feld "Verkaufspreis" ist überflüssig und kann entfallen. Allenfalls ist das Feld in tblVerkäufe denkbar (redundand aus Performancegründen).






Erstelle dann Formulare mit Datenherkunft zur jeweiligen Tabelle):

frmArtikel  als Einzelform

Alle anderen Forms als Endlosform.

Die Fremdschlüsselfelder in frmArtikel werden als (Nachschlage-)Kombis ausgeführt.

Dito KundenID_f in tblVerkäufe


frmVerkäufe wird als UFO-Steuerelement in tblArtikel eingebaut mit "Verknüpfen von/nach" über die adequaten Schlüsselfelder.

Maxel

Nebenbei eine kleine Anmerkung:

Ich verstehe nicht, warum man eine Tabelle tblVerkäufe nennen muss - abgesehen vom Sonderzeichen ä.

Eine Tabelle beinhaltet doch in der Regel mehrere Datensätze einer Entität - warum sollte man also die Mehrzahl verwenden, wenn doch die Einzahl tblVerkauf kürzer und im weiteren Handling angenehmer anzuwenden ist?
Viele Grüße
Maxel

Janky

Irgendwie stehe ich gerade voll aufm Schlauch... Zuerst wollte ich mich um die Optimierung kümmern. Jedoch verstehe ich nicht wie ich das genau umsetzten soll. Bisher hat ja jede Eigenschaft eine Autowert ID. Dadurch hab ich zu jeder Farbe einen eindeutig zugewiesenen Farbcode und einen Klak.faktor. Wenn ich die zusammen in eine Tabelle packe haben ja alle Eigenschaften gemeinsam eine Autowert ID. Du meintest mit einem weiteren Feld "Art" könnte ich das unterscheiden. Bei der Überlegung komme ich aber nicht ganz mit.
So wie es jetzt ist verstehe ich die Logik dahinter noch ganz gut glaube ich und es erscheint mir recht leicht per Formular später neue Farben, Formen usw. hinzuzufügen. Was wäre der Vorteil von allem in einer Tabelle und wie soll das mit der Unterscheidung dann funktionieren?