Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: Christian5467 am Januar 05, 2022, 12:07:11

Titel: Daten in Untertabelle "vererben"
Beitrag von: Christian5467 am Januar 05, 2022, 12:07:11
Hallo zusammen,

Ich möchte meine Wareneingänge in Access verwalten.

Dafür habe ich eine Tabelle "Eingang" sowie eine "Untertabelle" Eingangspositionen.
Die Tabelle "Eingang" hat das Feld "Eingang ID" als Autowert. Die Verknüpfung zur Tabelle "Eingandspositionen" erfolgt über eine 1:N Beziehung mit dem Feld "EingangkopfID" in der Untertabelle "Eingangspositionen".
Das funktioniert auch.

Jetzt möchte ich nachträglich die Wareneingänge stornieren können. Das soll entweder pro Position gehen oder für den gesamten Wareneingang. Dafür habe ich in beiden Tabellen das Feld "Storno" als Ja/Nein angelegt.

Wenn ich jetzt den gesamten Wareneingang storniere, möchte ich dass auch automatisch alle Positionen diesesw Wareneingangs storniert werden. Wie kann ich das anstellen?

Danke und Gruß
Christian
Titel: Re: Daten in Untertabelle "vererben"
Beitrag von: MzKlMu am Januar 05, 2022, 12:16:45
Hallo,
mit einer Aktualisierungsabfrage das die Ja/Nein Felder der Tabelle für das Ufo auf True setzt.
Die Aktualisierungsabfrage muss auf die im Ufo verwendete EingangkopfID gefiltert werden.

Was machst Du mit der Menge wenn storniert wird ?
Titel: Re: Daten in Untertabelle "vererben"
Beitrag von: Christian5467 am Januar 05, 2022, 12:27:52
Vielen Dank für die schnelle Hilfe.

Es handelt sich in diesem Fall um Eingangsbuchungen für Dienstleistungen, hier gibt es dann in diesem Fall keine Weiterverwendung.

Dein Vorschlag bedeutet, dass ich in dem Feld Storno im HF ein Ereignis "Nach Aktualisierung" erstellen soll?
Wie sähe der Code dafür aus?

Danke und Gruß
Christian
Titel: Re: Daten in Untertabelle "vererben"
Beitrag von: MzKlMu am Januar 05, 2022, 12:46:07
Hallo,
erstelle eine Aktualisierungsabfrage manuell (zunächst ohne Kriterium) mit den bei dir vorhandenen Tabellen/Feldnamen.
Zeige hier den SQL Code dieser Abfrage.
Titel: Re: Daten in Untertabelle "vererben"
Beitrag von: Beaker s.a. am Januar 05, 2022, 14:30:35
Hallo,
Das Booleanfeld in der Kopftabelle halte ich für überflüssig.
Der Zustand lässt sich jeder Zeit anhand der (gefilterten)
Detailtabelle ermitteln.

gruss ekkehard
Titel: Re: Daten in Untertabelle "vererben"
Beitrag von: Christian5467 am Januar 05, 2022, 15:44:42
----------
Hallo,
erstelle eine Aktualisierungsabfrage manuell (zunächst ohne Kriterium) mit den bei dir vorhandenen Tabellen/Feldnamen.
Zeige hier den SQL Code dieser Abfrage.
----------

Hallo,
hier der SQL Code für die Auswahlabfrage der beiden Tabellen:

SELECT [Eingang Detail].[WE Kennz 1] AS [Eingang Detail_WE Kennz 1], [Eingang Detail].[WE Nummer], [Eingang Detail].Artikelnummer, [Eingang Detail].Menge, [Eingang Detail].Kosten, [Eingang Detail].Charge, [Eingang Detail].Serialnummer, [Eingang Detail].Ablaufdatum, [Eingang Detail].Information, [Eingang Detail].Storno AS [Eingang Detail_Storno], [Eingang Kopf].[Eingang ID], [Eingang Kopf].Datum, [Eingang Kopf].Lieferant, [Eingang Kopf].[WE Kennz 1] AS [Eingang Kopf_WE Kennz 1], [Eingang Kopf].Bemerkung, [Eingang Kopf].[Rechnung Nr], [Eingang Kopf].Storno AS [Eingang Kopf_Storno]
FROM [Eingang Kopf] RIGHT JOIN [Eingang Detail] ON [Eingang Kopf].[WE Kennz 1] = [Eingang Detail].[WE Kennz 1];

Nach Konvertierung als Aktualisierungsabfrage erhalte ich folgenden SQL Tesxt:

UPDATE [Eingang Kopf] RIGHT JOIN [Eingang Detail] ON [Eingang Kopf].[WE Kennz 1] = [Eingang Detail].[WE Kennz 1] SET;
Ich habe bisher ohne Erfolg probiert...
Vielen Dank für die Hilfe!

Gruß
Christian
Titel: Re: Daten in Untertabelle "vererben"
Beitrag von: MzKlMu am Januar 05, 2022, 16:15:14
Hallo,
was sind denn die Ja/Nein Felder ?
Der 2. Code ist nicht vollständig. Set kann nicht hinten stehen.

Zeige bitte mal ein Bild des Beziehungsfensters.

Zitat von: ekkehardDas Booleanfeld in der Kopftabelle halte ich für überflüssig.
Sehe ich auch so.

Übrigens, die Objekt und Feldnamen mit den Leerzeichen solltest Du ändern, so lange der Aufwand nicht so groß ist.
Titel: Re: Daten in Untertabelle "vererben"
Beitrag von: Christian5467 am Januar 05, 2022, 17:18:15
Hallo zusammen,

Anbei 2 Screenshots. Der erste der Tabellenbeziehung. Der 2. des SQL Codes, den ich im SQL Fenster der Aktualisierungsabfrage sehe.

Gruß
Christian

SQL Code aus Access.JPG

Verknüpfung Tabellen.JPG
Titel: Re: Daten in Untertabelle "vererben"
Beitrag von: MzKlMu am Januar 05, 2022, 17:43:42
Hallo,
das gezeigte Bild ist kein Bild der Beziehungen. Das ist ein Bild der Verknpüfung in der Abfrage, das hat mit den Beziehungen nichts zu tun.
Beziehungen werden im Beziehungsfenster angelegt und liegen ein für alle mal fest. Beziehunegn und Verknüpfen können gleich sein, müssen aber nicht.

Wenn das gezeigte Bild auch für die Beziehungen gilt (sind überhaupt Beziehungen angelegt?), so wäre diese aber ohnehin falsch. Beziehungen laufen immer über den Primärschlüssel und ein extra Feld in den n-Tabelle als Fremdschlüssel. Bei korrekt angelegten Beziehungen ist "WE Kennz 1" ist in der Detailtabelle überflüssig bzw. falsch. Das musst Du ändern, das wird so nichts. Siehe Bild
Und ändere unbedingt die Feldnamen "Kosten / Einheit" ist eine Katastrophe.

Du solltest Dir die Grundlagen zu Access aneignen.
https://www.access-tutorial.de/
.
.
Titel: Re: Daten in Untertabelle "vererben"
Beitrag von: Christian5467 am Januar 05, 2022, 18:05:53
Hallo,

vielen Dank für die Erklärung. In der tat bin ich gerade dabei, mir einige Kenntnisse mithilfe von Büchern anzueignen. Danke für den Link.

Ich habe das Feld "WE Kennz 1" extra so angelegt, weil ich damit den ersten Teil der "WE Nummer" erstelle. Das Feld "WE Kennz 1" ist in der Tabelle "Eingang Kopf" indiziert ohne Duplikate, insofern ist es mit dem AutoWert der "Eingang ID" vergleichbar. Das Feld habe ich so in der Tabelle gelassen, weil es nicht stört.


Die Beziehungen habe ich nochmal angehängt, sind aber aus meiner Laiensicht für das Problem nicht relvant.
Beziehungen.JPG

Jedoch nochmal zurück zu meinen Problem? Wie genau kann ich jetzt das Stornokennzeichen vererben?

Vielen Dank und Gruß
Christian
Titel: Re: Daten in Untertabelle "vererben"
Beitrag von: MzKlMu am Januar 05, 2022, 19:38:54
Hallo,
die Beziehungen sind falsch, zwar nicht alle, aber doch einige.
Zunächst das mit dem bereits beschriebenen WE Kennz 1.
Dann die Materialgruppe, die gehört nicht in die Materialtabelle sondern in die MatUntergruppe. Bei Material ist diese zu löschen..
Dann gibt es noch verwirrende Feldnamen, wieso nennst Du Lieferanten ID der Tabelle LfGruppe nicht LfGruppeID ?

In den Beziehungen stellt man grundsätzlich den Typ 1 ein. Das wird nur in den Verknüpfungen der Abfragen bei Bedarf geändert. Anere Beziehungstypen können zu nicht aktualisierbaren Abfragen führen.
Die Felder Einkauf und Verkauf, wenn das Mengen sind gehören die in ein Feld.

So wie ich die Feldnamen der Fremdschlüsselfelder sehe, hast Du da vermutlich auch Nachschlagefelder in den Tabellen angelegt, die solltest Du auch unbedingt ändern. Nachschlagefelder in Tabellen führen zu Fehlern und sind nur in Formularen sinnvoll.

Deine Feldnamen mit den Sonderzeichen werden Dir regelmäßig lästig werden.

Du fragst zwar hier um Rat, aber die Hinweise ignorierst Du.

Zitat von: undefinedWie genau kann ich jetzt das Stornokennzeichen vererben?
Da gibt es nichts zu vererben, das Feld Storno in der Tabelle "Eingang Kopf" ist überflüssig. Lege im Formularkopf des Ufos einen Button an und nenne den "btnStorno", Beschriftung: "Alles stornieren"
Im Ereignis "Beim Klicken" des Button folgenden Code.

CurrentDb.Execute "UPDATE [Eingang Detail] SET Storno = True WHERE [WE Kennz 1] " & Me.[WE Kennz 1], DbFailOnError
Titel: Re: Daten in Untertabelle "vererben"
Beitrag von: Christian5467 am Januar 05, 2022, 20:30:26
Hallo,

vielen Dank für die Informationen.
Ich ignoriere die Hinweise nicht, ich werde meine Datenbank entsprechend ändern, das wird jedoch etwas dauern, da es dann noch einige Formulare gibt, die ich dann auch anpassen muss. Das kann erst in den folgenden Tagen geschehen.

Nochmals Danke und Gruß
Christian
Titel: Re: Daten in Untertabelle "vererben"
Beitrag von: MzKlMu am Januar 05, 2022, 20:32:38
Hallo,
Na denn man tau  ;D
Titel: Re: Daten in Untertabelle "vererben"
Beitrag von: Christian5467 am Januar 05, 2022, 22:18:36
Hallo, ich bin es nochmal.

Ich habe jetzt die Betiehungen entsprechend Deinen Hinweisen geändert und einige Feldnahmen überarbeitet und sprechender bezeichnet. Eine Frahe habe ich aber noch zu den beiden Tabellen "Eingang Kopf" und "Eingang Detail"

Mein Ziel ist es für jede Wareneingangsposition eine eindeutige WE Nummer zu erhalten. Diese WE Nummer soll einen Hinweise auf die Lieferung ("Eingang Kopf") und auf die Position beinhalten und erstmal eine gleichbleibende Länge von 9 Stellen haben, wobei die erste Stelle der Buchstabe E sein soll.

Ich habe das aktuell so gelöst:
- Erstellung des Wareneingangs über ein Hauptformular (HF) für Tabelle "Eingang Kopf" und ein eingebettetes Unterformular (UF) für Tabelle "Eingang Detail".
- Im HU habe ich eine Funktion, welche aus dem Buchstaben E und der Summe aus 1000+dem AutoWert Feldes einen 5-stelligen Wert bildet."Exxxx" Dieser Wert ist einzigartig und wird in das Feld WE Kennz 1 geschrieben.
- Das Feld WE Kennz 1 ist dann die Verknüpfung zum Unterformular. Es befindet sich im Unterformular nicht sichtbar im Datensatz.
- Nach der Eingabe des Artikels im Unterformular wird der Wert aus WE Kennz 1 mit dem Autowert der Tabelle "Eingang Detail" zu einer 9-stelligen Buchstaben-Zahlenkombination Exxxxyyyy verknüpft und in das Feld WE Nummer geschrieben.

Deshalb die Krücke mit dem Feld WE Kennz 1.

Wie geht es mit Access Hausmitteln ohne große Programmierung besser?

Vielen Dank für Deine Geduld und Gruß
Christian



Titel: Re: Daten in Untertabelle "vererben"
Beitrag von: DF6GL am Januar 05, 2022, 22:45:27
Hallo,

ZitatMein Ziel ist es für jede Wareneingangsposition eine eindeutige WE Nummer zu erhalten. Diese WE Nummer soll einen Hinweise auf die Lieferung ("Eingang Kopf") und auf die Position beinhalten und erstmal eine gleichbleibende Länge von 9 Stellen haben, wobei die erste Stelle der Buchstabe E sein soll.


Wozu braucht es eine sprechende Nummer?

Mit Feld [Eingang Detail ID]  hast Du bereits eine eindeutige Nummer für jede Position. Die Zusammenballung von ID-Werten zusätzlich zu einem Buchstaben bringt keinen Info-Gewinn. Und gespeichert werden muss ein solcher Wert auch nicht; der kann jederzeit dort, wo man ihn braucht, neu berechnet werden.



BTW:  Vermeide DRINGEND Sonder- und Leerzeichen bei der Namensgebung, genauso wie reservierte Wörter. 

Stelle alle Beziehungen mit Typ 1 ein. Wenn das nicht geht, stimmt der Tabellenaufbau nicht, bzw. sind fehlerhafte Daten schon gespeichert. (--> befolge Tipps von Klaus. Eigentlich sind es keine Tipps, sondern nötige Vorgaben.)


Titel: Re: Daten in Untertabelle "vererben"
Beitrag von: MzKlMu am Januar 05, 2022, 23:09:54
Hallo,
ZitatMein Ziel ist es für jede Wareneingangsposition eine eindeutige WE Nummer zu erhalten.
Abgesehen von der Frage, ob eine solche WE Nummer überhaupt notwendig ist, wird diese WE Nummer nur in der Kopftabelle benötigt. In der Detailtabelle ist diese überflüssig, wenn die Beziehung wie von mir vorgeschlagen über die EingangID läuft. Hafo und Ufo werden dann über die EingangID verknüpft.
Wenn Du eine Abfrage erstellst mit der Kopftabelle und der Detailtabelle und der Verknüpfung über die EingangID siehst Du dann auch in jedem Datensatz der Detailtabelle auch die  WE Nummer ohne dass diese in der Tabelle ist.
Damit ist dann diese Frage
ZitatWie geht es mit Access Hausmitteln ohne große Programmierung besser?
beantwortet.