Hallo,
habe folgende Tabellen in einer Abfrage, verbunden dbo_tarife_zuordnung.ID_room_types zu dbo_room_types.ID
dbo_room_types (ID, type_name, belegung_erwachsene, belegung_kinder)
dbo_tarife_zuordnung(ID, ID_tarif, ID_toom_types, pms, bm)
pms, bm sind Long-Integer
Die Abfrage sieht so aus:
SELECT dbo_tarife_zuordnung.ID, dbo_room_types.type_name, dbo_tarife_zuordnung.pms, dbo_tarife_zuordnung.bm
FROM dbo_tarife_zuordnung
INNER JOIN dbo_room_types
ON dbo_tarife_zuordnung.ID_room_types = dbo_room_types.ID;
Ändern möchte ich nur die beiden Zahlenfelder pms und bm.
Wo liegt hier das Problem?
Gruß Andreas
Hallo Andreas,
es sind zu wenig Hintergründe bekannt und es gibt mehrere mögliche Gründe.
Aus https://support.microsoft.com/de-de/help/328828/how-to-troubleshoot-errors-that-may-occur-when-you-update-data-in-acce
ZitatWenn die Abfrage auf Tabellen mit einer 1: n-Beziehung basiert, werden die Typen der Felder, die Sie nicht ändern können wie folgt:
Verknüpfungsfeld von der 1-Seite.
Das "n" Seite Verknüpfungsfeld wird nicht im Datenblatt angezeigt.
Verknüpfungsfeld von der "n"-Seite nach der Aktualisierung der Daten auf der 1-Seite.
Ein leeres Feld aus der Tabelle auf der "1"-Seite einer 1: n-Beziehung mit einer äußeren Verknüpfung vorhanden ist.
Der gesamte eindeutige Schlüssel der ODBC-Tabelle ist nicht die Ausgabe.
Sie können eines dieser Probleme lösen, nehmen Sie die richtige Aktion aus der folgenden Liste:
Aktivieren von Aktualisierungsweitergaben zwischen den beiden Tabellen.
Fügen Sie das Verknüpfungsfeld aus der "n"-Seite der Abfrage neue Datensätze hinzufügen können.
Speichern Sie den Datensatz. Sie können die "n" Seite Verknüpfungsfeld ändern.
Geben Sie Werte in Felder aus der Tabelle auf der n-Seite. Dies ist möglich, nur, wenn das verknüpfte Feld aus der "1"-Seite für diesen Datensatz einen Wert enthält.
Wählen Sie alle Primärschlüsselfelder von ODBC-Tabellen eingefügt werden sollen.
Dass bereits ein einfacher JOIN sehr hinderlich für eine Aktualisierbarkeit einer Abfrage ist, sollte einen alten Fahrensmann wie Dich aber jetzt nicht mehr überraschen.
Auflösen kann man das zum einen, wenn man eine HFo/UFo-Kombination einsetzt.
Braucht man andererseits eine Abfragelösung: Die beiden Felder kommen aus der gleichen Tabelle. Da kann man auch die Abfrage umformulieren:
SELECT
TZ.ID,
TZ.pms,
TZ.bm
FROM
dbo_tarife_zuordnung AS TZ
WHERE
TZ.ID_room_types IN
(
SELECT
ID
FROM
dbo_room_types
)
Hallo,
ja hatte lange nichts mehr mit Access und Datenbanken zu tun.
Muss mir das erst mal ansehen.
Gruß und Danke
Andreas
So jetzt hab ich wieder Zeit.
Warum Hfo/Ufo nicht geht ist weil die Daten im Endlosformular angezeigt werden.
Eberhard, deine Abfrage liefert mir aber kein Feld aus dbo_room_types.
Ich hab das jetzt auf die Quick & very Dirty Methode gelöst indem ich die Feldwerte in Prozeduren ermitteln lasse:
type_name: GetTypeName([ID_room_types])
Erwachsene: getBelegung_erwachsene([ID_room_types])
Kinder: GetBelegung_kinder([ID_room_types])
Dadurch wird die Abfrage aktualisierbar da die Tabelle dbo_room_types rausgeflogen ist.
Gruß Andreas
Hallo Andreas,
Zitat
Warum Hfo/Ufo nicht geht ist weil die Daten im Endlosformular angezeigt werden.
Das geht schon, wenn das UFO im Formularfuß des Endlosforms platziert und die Meckerei von Access ignoriert wird..
Berechnete Werte lassen sich aber auch nicht aktualisieren, oder ich müsste mich schwer irren.
Auf Performance scheint es nicht anzukommen. Da kann man sich den fehlenden Wert auch per DLookup in die Abfrage holen und die Unterabfrage streichen. Da bleibt dann nur dieser eine Wert nicht direkt aktualisierbar.
Ja, man will eben seine Exceltabelle: Alles sehen, alles ändern usw.
Hallo,
ja ganz genau.
Aber keine Excel-Tabelle sondern MySQL - zur Entwicklungszeit aber nach Access portiert.
Daher gibt es auch keine Weitergabe von Aktualisierungen später o.Ä.
Gruß Andreas
Mit Exceltabelle meinte ich ja das Feeling, das Erwartete.
Es gibt halt 2 Frondends, ein Web-FE für die User mit PHP erstellt und ein Access-FE für den Admin.
Daher ist einiges da vieleicht komisch.
Gruß Andreas