Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: datekk am März 27, 2011, 11:01:29

Titel: Zellen mit anderen abgleichen
Beitrag von: datekk am März 27, 2011, 11:01:29
Hi. Ersteinmal ein Hallo an alle hier. Dies ist mein erster Beitrag denn ich beschäftige mich gerade mit Access und möchte es lernen. Ich benötige nun Hilfe bei meinem Projekt. Ich weiß nicht genau, ob die Beschreibung oben zutreffend ist, weil ich einfach nicht weiß wie das heißt, wonach ich suche. Ich versuch es mal zu erklären....

Ich bin ambitionierter Koch und möchte mir eine Rezeptdatenbank anlegen. Ich bin auch schon weit gekommen. Folgender Aufbau:

- Tabelle "Zutaten" enthält die Spalten "Zutat" und "vorhanden" als JA/Nein Feld

- Tabelle "Gericht" enthält die Spalten "Gerichtname", "Art", "region" usw.

- Tabelle "Zutatenverknüpfung" verknüpft nun das Gericht mit den entsprechenden Zutaten und enthält die Spalten "GerichtsID" und Bezieht die Daten aus Tabelle "Gericht"; "Zutat" - bezieht die Daten aus Tabelle "Zutaten" aus dem Feld "Zutat"; und dem Feld "vorhanden" - wofür ich jetzt Hilfe brauche, denn:

Ich möchte nun, dass wenn ich in "Zutatenverknüpfung" einen neuen Datensatz einfüge und die Zutat auswähle, er automatisch in der Tabelle "Zutaten" nachschaut, welchen Wert dort das Feld "vorhanden" für die jeweilige Zutat aufweist und diesen Wert in das Feld "vorhanden" der Tabelle "Zutatenverknüpfung" einfügt.

Ich hoffe, es kann jemand Helfen. Ich hab noch viele andere Fragen, doch erstmal der Reihe nach ;)
Titel: Re: Zellen mit anderen abgleichen
Beitrag von: MzKlMu am März 27, 2011, 11:08:59
Hallo,
was hat das Feld "vorhanden" für einen Zweck?
Dass die Zutat grundsätzlich vorhanden ist, im Vorrat sozusagen, oder dass die Zutat im Rezept vorhanden ist?

PS:
In Access gibt es keine Zellen, sondern entweder Spalten oder Felder.
Die Zeilen sind die Datensätze.
Titel: Re: Zellen mit anderen abgleichen
Beitrag von: datekk am März 27, 2011, 11:10:43
... dass die Zutat grundsätzlich vorhanden ist.
Titel: Re: Zellen mit anderen abgleichen
Beitrag von: MzKlMu am März 27, 2011, 11:18:59
Hallo,
das dieses Feld in der Zutatentabelle vorhanden ist, ist es überflüssig dieses noch mal in die Tabelle "Zutatenverknüpfung" aufzunehmen. Wenn Du für das Formular  in einer Abfrage die Tabelle "Zutat" zur Tabelle "Zutatenverknüpfung" mit der Beziehung mit aufnimmst, wird Dir das Feld automatisch mit angezeigt. Zusätzliche Speicherung ist somit überflüssig.
Es macht auch keinen Siun, dieses Feld noch mal zu speichern, denn wenn dann die Zutat mal nicht da ist, wirde das Feld in der Tabelle "Zutatenverknüpfung" immer noch als vorhanden geführt. Du müsstest das Feld also auch in der Tabelle "Zutatenverknüpfung" immer aktualisieren.

Bitte beschreibe mal den Aufbau der Tabellen genauer.
Über welche Felder laufen die Beziehungen?
Du sprichst von GerichtsID, das Feld hast Du aber beim Gericht nicht aufgeführt?
Titel: Re: Zellen mit anderen abgleichen
Beitrag von: datekk am März 27, 2011, 11:28:57
Das ist damit glaub ich nicht getan, bzw. erreiche ich dann nicht mein Ziel.

Ich kann mir die Tabelle "Zutatenverknüpfung" so anzeigen lassen, dass sie mir nur die Datensätze der Zutaten anzeigt, die Gericht X zugeordnet sind. Die Tabelle wird in einem Formular geöffnet und die Sondierung auf Datensätze nach Gericht X erfolgt durch die Zuordnung des Datensatzes des Gerichts.

Also ich hab ein Formular von der Tabelle "Gericht" erstellt. In diesem Formular ist unten die Tabelle "Zutatenverknüpfung" eingefügt, welche sich je nach Datensatz automatisch umstellt. In diese Tabelle kann ich gleichzeitig für neue Gerichte auch die Zutaten auswählen und nur noch die Menge ergänzen.

Das hab ich mit einer Abfrage noch nicht geschafft. Von daher wäre es mir lieber, wenn die Tabelle diese Daten für "vorhanden" einfach abfragt.
Titel: Re: Zellen mit anderen abgleichen
Beitrag von: MzKlMu am März 27, 2011, 11:40:11
Hallo,
ZitatVon daher wäre es mir lieber, wenn die Tabelle diese Daten für "vorhanden" einfach abfragt
.Lasse es sein, es wäre falsch.
Ich habe oben noch einen Satz ergänzt:
ZitatEs macht auch keinen Siun, dieses Feld noch mal zu speichern, denn wenn dann die Zutat mal nicht da ist, wirde das Feld in der Tabelle "Zutatenverknüpfung" immer noch als vorhanden geführt. Du müsstest das Feld also auch in der Tabelle "Zutatenverknüpfung" immer aktualisieren.

Wieso hast Du "Zutatenverknüpfung" als Tabelle eingefügt, das solltest Du als Unterformular machen und die Tabelle (bzw. die vorgeschlagene Abfrage) als Datenherkunft verwenden.
Und noch eine Frage: Hast Du die Auswahlfelder (Kombis) direkt in der Tabelle angelegt?
Wenn ja schleunigst wieder entfernen. Diese sollte nur in Formularen verwendet werden.

Und meiner Bitte bist Du auch nicht nachgekommen:
ZitatBitte beschreibe mal den Aufbau der Tabellen genauer.
Über welche Felder laufen die Beziehungen?
Du sprichst von GerichtsID, das Feld hast Du aber beim Gericht nicht aufgeführt?

ZitatDas hab ich mit einer Abfrage noch nicht geschafft.
Beschäftige Dich mit Abfragen, ein Formular sollte nie auf einer Tabelle beruhen, sondern immer auf Abfragen.
Titel: Re: Zellen mit anderen abgleichen
Beitrag von: datekk am März 27, 2011, 12:45:09
Sorry, mein kleiner Sohnemann krabbelt hier rum und ich muss aufpassen, daher bin ich nicht ganz aufmerksam gewesen  :o

Also die Auswahlfelder habe ich über den Nachschlageassistent direkt in die Tabelle eingefügt, ja. Ich nutze Access 2010 und auf Trainingsvideos wurde das als großer Vorteil herausgestellt... Daher hab ich das auch so gemacht.

Zutatenverknüpfung habe ich als Tabelle eingefügt, da die Tabellenansicht genau das ist, was mir gefällt und weil er mir beim einfügen der Tabelle die Tabelle nach dem Datensatz sortiert, der gerade angezeigt wird. Wird also ID 1 von "Gericht" im Formular angezeigt, zeigt die Tabelle "Zutatenverknüpfung" nur die Datensätze in denen die "GerichtsID" = der ID des Datensatzes aus "Gericht" ist. Da ich das genau so haben wollte hab ich das als Lösung gesehen. Ich hab das vorher mit Abfragen versucht, bin aber daran verzweifelt...

Hier der Aufbau der Tabellen

GERICHT
ID Autowert
Hauptname Text
Nebenname Text
Region Kombifeld aus [Art]![Art]
Art Kombifeld aus [Region]![Region]
Anmerkungen Memo

ART
ID Autowert
Art Text

Region
ID Autowert
Region Text

Zutaten
Zutat Text
vorhanden Ja/Nein

Zutatenverknüpfung
ID Autowert
GerichtsID Kombifeld von [Gericht]![ID]
Zutat Kombifeld von [Zutaten]![Zutat]
Menge Text


Weiter habe ich das Formular Menü
Es beinhaltet alle Felder aus Gericht und die Tabelle Zutatenverknüpfung, welche nur die Datensätze anzeigt, bei denen "GerichtsID" mit [Gericht]![ID] identisch sind.

Titel: Re: Zellen mit anderen abgleichen
Beitrag von: datekk am März 27, 2011, 13:08:38
Ich wollte noch die Beziehungen angeben:

Derzeit habe ich eine Beziehung:

[Gericht]![ID] und [Zutatenverknüpfung]![GerichtsID] vom Typ 1
Titel: Re: Zellen mit anderen abgleichen
Beitrag von: database am März 27, 2011, 13:15:01
Hallo,

die Nachschlagefelder hat MzKlMu bereits angesprochen - die müssen weg!

Dann sollten diese Tabelle geändert werden:

Zutaten
ZutatID Autowert
Zutat Text
vorhanden Ja/Nein

Zutatenverknüpfung
GerichtZutaten
GerichtZutatenID Autowert
GerichtID_F     Kombifeld von [Gericht]![ID]     Zahl, Long Integer (1:n Beziehung zu Gericht)
ZutatID_F     Kombifeld von [Zutaten]![Zutat]     Zahl, Long Integer (1:n Beziehung zu Zutaten)
Menge Text


Weiter empfehle ich dir die ID-Felder der einzelnen Tabellen deutlich zu kennzeichnen:

statt ID in der Tabelle Gericht demnach GerichtID, in Art demnach ArtID, ....
Die zugehörigen Fremdschlüssel ... z.B. in Gericht  RegionID_F und ArtID_F (F steht für Foreigen Key, Fremdschlüssel)

Keine Umlaute, Leerzeichen, Sonderzeichen und/oder reservierte Worte für Tabellennnamen und/oder Feldnamen verwenden!

Wenn die angesprochenen Änderungen erfolgt sind, kann man dran gehen die Abfrage(n) zu erstellen.
Titel: Re: Zellen mit anderen abgleichen
Beitrag von: datekk am März 27, 2011, 16:56:16
Soooo, Änderungen habe ich vollzogen. Nur weiß ich noch nicht so ganz zu welchen Feldern ich die Beziehungen machen soll. Du schreibst:

GerichtID_F     Kombifeld von [Gericht]![ID]     Zahl, Long Integer (1:n Beziehung zu Gericht)
ZutatID_F     Kombifeld von [Zutaten]![Zutat]     Zahl, Long Integer (1:n Beziehung zu Zutaten)

Meinst Du dann jeweils die beziehung auf das jeweilige ID Feld? Ich denke schon, oder?

Wie gehts dann weiter?
Titel: Re: Zellen mit anderen abgleichen
Beitrag von: DF6GL am März 27, 2011, 17:29:21
Hallo,

nein, das hat er nicht geschrieben....   Nix mit Kombifeld...




Im Beziehungsfenster:

tblZutaten             tblGerichtZutaten                     tblGericht

                                 GerichtID_F        ---n:1---     GerichtID
ZutatID  ---1:n ---     ZutatID_F




Zutatenverknüpfung
GerichtZutaten
GerichtZutatenID Autowert
GerichtID_F     Kombifeld von [Gericht]![ID]     Zahl, Long Integer (1:n Beziehung zu Gericht)
ZutatID_F     Kombifeld von [Zutaten]![Zutat]     Zahl, Long Integer (1:n Beziehung zu Zutaten)
Menge Text

Titel: Re: Zellen mit anderen abgleichen
Beitrag von: datekk am März 27, 2011, 17:54:55
jo, ist so erledigt. beim reinkopieren ist nur das durchgestrichene nicht erschienen.... was ist nun zu tun?

ich bin echt gespannt und danke euch schonmal für die tolle hilfe... klasse :)
Titel: Re: Zellen mit anderen abgleichen
Beitrag von: DF6GL am März 27, 2011, 18:01:43
Hallo,

jetzt erstellst Du für jede Tabelle ein Formular mit allen Felden aus der jeweiligen Tabelle.  Die Forms für tblGericht und tblZutaten sind Einzel-Forms, das für tblGerichtzutaten ist ein Endlosform.    Im Form "frmGericht"  setzt DU ein UFO-Steuerelement ein, das als Herkunftsobjekt das Form frmGerichtzutaten erhält und über die Schlüsselfelder verknüpft.  Die Auswahl einer Zutat in diesem UFO erfolgt dann per Kombifeld, das seine Listenfeld-Daten aus Tabelle tblZutaten bezieht.


Titel: Re: Zellen mit anderen abgleichen
Beitrag von: datekk am März 27, 2011, 18:43:36
ok - ist erledigt. die formulare für tblgericht sieht jetzt so aus, dass im oberen teil die felder sind und im unteren ist die tabelle "gerichtzutaten" mit den feldern gerichtszutatenid, zutatid_f und menge zu sehen.

im formular tblzutaten sind auch oben die felder und unten die tabelle "gerichtszutaten" mit den feldern gerichtszutaten_id, gerichtid_f und menge zu sehen.

ich hoffe, dass ist alles richtig so.

nur, was ist ein endlosform? ich habe nur zur auswahl: formular, leeres formular, weitere formulare: mehrere elemente, datenblatt, geteiltes formular, modales dialogfeld.....

ich habe "mehrere Elemente" gewählt... vieleicht war das ja richtig so.

ich hänge jetzt daran, wie die auswahl der zutat per komifeld erfolgen soll.... wie und wo füge ich dieses ein?
Titel: Re: Zellen mit anderen abgleichen
Beitrag von: DF6GL am März 27, 2011, 19:07:32
Hallo,

"mehrere Elemente" ist bei A2007 gleich einem  Endlosform...


Du kannst das Textfeld, das die ZutatID anzeigt mit Rechtsklick und "Ändern zu" zu einem Kombifeld umändern.



Eigentlich sind solche Sachen aber Bestandteil der Access-Grundlagen, die man insgesamt voraussetzen müßte , bzw. zunächst sich aneignen sollte..

Titel: Re: Zellen mit anderen abgleichen
Beitrag von: datekk am März 27, 2011, 19:36:32
hi... sorry, wenn ich das nicht alles weiß. ich habe mir ein video gekauft und mir das 2 stunden reingezogen mit nachmachen und so... die sind dort wirklich nur an der oberfläche geblieben, ich hätte es mir auch etwas tiefgründiger gewünscht. ich wollte schon immer ein bisschen in access eintauchen und so nehme ich dieses projekt, um davon zu lernen. ich finde, für jemanden, der bisher damit gar nicht gearbeitet hat, bin ich wirklich gut und weit gekommen, auch wenn euer weg hier sich ganz anders aufbaut.... learning by doing.

also, die formulare stehen und die ersten eingaben funktionieren auch. nur wird mir die zutat nur als zahl und nicht als text angezeigt. das kann man doch sicher auch irgendwie ändern und wir komm ich nun dazu, dass mir die verfügbarkeit angezeigt wird?

also echt, vielen dank für die hilfe... das ist super nett.
Titel: Re: Zellen mit anderen abgleichen
Beitrag von: MzKlMu am März 27, 2011, 19:40:51
Hallo,
ZitatAlso die Auswahlfelder habe ich über den Nachschlageassistent direkt in die Tabelle eingefügt, ja. Ich nutze Access 2010 und auf Trainingsvideos wurde das als großer Vorteil herausgestellt...
Schmeiß das Trainingsvideo weg ;D. Die Nachschlagefelder in Tabellen sind ein ganz großer Anfängerfehler. Siehe hierzu:

http://dbwiki.net/wiki/Access_Anf%C3%A4nger:_Die_Nachteile_von_Nachschlagefeldern (http://dbwiki.net/wiki/Access_Anf%C3%A4nger:_Die_Nachteile_von_Nachschlagefeldern)

Ich habe Dir mal ein Beispiel gemacht, wie es meiner Meinung nach aufgebaut werden sollte.
Schaue Dir die Beziehungen an. Im Formular (Erfassung) kannst Du im Unterformular die Zutaten zu einem Gericht wählen. Ich habe da irgendwas sinnloses erfunden als Gericht.

Ansonsten schließe ich mich dem Hinweis von Franz an, lerne die Grundlagen. Nutze dazu mein Beispiel. Bei Fragen melden.

[Anhang gelöscht durch Administrator]
Titel: Re: Zellen mit anderen abgleichen
Beitrag von: datekk am März 27, 2011, 20:04:11
Hey, danke für die Datei. Bei Dir funzt das alles super.. Ich habe noch ein kleines Problem:

Ich kann jetzt aus der Liste die Zutaten im Textformat auswählen, erhalte aber nach der Auswahl folgende Fehlermeldung: "Sie haben einen Wert eingegeben, der für dieses Feld ungültig ist. Sie haben möglicherweise Text in ein numerisches Feld eingegeben, oder Sie haben eine Zahl eingegeben, die größer ist, als die Feldgröße-Einstellung zulässt."

Woran kann das denn liegen?
Titel: Re: Zellen mit anderen abgleichen
Beitrag von: MzKlMu am März 27, 2011, 20:18:49
Hallo,
also bei mir funktioniert es.
Bitte vergleiche mal die Reihenfolge der Spalten und die Dateneigenschaften des Kombis.
Gebunden Spalte, Spaltenbreiten etc.

Oder lade Deine DB hier hoch.
Titel: Re: Zellen mit anderen abgleichen
Beitrag von: datekk am März 27, 2011, 21:43:35
Also ich hab verglichen und probiert und gemacht... Ich erhalten in der Liste der Zutaten nur die ID ausgeliefert, nicht die Zutat im Text-Format. Weiterhin weiß ich auch nicht, wie ich das Feld für vorhanden einfüge.

Ich hab die Datei mal angehangen.

[Anhang gelöscht durch Administrator]
Titel: Re: Zellen mit anderen abgleichen
Beitrag von: MzKlMu am März 27, 2011, 21:56:16
Hallo,
vergleiche die Datensatzquelle des Ufos und die Spaltenbreiten des Kombis.
Titel: Re: Zellen mit anderen abgleichen
Beitrag von: datekk am März 27, 2011, 22:38:25
Alter Verwalter... Der Fehler lag im Detail.... Die Spaltenbreite war dran schuld.... Krass....

So. Nun funktioniert soweit alles.... 1000 Dank  :) Aber ich habe noch eine weitere Frage...  :o

Wie kann ich im Erfassungsformular anzeigen lassen, dass z.B. 50% der Zutaten vorhanden sind?

Titel: Re: Zellen mit anderen abgleichen
Beitrag von: MzKlMu am März 27, 2011, 23:38:32
Hallo,
habe es Dir noch eingebaut.
Im Formularkopf des Ufos  sind 2 Felder die zur Berechnung herangezogen werden. In der normalen Ansicht sind diese unsichtbar.

[Anhang gelöscht durch Administrator]
Titel: Re: Zellen mit anderen abgleichen
Beitrag von: datekk am April 03, 2011, 12:52:00
Hi... also nochmal 1000 Dank. Ihr habt mich gut weitergebracht und ich konnte schon einiges lernen.

Du hasst ja oben das Prozentfeld eingefügt in die Zutatenliste... Ich möchte dieses Feld gern den jeweiligen Gerichten zuweisen. Ich möchte nämlich später z.B. Italienisch auswählen und es soll mir dann eine Liste der italienischen Gerichte aufzeigen, sortiert absteigend nach % der vorhandenen Zutaten.

Wie ist das zu machen?