Neuigkeiten:

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

Mobiles Hauptmenü

Kombifeld: Auswahl + Textfeld in Tabelle speichern.

Begonnen von infinity331, November 11, 2011, 17:20:52

⏪ vorheriges - nächstes ⏩

infinity331

Hallo Zusammen,

ich hänge seit zwei Tagen an einem Punkt bei der Formularerstellung fest und hoffe ihr könnt mir weiterhelfen.

Es geht darum, dass in einem Formular Bestellungen durchgeklickt werden können. Soweit natürlich gar kein Problem. Jetzt soll allerdings über ein Kombinationsfeld, in welchem die Artikel und der Preis angezeigt werden. Anschließend soll noch eine Menge eingegeben werden. Der ausgewählte und der eingegebene Wert soll dann in der Positionstabelle mit der aktuellen Bestellnummer gespeichert werden.

Ich hoffe ihr könnt mir helfen und versteht was ich meine. Habe hier zur Übersicht mal die .accdb in einem Archiv angehangen.

Gruß


[Anhang gelöscht durch Administrator]

MzKlMu

Hallo,
ich habe nicht genau verstanden, was Du jetzt machen willst, zumal der Satz nicht vollständig ist.
ZitatJetzt soll allerdings über ein Kombinationsfeld, in welchem die Artikel und der Preis angezeigt werden.
Welche Felder willst Du übertragen?
Ansicht genügt die ID und der Preis.
Gruß Klaus

infinity331

Entschuldige. Ich meine natürlich, dass man die Möglichkeit hat folgendes auszuwählen / einzugeben: "Artikel" (Kombinationsfeld), "Menge" (Textfeld).
Anschließend sollen diese Werte in die Tabelle Position eingetragen werden. Also die ArtikelID des ausgewählten Artikels, die eingegebene Menge und die ID, der aktuell gewählten Bestellung. Wird sicherlich ein wenig klarer, wenn man sich das Formular ansieht. ;)

MzKlMu

Hallo,
ich kann leider die DB nicht öffnen, es kommt eine Fehlermeldung, dass ein Laufwerk nicht gefunden wird.

Konvertiere die DB nach Access2003, Access2007/10 haben noch nicht so viele.

Zum Problem:
Die Bestellungen solltest Du in einem Haupformular anzeigen und die Positopnen in einem Unterformular. Hafo und Ufo sind über die Schlüsselfelder (BestellungID) zu verknüpfen. Dann wird schon mal diese ID automatisch eingetragen. Der Artikel wird mit einem Kombi gewählt, dabei wird die ArtikelID in das Fremdschlüsselfeld für den Artikel in der Positionstabelle geschrieben.

Hafo und Ufo sind in diesem Fall die übliche Vorgehensweise.
Gruß Klaus

Beaker s.a.

Hallo,

@MzKlMu,
Anbei Datei als .mdb

ZitatHafo und Ufo sind in diesem Fall die übliche Vorgehensweise

Hat er.
Ich hab' da ein bisschen was versucht, aber irgendwie ist die Abfrage hinter dem UFo nicht aktualisierbar. IMO ist das Datenmodell nicht optimal; - man weiss aber ja nie, was der Fragende so vor hat. Ich habe das Textfeld für die ArtikelNr in ein Kombi umgewandelt; - das Feld lässt sich aber nicht ändern.
Vielleicht hast Du ja Lust, Dir das Mal anzuschauen.

@infinity
Das Textfeld A-ID kannst Du über das Kontextmenu in ein Kombi umwandeln. Datensatzherkunft:
SELECT A.[A-ID], A.Bezeichnung, A.Preis FROM Artikel AS A
Dem Kombi musst Du dann noch eine Ereignisprocedur AfterUpdate spendieren, in der Du die anderen Felder befüllst.

Was Grundsätzliches ist mir aufgefallen:
1. Vermeide Sonder-/Leerzeichen in Feldnamen; also AID oder wenn schon A_ID statt A-ID. Ist sicherer und spart Tipperei, da Du solche Feldnamen immer in [] klammern musst.
1. Benenne Steuerelemente NICHT genauso wie das gebundene Tabellenfeld. txtA_ID ist besser als A_ID. Das taucht sonst in der Controls-Auflistung des Forms zweimal auf, und Du weisst nicht ob es der Name des Controls oder des Tabellenfeldes ist; und Access bzw. VBA auch nicht, was dann u.U. zu "unverständlichen" Fehlermeldungen führen kann. die automatische Bennennung ist leider eine unangenehme "Hilfe" vom Assistenten.

hth
gruss ekkehard

[Anhang gelöscht durch Administrator]
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)

MzKlMu

#5
Hallo,
ich habe das mal angepasst.

- Feldnamen geändert

- Fremdschlüsselfeöder mit _F versehen
In einer Datenbank sollte es keine gleichen Feldnamen geben, um Verwechslungen zu vermeiden.

- In der Tabelle Positionen gibt es einen zusammengesetzten Primärschlüssel. Würde ich nicht machen, lieber einen Autowert als PK.
Entspricht aber nicht der Lehrmeinung, habe es daher nicht geändert.

ZitatDem Kombi musst Du dann noch eine Ereignisprocedur AfterUpdate spendieren, in der Du die anderen Felder befüllst.
Das ist nicht notwendig, die anzuzeigenden Felder werden über Abfragen eingebunden.
Das kann Access serienmäßig, ohne VBA. Das Kombi wird an den Fremdschlüssel (AID_F) gebunden und über die Spaltenbreiten gesteuert was zu sehen ist. Zugeklappt und Aufgeklappt.

ZitatBenenne Steuerelemente NICHT genauso wie das gebundene Tabellenfeld. txtA_ID ist besser als A_ID.
Das halte ich im Normalfall für problemlos. Ich benenne erst um wenn es notwendig ist.

Zitatdie automatische Bennennung ist leider eine unangenehme "Hilfe" vom Assistenten.
So können die Meinungen auseinander gehen. Ich persönlich finde das gut.

Kleine Anmerkung:
Es wäre hier besser, auch den Preis mit in die Positionstabelle aufzunehmen und redundant zu speichern (dann ist VBA erforderlich). Nachträgliche Preisanpassungen haben dann keine Auswirkung auf die alten Datensätze. Habe ich aber nicht geändert, da das hier eine Übung scheint.


DB anbei (Version 2003)



[Anhang gelöscht durch Administrator]
Gruß Klaus

infinity331

Vielen, vielen Dank schonmal für die vielen Tipps.

Es ist wie gesagt eine Übung, aber nur um privat ein wenig rumzuprobieren.
Ich habe mir mal die Lösung von MzKlMu und finde die Idee, es über das Unterformular zu lösen ansich gut. Allerdings ist die Auswahl über die Eingabe der K-ID in meinen Augen nicht sinnvoll. Szenario: Man kann schließlich nicht verlangen, dass man alle Artikelnummern auswendig kennt.

Wie gesagt Hauptziel ist es:
- Neue Bestellung anlegen
- Artikel mit Menge zu einer Bestellung hinzufügen
- Anzeige: Bestellungsinformation, Artikel der Bestellung (Einzelpreis, Menge, Gesamtpreis)

DF6GL

Hallo,

"Allerdings ist die Auswahl über die Eingabe der K-ID in meinen Augen nicht sinnvoll. "


Naja, das liegt doch an Dir.... 

Dein Tabellenaufbau ist noch unvollständig. Es fehlt (mindestens) die Lieferantentabelle, und jede Menge Felder in den "Bestell"-Tabellen.  Einen "Kunden(namen)" in das Feld "Kommentar" schreiben zu wollen, ist auch nicht so das Gelbe vom Ei...


Insofern mach nochmal eine umfassende Analyse der Daten , welche Du nun hast, brauchst und wie die miteinander zusammenhängen.



"es über das Unterformular zu lösen ansich gut. "

das ist (standardmäßig) die beste Lösung.


Tipp: Installiere die Nordwind.mdb (von Office-CD) und studiere die ein bisschen...

Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

MzKlMu

Hallo,
die KID eingeben zu müssen, macht natürlich an der Stelle keinen Sinn. Da habe ich etwas geändert und dann nicht mehr probiert, sorry für die Verwirrung.

Geänderte DB anbei.

Die Bemerkungen von Franz wären natürlich auch zu beachten.


[Anhang gelöscht durch Administrator]
Gruß Klaus