Neuigkeiten:

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

Mobiles Hauptmenü

Zellen mit anderen abgleichen

Begonnen von datekk, März 27, 2011, 11:01:29

⏪ vorheriges - nächstes ⏩

datekk

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 ;)
Access 2016 mit SQL Server Backend. Bereits umgesetzt: Access mit MS SQL Backend,  ADODB Formularbindung, Streamen von Dateien zum SQL Server und zurück (Filestream), Drag&Drop Dateiupload zum Server, CTI / TAPI Integrierung in Access Anwendung - Nutzung auch über Remote Desktop, selbst aktualisierendes Access Frontend auf entfernten Rechnern (Upgrade). Berichte / Kreuztabellen mit SQL Server Backend, Mail Tagging, Outlook Steuerung über Access und umgekehrt // Grundwissen in .Net Core & Blazor Apps

MzKlMu

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.
Gruß Klaus

datekk

... dass die Zutat grundsätzlich vorhanden ist.
Access 2016 mit SQL Server Backend. Bereits umgesetzt: Access mit MS SQL Backend,  ADODB Formularbindung, Streamen von Dateien zum SQL Server und zurück (Filestream), Drag&Drop Dateiupload zum Server, CTI / TAPI Integrierung in Access Anwendung - Nutzung auch über Remote Desktop, selbst aktualisierendes Access Frontend auf entfernten Rechnern (Upgrade). Berichte / Kreuztabellen mit SQL Server Backend, Mail Tagging, Outlook Steuerung über Access und umgekehrt // Grundwissen in .Net Core & Blazor Apps

MzKlMu

#3
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?
Gruß Klaus

datekk

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.
Access 2016 mit SQL Server Backend. Bereits umgesetzt: Access mit MS SQL Backend,  ADODB Formularbindung, Streamen von Dateien zum SQL Server und zurück (Filestream), Drag&Drop Dateiupload zum Server, CTI / TAPI Integrierung in Access Anwendung - Nutzung auch über Remote Desktop, selbst aktualisierendes Access Frontend auf entfernten Rechnern (Upgrade). Berichte / Kreuztabellen mit SQL Server Backend, Mail Tagging, Outlook Steuerung über Access und umgekehrt // Grundwissen in .Net Core & Blazor Apps

MzKlMu

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.
Gruß Klaus

datekk

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.

Access 2016 mit SQL Server Backend. Bereits umgesetzt: Access mit MS SQL Backend,  ADODB Formularbindung, Streamen von Dateien zum SQL Server und zurück (Filestream), Drag&Drop Dateiupload zum Server, CTI / TAPI Integrierung in Access Anwendung - Nutzung auch über Remote Desktop, selbst aktualisierendes Access Frontend auf entfernten Rechnern (Upgrade). Berichte / Kreuztabellen mit SQL Server Backend, Mail Tagging, Outlook Steuerung über Access und umgekehrt // Grundwissen in .Net Core & Blazor Apps

datekk

Ich wollte noch die Beziehungen angeben:

Derzeit habe ich eine Beziehung:

[Gericht]![ID] und [Zutatenverknüpfung]![GerichtsID] vom Typ 1
Access 2016 mit SQL Server Backend. Bereits umgesetzt: Access mit MS SQL Backend,  ADODB Formularbindung, Streamen von Dateien zum SQL Server und zurück (Filestream), Drag&Drop Dateiupload zum Server, CTI / TAPI Integrierung in Access Anwendung - Nutzung auch über Remote Desktop, selbst aktualisierendes Access Frontend auf entfernten Rechnern (Upgrade). Berichte / Kreuztabellen mit SQL Server Backend, Mail Tagging, Outlook Steuerung über Access und umgekehrt // Grundwissen in .Net Core & Blazor Apps

database

#8
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.

datekk

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?
Access 2016 mit SQL Server Backend. Bereits umgesetzt: Access mit MS SQL Backend,  ADODB Formularbindung, Streamen von Dateien zum SQL Server und zurück (Filestream), Drag&Drop Dateiupload zum Server, CTI / TAPI Integrierung in Access Anwendung - Nutzung auch über Remote Desktop, selbst aktualisierendes Access Frontend auf entfernten Rechnern (Upgrade). Berichte / Kreuztabellen mit SQL Server Backend, Mail Tagging, Outlook Steuerung über Access und umgekehrt // Grundwissen in .Net Core & Blazor Apps

DF6GL

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


datekk

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 :)
Access 2016 mit SQL Server Backend. Bereits umgesetzt: Access mit MS SQL Backend,  ADODB Formularbindung, Streamen von Dateien zum SQL Server und zurück (Filestream), Drag&Drop Dateiupload zum Server, CTI / TAPI Integrierung in Access Anwendung - Nutzung auch über Remote Desktop, selbst aktualisierendes Access Frontend auf entfernten Rechnern (Upgrade). Berichte / Kreuztabellen mit SQL Server Backend, Mail Tagging, Outlook Steuerung über Access und umgekehrt // Grundwissen in .Net Core & Blazor Apps

DF6GL

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.



datekk

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?
Access 2016 mit SQL Server Backend. Bereits umgesetzt: Access mit MS SQL Backend,  ADODB Formularbindung, Streamen von Dateien zum SQL Server und zurück (Filestream), Drag&Drop Dateiupload zum Server, CTI / TAPI Integrierung in Access Anwendung - Nutzung auch über Remote Desktop, selbst aktualisierendes Access Frontend auf entfernten Rechnern (Upgrade). Berichte / Kreuztabellen mit SQL Server Backend, Mail Tagging, Outlook Steuerung über Access und umgekehrt // Grundwissen in .Net Core & Blazor Apps

DF6GL

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..