Autor Beitrag
Steamboat Willi
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Fr 26.01.18 13:37 
Ich habe eine Haupttabelle BASISDATEN, in der die wichtigsten Daten eines Mitglieds aufgeführt sind. Dazu gibt es eine Reihe Nebentabellen mit ergänzenden Daten. Die Verbindung soll über das Feld MITGLIEDSNUMMER erfolgen. Ich möchte jetzt einen Datensatz in der Nebentabelle ADRESSE erzeugen, ändern oder löschen. Dazu habe ich folgendes VIEW generiert:

ausblenden volle Höhe SQL-Anweisung
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
CREATE VIEW ADRESSE_V (
  MITGLIEDSNUMMER,
  NACHNAME,
  VORNAME,
  GEBURTSDATUM,
  STRASSE,
  LAND,
  POSTLEITZAHL,
  WOHNORT,
  TELEFON_PRIVAT,
  TELEFON_GESCHAEFTLICH,
  FAX_PRIVAT,
  FAX_GESCHAEFTLICH,
  TELEFON_MOBIL,
  E_POST_PRIVAT,
  E_POST_GESCHAEFTLICH
)
AS
SELECT
  b.MITGLIEDSNUMMER,
  b.NACHNAME,
  b.VORNAME,
  b.GEBURTSDATUM,
  /*a.MITGLIEDSNUMMER,*/
  a.STRASSE,
  a.LAND,
  a.POSTLEITZAHL,
  a.WOHNORT,
  a.TELEFON_PRIVAT,
  a.TELEFON_GESCHAEFTLICH,
  a.FAX_PRIVAT,
  a.FAX_GESCHAEFTLICH,
  a.TELEFON_MOBIL,
  a.E_POST_PRIVAT,
  a.E_POST_GESCHAEFTLICH
 FROM BASISDATEN b, ADRESSE a
 WHERE a.MITGLIEDSNUMMER = b.MITGLIEDSNUMMER


und dazu eine Form mit den entsprechenden Komponenten (IBDataBase, Transaction, DataSet usw) erzeugt. Beim Setzen der Komponente IBDataSet auf TRUE kam folgende Fehlermeldung:
"cannot update read-only Adresse_V"
Dazu ergeben sich für mich zwei Fragen:
1. Geht das Update, Insert und Delete überhaupt auf diese Weise und wenn ja, wie?
2. Wenn es so nicht geht, wie kann ich es dann realisieren?

Moderiert von user profile iconChristian S.: SQL-Tags hinzugefügt
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6325
Erhaltene Danke: 128

Windows 7 + Windows 10
Tokyo Prof + CE
BeitragVerfasst: Fr 26.01.18 15:20 
Du verwendest ein View, in der zwei Tabellen gejoined sind.
In der Regel sind diese automatisch Read-Only.

Je nach Datenbank gilt das sogar grundsätzlich, sobald ein View verwendet wird.

Ich kenne IBDataSet nicht genug, aber bei einigen DataSets kann man ein Update-Statement hinterlegen, wenn ein Datensatz geändert werden soll. Ich meine, dass das bei IBDataSet die Eigenschaft ModifySQL ist. Wie das dann genau mit der Komponente funktioniert, kann ich dir leider nicht sagen. Vielleicht genügt dir das aber schon als Ansatz, um die Lösung zu erarbeiten.