Neuigkeiten:

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

Mobiles Hauptmenü

msaccess - feldwerte aus Dritt-Tabelle zuweisen

Begonnen von ede, Februar 10, 2012, 15:55:10

⏪ vorheriges - nächstes ⏩

ede

Hallo,

ich hab da ein Anfängerproblem:

Drei Tabellen

- Kunde (k-id)
  alle relevanten Kundendaten, hier ist nur die [k-id] wichtig

- Artikel (a-id,a-preis)
  alle relevanten Artikeldaten, hier ist [a-preis] wichtig. Preise sind zeitabhängig und müssen deshalb in der Tabelle Bestellung abgelegt werden.

- Bestellung (b-id,b-datum,k-id,a-id, b-preis)
  Kunde bestellt Artikel zum Preis von [a-preis]. Dieser Wert muss nun an [b-preis] übergeben werden.


Wie mache ich das?

(Kenne mich mit dem Thema eigentlich ganz gut aus, habe aber das letzte Mal 1997 mit Access gearbeitet - alles vergessen :( )

Jonny

Hallo,

wie wird denn Erfasst? Über ein Formular vieleicht?
Wenn ja wie sieht das aus?

Das musst du uns schon sagen damit wir helfen können.

Gruß

Johann

ede

- Erfasst wird über ein Formular (Kunde - Subformular-Bestellung)
- Im Subformular wird der Artikel ausgewählt
- Nun soll [b-preis] mit [a-preis] gefüllt werden

In der Tabelle [artikel] sind immer nur die aktuellen Preis hinterlegt. Natürlich wird über die Preise eine Historie geführt (Das ist hier aber nicht relevant). Würden sich die Preise nicht regelmäßig ändern, hätt ich das Problem nicht ;)

Vielen Dank für die Hilfe!

DF6GL

#3
Hallo,

zur Auffrischung:


Sonder- und Leerzeichen in Objektnamen DRINGEND VERMEIDEN!!!!

Die Erfassung der Bestellungen sollte, wie Jonny angemerkt hat, über ein Formualr geschehen. In diesem Formular wird das an das Feld "a-id" in Tabelle "Bestellung" gebundene Steuerelement als Kombifeld ausgeführt, das seine Listendaten aus Tabelle "Artikel" bezieht:

Select [a-id], [a_Benennung], [a-preis] from Artikel order by [a_benennung]

mit dem Ereignis des Kombis "Nach Aktualisierung" wird der Preis des ausgewählten Artikel übergeben:

Sub a_id_Afterupdate()
Me![b-preis] = Me![a-id].column(2)
End Sub


Nochmal: Auf Sonderzeichen verzichten!!

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

Jonny

Hallo,
eine Möglichkeit wäre es mit DomWert zu machen:
=DomWert("Rufname";"Grunddaten";"MitgliedNr = " & [MitgliedNr])
Rufname = Feld a-preis
Grunddaten = Deine Artikeltabelle
MitgliedNr = Dein Feld Artikel-Nummer in Artikeltabelle
[MitgliedNr] = Dein Feld Artikel-Nummer im Formular.

PS Feldname mit - bitte vermeiden.

Gruß

Johann

ede

Hut ab, und "Gott" sei Dank ;)

Und latürnisch Jonny auch... Hat prima funktioniert - sehr verbunden!

noch 'ne Frage:

Was meinereiner am liebsten machen würde, das wäre ein Forumular zu bauen, in dem alle Werte an ein Array übergeben werden. Dort kann ich dann mit den Eingaben machen, was ich will, und anschließend die Werte genau dort hinschreiben, wo ich sie hin haben will.

Geht das?

Gibt es irgendwo ein Auffrischerbuch Access? Habe 97 eine komplette Schulverwaltung (Lehrer, Kurse, Zimmer, Schüler, Preise) in Access realisiert - einfach zu lange her...

ps die [a-feld] Notation hab ich natürlich nicht in den Feldnamen verwendet, aber trotzdem guter Hinweis, weil ich die Access-Notation nicht wirklich kenne...

Vielen Dank nochmal!!!

Jonny

Hallo,
geht schon aber macht keinen Sinn.
Sind die Tabellen klar, richtig normalisiert werden da doch die Daten aufbewahrt und da gehören Sie auch hin.
Wenn du logische Prüfungen machen willst kannst du das im Ereignis "Vor Aktuallisierung" machen. Im Fehlerfall
positionierst du dann auf das Fehlerhaft Feld und verlangst eine Neueingabe. Im schlimmsten Fall verwirfst du die
komplett Eingabe mit undo.

Gruß

Johann

DF6GL

Hall0,

"das wäre ein Forumular zu bauen, in dem alle Werte an ein Array übergeben werden. Dort kann ich dann mit den Eingaben machen, was ich will, und anschließend die Werte genau dort hinschreiben, wo ich sie hin haben will."


das ist doch doppelt-gemoppelt...  die Steuerelemente hast Du doch schon und die sind (fast) einem Array ähnlich....

einen wirklichen Sinn ergibt das nicht, außer man will grundsätzlich mit ungebunden Formularen arbeiten, was wiederum im Access-Umfeld nur das Neuerfinden von Access-Funktionalitäten bedeutet. (Außenahmen bestätigen aber diese "Regel")


"Auffrischerbuch Access":  siehe u. st. Links


die "die [a-feld] Notation "  (Eckklammern um die Namen)   ist erforderlich, wenn Sonder-Oder Leerzeichen in Namen verwendet werden. Sonst subtrahiert Access den Wert aus der Variablen "feld" von der Variablen "a"  ................ :o

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

ede

"Auffrischerbuch Access":  siehe u. st. Links"

Und welches davon? Design und Normalisierung sind kein Thema, es geht nur um die Handhabung von Access.

Formular via Array:

Das ist in jedem Fall übersichtlicher. Und das führt nun zu der Frage: wie kann ich mir denn für alle Ereignisse etc. eines Formulares einen Überblick verschaffen, ohne dass ich da jedes einzelne Feld anklicken muss und anklicken muss und anklicken muss...

Ich bedanke mich nochmal ganz ausdrücklich für Eure schnelle und zielgenaue Hilfe! ++gut!

LG Ede

DF6GL

Hallo,



1) dbwiki, donkarl  , ansonsten gibt es beim Gockel unter "Access Tutorials" massenhaft Seiten....


2) "übersichtlicher" :  bezweifle ich  ;)  Das ist so, als wenn Du ein Auto hast und willst selber eigene Räder zusätzlich anbauen.

3)  jedes Objekt hat Ereignisse, nicht nur das Formular. Viele sind überall zu nutzen, manche sind individuell je nach St.-El.-Typ.  Zu finden im jeweiligen Eigenschaftenfenster unter Reiter "Ereignisse".

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

ede

#10
Genau, "Eigenschaftsfenster" klick - klick - klick ....

Gibt's da irgendwas wie'ne tabellarische Übersicht, so wie ich sie quasi in einer Routine finden würde? Ist natürlich schon ein klein wenig schizo, weil ich Access ja gewählt habe, damit ich nicht so viel selber schreiben muss, aber der Überblick...

lg.ede

ps und danke für die Dokus - sieht sehr gut aus!

Beaker s.a.

Hallo ede,
ZitatGibt's da irgendwas wie'ne tabellarische Übersicht, so wie ich sie quasi in einer Routine finden würde?
In der VBA Umgebung gibt es den Obkektkatalog (F2 in A2010), der dir alle Objekte mit ihren Eigenschaften und Methoden (inkl. Parameter) auflistet.
hth
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)

delta

Danke, Ekkehard :)

Nochmal vielen Dank an alle - habe gestern noch richtig was weg geschafft!