Juni 24, 2021, 20:35:43

Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!


Haupt- und Unterformular aus einer Tabelle

Begonnen von DanHu, April 17, 2021, 11:56:30

⏪ vorheriges - nächstes ⏩

DanHu

Hallo,
Ich habe eine DB in der ich eine Tabelle dazu nutze Daten aus Excel zu importieren. Dies ist zu 95% der Fall.
Nun würde ich gerne ein Formular für die restlichen 5% haben.
Das Problem: Ich bräuchte dafür ein Hauptformular und ein Unterformular.
Ist das überhaupt möglich aus einer einzelnen Tabelle?
(Mir ist bewusst, dass dieses Vorgehen, Access so zu benutzen, nicht üblich und auch eigentlich nicht sinnvoll ist. Aber die Anforderungen haben sich eben etwas geändert und nun müsste ich das irgendwie anpassen.)

Ich habe schon etwas herumprobiert, aber die Daten landen nur rudimentär in der (Ausgangs-)Tabelle.

Vielen Dank für euer Feedback.

andyfau

Hallo,
Kann es sein, dass du, wenn es sich nur um eine Tabelle handelt, eher ein Formular meinst, in dem Du oben im Kopf Daten hast, die sich in jedem Satz finden und unten dann die Einzelsätze (Endlosformular) sehen möchtest? Haupt- und Unterformular nutzt man doch eher um zwei oder mehrere Tabellen, die, z.B. in einer 1:n Beziehung stehen, darzustellen.

PhilS

Zitat von: DanHu am April 17, 2021, 11:56:30Das Problem: Ich bräuchte dafür ein Hauptformular und ein Unterformular.
Ist das überhaupt möglich aus einer einzelnen Tabelle?
Ja, technisch ist das kein Problem und eigentlich gibt es dabei auch nichts besonderes zu beachten.
Ob das als Benutzeroberfläche Sinn macht, sei mal dahingestellt.

Zitat von: DanHu am April 17, 2021, 11:56:30Ich habe schon etwas herumprobiert, aber die Daten landen nur rudimentär in der (Ausgangs-)Tabelle.
Das ist eine sehr rudimentäre Problembeschreibung. ;-)
Access DevTools - Find and Replace
Komfortables Suchen und Ersetzen in den Entwurfseigenschaften von Access-Objekten. In Abfragen, Formularen, Berichten und VBA-Code - Überall und rasend schnell!

DanHu

Zitat von: andyfau am April 17, 2021, 12:09:21Hallo,
Kann es sein, dass du, wenn es sich nur um eine Tabelle handelt, eher ein Formular meinst, in dem Du oben im Kopf Daten hast, die sich in jedem Satz finden und unten dann die Einzelsätze (Endlosformular) sehen möchtest? Haupt- und Unterformular nutzt man doch eher um zwei oder mehrere Tabellen, die, z.B. in einer 1:n Beziehung stehen, darzustellen.

Danke!
Ich habe es eben mal getestet, aber das Ergebnis ist nicht so, wie ich es gerne hätte/bräuchte.
Im Detailbereich werden alle Datensätze angezeigt, nicht nur die, die einen Bezug zu den Kopfdaten haben.

Es fällt mir wirklich schwer mein Problem zu erläutern. Vielleicht so:
Im Hauptformular (oder Kopfdaten) sollen stehen: Mitgliedsname, Rechnungsnummer, Rechnungsdatum u.s.w.
Im Unterformular (oder Detailbereich) sollen eigentlich nur zwei Angaben stehen: Anzahl und Produkt/Ware.

D.h., wenn jemand 3 Schirmmützen und 5 T-Shirts kauft sollen nur diese angezeigt werden, bzw. in die Tabelle übernommen werden (mit den Kopfdaten bzw. Daten aus dem Hauptformular)

DanHu

Zitat von: PhilS am April 17, 2021, 12:24:50
Zitat von: DanHu am April 17, 2021, 11:56:30Das Problem: Ich bräuchte dafür ein Hauptformular und ein Unterformular.
Ist das überhaupt möglich aus einer einzelnen Tabelle?
Ja, technisch ist das kein Problem und eigentlich gibt es dabei auch nichts besonderes zu beachten.
Ob das als Benutzeroberfläche Sinn macht, sei mal dahingestellt.

Zitat von: DanHu am April 17, 2021, 11:56:30Ich habe schon etwas herumprobiert, aber die Daten landen nur rudimentär in der (Ausgangs-)Tabelle.
Das ist eine sehr rudimentäre Problembeschreibung. ;-)

Danke für die Rückmeldung!

Das macht für mich schon Sinn. Z.Zt. nutze ich die Tabelle und wenn jemand mehr als einen Artikel haben möchte kopiere ich die Daten alle und füge sie ein (Mitgliedsname, Rechnungsnummer, Rechnungsdatum u.s.w.)
Copy & Paste bei ein paar Artikeln ist nicht schlimm, aber manchmal sind es eben auch 10 oder mehr unterschiedliche Artikel. Das macht dann nicht wirklich Spass.

Ich hatte ein paar Varianten probiert: Hier ein Beispiel:
in mein Hauptformular waren drin: Mitgliedsname, Rechnungsnummer, Rechnungsdatum u.s.w.
im Unterformular: Anzahl, Produkt/Ware (und auch hier die Rechnungsnummer, damit ich eine Refernez habe, für Haupt- und Unterformular)
Das Ergebnis in der Tabelle war dann, dass der erste Datensatz ohne Artikel angezeigt wurde
Und die folgenden Datensätze ohne Mitgliedsname, Rechnungsdatum u.s.w.

crystal

Hallo DanHu,
es gibt hier m. E. 2 Problemchen:
1.
Deine "Kopfdaten" entsprechen einer Haupttabelle, die Detaildaten einer Untertabelle, die mit der Haupttabelle 1:n verknüpft ist. Die Verknüpfung beider Tabellen erfolgt über einen eindeutigen Schlüssel (z. B. Mitglieds-Nummer).
2.
Wenn du im ersten Schritt nur die Kopfdaten importierst, kann dies anhand der Mitglieds-Nr. erfolgen, sofern diese in der Excel-Tabelle vorliegt. Im 2. Schritt kannst du dann die "Detail-Einträge" in die zweite Tabelle importieren, wobei die Mitgliedsnummer als externer Schlüssel (=Verweis auf Mitglieder-Tabelle) dient und ein zusätzlicher Autowert diese Datensätze eindeutig identifiziert.

wenn deine Excel-Datei keine Mitglieds-Nr. enthält, wird es etwas komplizierter. Dann musst du nach erfolgtem Import der Kopfdaten beim Import der Detaildaten jeweils nachschauen, welchen Primärschlüssel das Mitglied hat und diesen Wert als Referenz/Verweis in der Untertabelle speichern, was mit DLookup oder Extra-Selekt via Mitglieds-Name funktionieren sollte.

Ansonsten: ohne konkretere Angaben zum Aufbau der Excel-Tabelle und der Access-Tabellen wird es schwierig, genau zu antworten.

Gruß,
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!

Aus gesundheitlichen Gründen nur noch selten dabei...

DanHu

Danke @crystal!
Mein Problem ist nicht der Import aus Excel. Die Exceltabelle wird vorher aufbereitet, damit der Import klappt (Name durch ID ersetzten, Artikel durch ID ersetzen, ...).
Mein Problem ist es ein Formular zu kreiern, in das ich Bestellungen eingeben kann.
In Foren, anderen Hilfeseiten oder Videos (YouTube u.ä.) werden mehrere Tabellen dafür genutzt. Ich habe aber nur eine Tabelle.

DF6GL

Hallo,



ZitatIst das überhaupt möglich aus einer einzelnen Tabelle?

Möglich ist Vieles, aber nicht zielführend.  Mindestens zu Schreibkonflikten kann (wird) es kommen, wenn mit zwei Formularen gleichzeitig die Daten der selben Tabellen bearbeitet werden.



ZitatIn Foren, anderen Hilfeseiten oder Videos (YouTube u.ä.) werden mehrere Tabellen dafür genutzt.
 Ich habe aber nur eine Tabelle.

Warum glaubst Du, ist das wohl so?

Ändere dies, indem Du zwei Tabellen (Haupttabelle, Detailtabelle) generierst und die in 1-n-Beziehung setzt.

Die Tabellen werden beim Import der Daten aus dem Excel-Sheet nacheinander "gefüllt". Zuerst die Daten für die Haupttabelle, im zweiten Gang die Daten für die Detailtabelle unter Berücksichtigung des Primärschlüssels-Wertes, der als Fremdschlüssel in der Detailtabelle gespeichert wird.



Als Formular-Konstruktion dient dann ein "Hauptform" mit Datenherkunft zur Haupttabelle und darin eingebaut ein UFO-Steuerelement, das das (Endlos-) Formular mit Datenherkunft zur Detailtabelle anzeigt.

Dabei müssen die Eigenschaften "Verknüpfen von/nach" des UFO-Steuerelementes auf die Schlüsselfelder eingestellt werden.

 
Eine andere Vorgehensweise und Umsetzung wird nur Frust erzeugen.


Beaker s.a.

Hallo,
Zitatin das ich Bestellungen eingeben kann.
Bei diesem Stichwort öffnet sich vor meinem geistigen Auge fast schon
automatisch ein Datenmodell mit, je nach Anforderung, mindestens einem
halben Dutzend Tabellen.
Bei einer Bestellung kann die Kundentabelle nicht die Kopftabelle
sein, sondern ist nur eine Eigenschaft (Fremdschlüssel) des Bestell-
Kopfes (Tabelle "Bestellungen"). Die bestellten/verkauften Artikel
(Tabelle) sind dann wiederum per FK in den Bestellpositionen zu erfassen,
welche eine 1:n-Beziehung zur Kopftabelle haben.
Das sind schon mal vier Tabellen. Dazu kommen dann noch Lieferanten
plus n:m zu den Artikeln, Preislisten, Verpackungseinheiten und/oder
-grössen, Steuersätze, yni.

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.

PhilS

Zitat von: DanHu am April 17, 2021, 13:29:41Das macht für mich schon Sinn. Z.Zt. nutze ich die Tabelle und wenn jemand mehr als einen Artikel haben möchte kopiere ich die Daten alle und füge sie ein (Mitgliedsname, Rechnungsnummer, Rechnungsdatum u.s.w.)
Der elementare Sinn von relationalen Datenbanken ist genau so etwas nicht zu tun. Stattdessen sollten Mitglieder, Rechnungen und Rechnungspositionen auf verschiedene Tabellen aufgeteilt werden.
Du solltest diesen Ansatz unbedingt nochmal überdenken, denn es wird dir später mit der Anwendung gravierende Probleme bescheren. (Stichwort: Update-Anomalien)


Nichtsdestotrotz, technisch kann man das so umsetzen, wenn man unbedingt will:
Zitat von: DanHu am April 17, 2021, 13:29:41in mein Hauptformular waren drin: Mitgliedsname, Rechnungsnummer, Rechnungsdatum u.s.w.
im Unterformular: Anzahl, Produkt/Ware (und auch hier die Rechnungsnummer, damit ich eine Refernez habe, für Haupt- und Unterformular)
Das Ergebnis in der Tabelle war dann, dass der erste Datensatz ohne Artikel angezeigt wurde
Und die folgenden Datensätze ohne Mitgliedsname, Rechnungsdatum u.s.w.
Das kommt daher, weil du sowohl im Hauptformular als auch im Unterformular einen neuen Datensatz angelegt hast.
Stattdessen solltest du nach der Eingabe der Daten im Hauptformular dort Speichern und dann das Unterformular aktualisieren (Requery), damit dort dann der jetzt bereits eingegebene Datensatz angezeigt wird.
Für weitere Datensätze könntest du nach dem Speichern des HF die Standardwerte im UFO für Mitgliedsname, Rechnungsnummer, Rechnungsdatum u.s.w. auf die gerade gespeicherten Werte setzen.

Nur um es nochmal deutlich zu sagen: Das ist eine Anleitung, wie man es konzeptionell nicht machen sollte!
Access DevTools - Find and Replace
Komfortables Suchen und Ersetzen in den Entwurfseigenschaften von Access-Objekten. In Abfragen, Formularen, Berichten und VBA-Code - Überall und rasend schnell!

DanHu

Vielen Dank für eure Rückmeldungen.

Ich denke, dass ich dann wie bisher verfahren werde.

Die Grunddaten (Mitglieder und Produkte) haben separate, eigene Tabellen.
Die Tabelle, mit der ich die Verkäufe verwalte, führt diese beiden "einfach" zusammen.

Und zu meiner "Verteidingung": Ich habe nicht selbst diese Datenbank angelegt (hatte "Null" Ahnung und mit Excel war das nicht mehr machbar). Ich hatte seinerzeit nur gesagt was ich will und brauche (ach ja, und die Rechnung dafür bezahlt). Heute weiss ich, dass sowas nicht reicht. Man muss sich selbst damit auseinandersetzen, damit man ein "Veto" einlegen kann.
Und jetzt muss ich eben damit leben, bis ich genug Ahnung von Access habe.