Neuigkeiten:

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

Mobiles Hauptmenü

Abfrage nicht aktualisierbar

Begonnen von Hondo, Dezember 08, 2019, 12:11:04

⏪ vorheriges - nächstes ⏩

Hondo

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

DF6GL

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.
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

ebs17

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
      )

Mit freundlichem Glück Auf!

Eberhard

Hondo

Hallo,
ja hatte lange nichts mehr mit Access und Datenbanken zu tun.
Muss mir das erst mal ansehen.
Gruß und Danke
Andreas

Hondo

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

DF6GL

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..
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

ebs17

#6
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.
Mit freundlichem Glück Auf!

Eberhard

Hondo

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

ebs17

Mit Exceltabelle meinte ich ja das Feeling, das Erwartete.
Mit freundlichem Glück Auf!

Eberhard

Hondo

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