hipfzwirgel
Goto Top

Eintrag in Access Tabelle wird nicht aktualisiert

Hallo Gemeinde,

in meiner Access-Db gibt es die Tabelle Artikel und in dieser das Feld RFQNummer.
Die Tabelle RFQ besteht aus den Feldern Id, RFQNummer( wie z.B. 1081523), Geräteklasse(wie z.B. Standard DT) und Jahr (z.B. 2024). Normalerweise bekomme ich die RFQ-Nummer vom Einkauf wenn eine Geräteklasse neu ausgeschrieben wird. Öfters gibt es aber auch eine sog. Transition (d.h. es wird vereinfacht das Nachfolgemodell vom gleichen Hersteller eingeführt.)

Über das Formular Artikelerfassung kann ich den RFQ (Kombinationsfeld, welches die ganze Zeile der Tab RFQ anzeigt) auswählen. Im Falle einer Transition wurde aber bisher nur das Wort Transition im Feld RFQNummer in der Tabelle Artikel gespeichert. Zur besseren Unterscheidung aber habe ich nun die Tabelle
RFQ angepasst und die Bezeichung Transition in Transition+Kürzel Geräteklasse + Jahr geändert (z.B. TransitionSDT23).
Leider werden die Einträge in der Tabelle Artikel nicht automatisch angepasst. Dort steht weiterhin nur Transition.

Hat wer eine Idee wie ich die Einträge der Tabelle Artikel aktualisiert bekomme, sodass diese mit der Tabelle RFQ wieder übereinstimmen?

Content-Key: 44108382816

Url: https://administrator.de/contentid/44108382816

Printed on: July 14, 2024 at 17:07 o'clock

Member: ukulele-7
ukulele-7 Jun 25, 2024 at 11:23:38 (UTC)
Goto Top
Geht es dir jetzt darum nur den Bestand anzupassen oder trägt das Formular die Nummern nicht richtig ein?

Den Bestand anpassen machst du mit UPDATE. Grob:
UPDATE tbl_RFQ
SET spalte_Bezeichnung = 'Transition' + spalte_Kürzel_Geräteklasse + convert(VARCHAR(10),spalte_Jahr)
WHERE spalte_Bezeichnung = 'Transition'
Member: hipfzwirgel
hipfzwirgel Jun 26, 2024 at 09:46:33 (UTC)
Goto Top
Hallo Ukulele-7,

vielen lieben Dank für deinen Beitrag. Ich kann auf dem Formular die relevante RFQnummer auswählen und die
wird auch korrekt gespeichert. Sofern es sich um eine Nummer handelt kein Prob. Nur bei einer Transition
hatte ich nicht zu Ende gedacht. Das Kombifeld zeigt mir zwar alle Spalten der Tabelle RFQ an. Dadurch ist die
richtige Transition auswählbar, z.B. durch eine solche Zeile: Transition | StandardDT | 2024. Leider wird dann aber in der Tabelle Artikel(Haupttabelle der Db) nur das Wort Transition gespeichert. Da wir aber jedes Jahr Transitions haben und manchmal sogar unterjährig mehrere reicht nur das Wort Transition eben nicht aus. Daher die Änderung der Transition-Einträge in der Tabelle RFQ. Nach der Änderung der Tabelle RFQ sieht die o.g. Zeile so aus:
TransitionSDT24 | StandardDT | 2024.
Leider wird aber dieser Eintrag in der Tabelle Artikel nicht angepasst. Somit sehe ich immer noch nicht welche Transition bei den Geräten diejenige welche ist...

Wenn ich deinen Vorschlag umsetze wird ja die Tabelle RFQ geupdatet. Dort sind aber die Werte bereits richtig abgelegt.

Ich suche einen Weg, die Tabelle Artikel anzupassen, dass dort der Eintrag gem. der Tabelle RFQ geändert wird...

Hat da jemand eine Idee?
Member: ukulele-7
ukulele-7 Jun 26, 2024 at 11:53:25 (UTC)
Goto Top
Der Weg wäre eine Abfrage zu bauen, die zu jedem Eintrag in Tabelle Artikel die richtige Zeichenkette liefert und dann die Datensätze anhand dieser Abfrage zu aktualisieren. Das sollte auch gehen, vermutlich sogar mit Access face-smile

Das ganze würde man über einen Join zwischen Artikel und RFQ machen. Das setzt allerdings voraus, das ich von einem Eintrag in der Artikel-Tabelle auf den zugehörigen Eintrag in RFQ schließen kann. So, wie sich das ließt, wäre das genau das Kombifeld, aber vielleicht gibt es auch noch einen Fremdschlüssel auf RFQ? Wenn nicht, hast du ein Problem weil die Information dann quasi verloren ist. Wenn ich aus allen Informationen in einer Zeile in Artikel nicht auf die richtige Zeile in RFQ schließen kann dann ist das nicht möglich.
Member: hipfzwirgel
hipfzwirgel Jun 27, 2024 at 07:52:33 (UTC)
Goto Top
Hallo ukulele,

natürlich gibt es einen Fremdschlüssel in der Tabelle RFQ. Eine Zeile in der Tabelle sieht so aus:
ID RFQNummer Geräteklasse Jahr

23 TransitionSDT23 Standard DT 2023

Das Feld RFQNummer in der Tabelle Artikel ist mit dem o.g. Fremdschlüssel verknüpft. Seltsamer Weise ist es so, dass wenn ich die gebundene Spalte des Kombifeldes in Artikel auf 2 setze, wird überall der Fremdschlüssel angezeigt, außer bei den Transition-Einträgen. Dort steht weiterhin [Transition] in der jeweiligen Zeile anstatt die ID...
Member: ukulele-7
ukulele-7 Jun 27, 2024 updated at 08:31:41 (UTC)
Goto Top
Ich glaube wir bringen da beide etwas durcheinander, liegt bei mir vermutlich vor allem daran das ich keinen Plan habe was eine RFQ Nummer ist ;.-)

Hat ein Artikel immer genau eine RFQ-Nummer und zu einer RFQ gibt es mehrere Artikel oder umgekehrt? Daraus leitet sich ab, in welche Richtung hier eine 1:n-Beziehung vorliegt und wo der Fremdschlüssel hin gehört.

Meine Annahme war: Artikel <-n:1-> RFQ
Wenn sich mehrere Artikel eine RFQ Nummer "teilen" - was ich bisher angenommen habe - dann gehört ein Fremdschlüssel als Spalte (z.B. FK_RFQ_ID) in die Tabelle Artikel. Der Wert in der Spalte zeigt dann auf den Primärschlüssel der Tabelle RFQ, das müsste eigentlich ID sein. Wenn das jetzt so ist, dann wäre deine Spalte Artikel.RFQ der tatsächliche Fremdschlüssel und der hält die Information, welche RFQ.ID zugehörig ist. Wenn diese Information nicht vorhanden oder unvollständig ist (nur Transition) dann ist sie schlicht nicht da und kann nicht wieder ermittelt werden, aus diesen Daten.

Artikel <-1:n-> RFQ
Wenn ich das mit der Beziehung falsch verstanden habe und es tatsächlich umgekehrt ist, dann müsste die Tabelle RFQ einen Fremdschlüssel wie FK_Artikel_ID haben, der auf den Primärschlüssel von Artikel zeigt.

Deine Spalte RFQ.RFQNummer ist eigentlich redundante Information die sich aus immer dem Wort "Transition" + drei Buchstaben für Geräteklasse + Jahr zusammen setzt. Es ist okay so etwas zu machen und auch für die Anzeige in Access zu verwenden (bin kein Access Profi) aber vom Datenmodell her ist die Spalte theoretisch überflüssig. Man kann diese Information jeder Zeit erzeugen, zu jedem Eintrag in der Tabelle RFQ. Man kann sie auch zu jedem Eintrag in Artikel erzeugen, sofern der Fremdschlüssel da ist und sagt, welcher Artikel von welcher RFQ abhängig ist.