Juli 10, 2020, 14:03:51

Neuigkeiten:

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


zwei Datensätze einer Tabelle im Formular anzeigen

Begonnen von qwertz82, Juni 15, 2020, 20:42:21

⏪ vorheriges - nächstes ⏩

qwertz82

Hallo,

ich bin totaler Anfänger und hoffe auf euere Unterstützung. Mein Ziel ist es, eine Art Steuerungs-DB auf zu bauen. 
Wie schaffe ich es, oder was muss ich tun, dass ich unterschiedliche Datensätze einer Tabelle anzeigen und bearbeiten kann?

Danke, Gruß Jens

Beaker s.a.

Hallo Jens,
Ganz pragmatisch, - erstelle mit dem Formularassistenten ein Formular
in Endlosdarstellung mit deiner Tabelle/Abfrage als DS-Herkunft.
Dein Bild zeigt zwei völlig identische DS. Das sollte in einer DB eigentlich
nicht vorkommen, ausser es steht eine Abfrage dahinter, die DS vervielfältigt.
Am besten du zeigst uns mal ein Bild des Beziehungsfensters, und erklärst
etwas ausführlicher, was du vorhast.
gruss ekkehard
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.

crystal

Hallo Jens,
kurz zur Erklärung:
für die Darstellung von Datensätzen in einem Formular (bei dir ein Endlos-Formular) wird eine Liste von Datensätzen (also Tabellen-Zeilen) aus einer Tabelle oder Abfrage benutzt.
Mit einer Abfrage kannst du auswählen, welche DS aus der Tabelle dargestellt werden sollen (z. B. Maschine = DMG1 oder Maschine = DMG2). Damit siehst du im Formular diese beiden Datensätze und kannst in beiden Änderungen vornehmen (warum in deinem Bild EIN DS ZWEImal dargestellt wird, hat sich ja Ekkehard schon gewundert).

Schwieriger bzw. unhandlicher wird es dann, wenn du statt eines Endlos-Formulars ein Einzelformular hast. Dann wird pro Formular-Fenster je nur ein DS dargestellt und du musst mit DS vorwärts/rückwärts hin und her navigieren.

Um zwei DS gemeinsam in einem großen, breiten Formular darzustellen, müsstes du eben ein breites Formular bauen, in dem ein Unterformular zweimal (nebeneinander) enthalten ist. Dann kannst du dem linken z.B. zuweisen "Maschine = DMG1" und dem rechten "Maschine = DMG2". Sowas kannst du im Hauptformular z.B. über Komboboxen z.B. im Kopfbereich steuern, in denen du je die Maschine für links und rechts auswählst und dann per VBA den Unterformularen zuordnest. So könntest du dann z.B. links immer DMG1 sehen und rechts zwischen verschiedenen anderen Maschinen wechseln und deine Änderungen machen, so lange, bis du dann wieder links eine andere Maschine auswählst...

Könnte eine recht ergonomische Art werden, Datensätze miteinander zu vergleichen, aber es wäre schon auch etwas Vorsicht geboten. Wenn du links und rechts denselben DS auswählst und dann links und rechst Änderungen machst - wer "gewinnt" dann? Änderungen z.B. links würden nicht sofort auch rechts dargestellt werden und andersherum. Das ganze würde dann schon etwas mehr VBA-Code erfordern.

Man sollte also die für links bzw. rechts angegebenen Selektions-Kriterien miteinander vergleichen, um zu verhindern, dass EIN Datensatz ZWEImal dargestellt wird. Auch das ginge nur per VBA-Code mit etwas Expertenwissen. Man könnte z.B. schauen, ob der Hauptschlüssel für die angezeigten DS links und rechts identisch ist und wenn ja für das linke Fenster Datenänderungen sperren oder tricky einen halbtransparenten Button über dem gesamten linken Formular aktiv schalten oder (einfacher) links ein etwas anderes Formular benutzen (alle Felder nicht änderbar, farblich etwas anders dargestellt) und rechts ein anderes Formular (Änderungen erlaubt, andere Farbe). Dazu müsstest du dein Formular "Maschinen-Daten" kopieren und z.B. "Maschine-Links" und "Maschine-Rechts" nennen (und dann zwei Formulare pflegen).

Noch einfacher wäre es natürlich, dein Formular "Maschinen-Daten" schlicht zweimal zu öffnen, am Bildschirm nebeneinander zu schieben und dann links und rechts nach Belieben zu blättern. Aber auch dann ist Vorsicht geboten, weil Daten, die links geändert werden, nicht oder möglicherweise nicht sofort rechts dargestellt werden. Müsste man ausprobieren.

Also alles nicht ganz so einfach und mit viel vorheriger Überlegung und Planung verbunden.

Gruß!

Wer Fehler in meinen Antworten findet, darf sie behalten, muss sie aber kommentieren. ;-)
Dies ist keineswegs arrogant gemeint, sondern soll nur unterstreichen, dass meine Antworten - natürlich - nicht immer fehlerfrei sind und sein können.
Devise: bitte immer erst selbst probieren!

qwertz82

Hallo ihr beiden,

vielen Dank für euren Support.
Die 2 DS sind da, da ich sie doppelt hinzugefügt habe und meinte ich könnte die Datenherkunft entsprechend ändern. In Excel hätte ich dies ungefähr so gemacht. (Feld1 = Tabelle.cells(1+1, 1).value )

Nun ist es so, dass ich 8 Maschinen mit unterschiedlichen Fortschritt steuere.

Das heißt, im Endlosformular bekomme ich irgendwann keine logische Ansicht mehr von 1-8 hin, richtig? Leider kann man auch nur eine Tabelle im Endlosformular einfügen, richtig? Sonst könnte ich die Ansicht auf je 3 DS beschränken und jede Tbl scrollen.

Besteht die Möglichkeit die DS- Ansicht über Bedingungen zu steuern?
- Ansichtsfilter von klein nach groß +
- zeige mir alle DS von DMG1 die nicht den Status "ERL" haben +
- zeige mir alle DS von DMG2 die nicht den Status "ERL" haben +
- ...
Dann könnte ich ein Endlosformular mit einer Tabelle verwenden.

Später möchte ich gern die Tagesdaten als Ansicht hinzufügen.


Und das Feld A_Menge_IST mit der derzeitigen Auftragsmenge über eine Abfrage füttern.


Ich hoffe ihr könnt mir folgen?
Gruss Jens

crystal

Hallo Jens.

Klar könntest du in einer "linken Übersicht" auch mehrere Maschinen auswählen und anzeigen lassen. Du müsstest die Auswahl "nur" über z. B. mehrere Komboboxen eingeben lassen und dann zu einer sinnvollen Abfrage zusammenbasteln. Diese Übersicht könnte dann natürlich als Endlos-Formular auch oben in deinem Haupt-Formular erscheinen.

Dann solltest du in der Übersicht einen Datensatz anklicken und die Details in einem weiteren Unterformular zum Eingeben anbieten (kein Endlos- sondern Einzel-Formular).

ZitatDas heißt, im Endlosformular bekomme ich irgendwann keine logische Ansicht mehr von 1-8 hin, richtig? Leider kann man auch nur eine Tabelle im Endlosformular einfügen, richtig? Sonst könnte ich die Ansicht auf je 3 DS beschränken und jede Tbl scrollen.


Nicht richtig - du kannst im Endlos-Formular ja scrollen... oder es gleich so groß gestalten, dass du zumindest 8 Maschinen siehst.

Vielleicht brauchst du auch gar kein 2. Unterformular für die Details. Das kommt darauf an, ob Access die Daten-Eingabe erlaubt, wenn im 1. Formular Datensätze mehrfach vorkommen können. Könnte sein, dass das nicht möglich ist, weil Access ja nicht entscheiden kann, welcher DS dann "der richtige" ist (obwohl sie gleich aussehen).

Es scheint ja wohl so zu sein, dass deine Maschinen-Tabelle mit anderen Tabellen verlinkt ist/in Beziehung steht (Status-Fortschreibung o. ä.) oder keinen eindeutigen Schlüssel besitzt. Wenn das nicht der Fall ist, müsstest du dich von der Excel-Darstellung eher verabschieden, denn Access arbeitet (immer) mit einzelnen Datensätzen (also Tabellen-Zeilen), die eindeutig identifiziert werden müssen. In Excel kannst du hingegen mehrere Tabellen-Zeilen gleichzeitig darstellen und dann noch irgendwas z. B. in einer Summen-Zeile eingeben oder berechnen lassen. Das geht so in Access nicht, denn wo soll Access das dann speichern??? Summen aus mehreren Tabellen-Zeilen/Datensätzen z. B. sind in Access Auswertungen, also Berechnungen zur Laufzeit, die nur angezeigt werden und sie können nie Eingabe-Felder sein.

Du könntest Eingaben, die im Übersichts-Formular gemacht werden, in das Haupt-Formular "rüberschicken", damit sie dort angezeigt werden. Das ist aber auch mit Aufwand verbunden... Vielleicht könntest du aber Summen etc. auch einfach in den Fuss-Bereich deines Unterformulars legen, dann würden sie automatisch berechnet (aber eben nirgendwo gespeichert).

ZitatDie 2 DS sind da, da ich sie doppelt hinzugefügt habe und meinte ich könnte die Datenherkunft entsprechend ändern. In Excel hätte ich dies ungefähr so gemacht. (Feld1 = Tabelle.cells(1+1, 1).value )


Dies läßt darauf schließen, dass deine Access-Tabelle noch einen in deinem Beispiel nicht angezeigten Primär-Schlüssel (Autowert?) verfügt (oder deine Tabelle keinen eindeutigen Haupt-Schlüssel hat, s. o.) und du so mehrere DS (fast) identischen Inhalts erzeugt hast, die sich eben nur im Primär-Schlüssel unterscheiden. Das widerspricht natürlich den Grundregeln des Designs relationaler Datenbanken (Normalisierung). Ist aber verständlich, wenn du zuvor intensiv mit Excel gearbeitet hast...

Ich glaube, du hast noch einiges zu tun...
Jetzt bist du sicher etwas verwirrt oder irritiert - aber leider ist es eben so: Access ist nicht Excel!

Grüße,
crystal
Wer Fehler in meinen Antworten findet, darf sie behalten, muss sie aber kommentieren. ;-)
Dies ist keineswegs arrogant gemeint, sondern soll nur unterstreichen, dass meine Antworten - natürlich - nicht immer fehlerfrei sind und sein können.
Devise: bitte immer erst selbst probieren!

Beaker s.a.

Hallo,
ZitatAccess ist nicht Excel!
Aus diesem Grunde wäre es am hilfreichsten zum Helfen ein Bild des
Beziehungsfensters zu sehen. Denn nach den Abb. steht zu befürchten,
dass das Datenmodell mit Exceldenke aufgebaut wurde.
gruss ekkehard
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.

qwertz82

Hallo das klingt ja alles nicht so lustig... :o

Anbei die Beziehungen.

Beaker s.a.

@qwertz82
Jau, wo kommt denn diese Tabelle her? Habe ich ja noch
nie gesehen, einen PK mit 10 Feldern. Wer denkt sich
sowas aus? Die anderen Tabelle haben überhaupt keinen
PK und die Beziehungen sind ohne referentielle Integrität
eingestellt.
Das aufzudröseln werde ich dir wohl auch nicht weiterhelfen
können, dazu mangelt es mir an Abstraktionsvermögen.
gruss ekkehard
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.

qwertz82

Zitat von: Beaker s.a. am Juni 29, 2020, 13:38:29@qwertz82
Jau, wo kommt denn diese Tabelle her? Habe ich ja noch
nie gesehen, einen PK mit 10 Feldern. Wer denkt sich
sowas aus? Die anderen Tabelle haben überhaupt keinen
PK und die Beziehungen sind ohne referentielle Integrität
eingestellt.
Das aufzudröseln werde ich dir wohl auch nicht weiterhelfen
können, dazu mangelt es mir an Abstraktionsvermögen.
gruss ekkehard

Hallo, danke für deine Rückmeldung. Ich habe die "Datei" übernommen. Ich werde neu anfangen und stelle bei Fragen ein neues Thema ein.
Danke für deine Hilfe.

Gruß Jens