Fragensteller
Datensätze nicht einfügbar bei verknüpfter Tabelle (SQL view)

Frage
-
Mein Versuch ein Acces-porjekt auf SQL-Server umzustellen. stösst mal wieder auf erhebliche Probleme:
Ich habe in SQL-Server eine View mit jeder Menge JOINS.
Wenn ich für diese VIEW "oberste 200 DS bearbeiten" anwähle, dann tauchen die DS auf und das Icon für "neuen DS anfügen" ist aktiv geschaltet.
Ich kann also Datensätze anfügen
Unter "Entwerfen" ist dieses Icon jedoch nicht aktiv.
Noch mysteriöser ist es unter Access wo die View als verknüpfte Tabelle aufrufbar ist.
Auch hier kann ich keine neuen DS hinzufügen!
Ich habe schonmal irgednwo eine gute Anleitung gefunden auf was man achten muss, damit eine View neue DS akzeptiert oder updateable ist. Leider finde ich diese Abahndlung nicht mehr.
Ich poste einfach mal den FROM part der view:
FROM dbo.Gutachter INNER JOIN dbo.Auftraggeber AS Versicherung RIGHT OUTER JOIN dbo.qry_Personalien_probanden INNER JOIN db_datareader.Geschlecht AS SachbearbeiterSEX INNER JOIN dbo.Auftraggeber INNER JOIN dbo.GA_Auftraege ON dbo.Auftraggeber.ID_Auftraggeber = dbo.GA_Auftraege.GA_Auftraggeber ON SachbearbeiterSEX.ID_Geschlecht = dbo.GA_Auftraege.GA_Sachbearbeiter_Sex ON dbo.qry_Personalien_probanden.ID_Proband = dbo.GA_Auftraege.GA_Proband_Nr ON Versicherung.ID_Auftraggeber = dbo.GA_Auftraege.GA_Versicherung_Nr INNER JOIN dbo.GA_Typen ON dbo.GA_Auftraege.GA_Auftrag_Typ = dbo.GA_Typen.ID ON dbo.Gutachter.Gutachter_ID = dbo.GA_Auftraege.GA_Gutachter
Vermutlich liegt es an den JOINS. Ich hatte es auch schonmal am Laufen, aber längere Zeit nichts mehr an dem Projekt gemacht.
Sorry, wahrscheinlich sit die Lösung ganz einfach
Alle Antworten
-
Hi,
Abfragen mit Join können mehrere Ergebnissätze zu einem Masterdatensatz liefern, wenn es mehrere Child-Sätze gibt. Wenn dann in einem Ergebnisdatensatz in einem Feld, welches aus einem Master-Datensatz gelesen wurde, geändert wird, ist unklar, was in die Datenbank zurückzuschreiben ist. Aus diesem Grund kann eine mit JOIN erhaltene Ergebnismenge nicht zurückgeschrieben werden.Dieses Problem kann gelöst werden, indem nur Spalten aus den Child-Sätzen zurückgeschrieben werden (erfordert spezifische Programmierung) oder auch alle Tabellen einzeln ohne JOIN geladen und dann zurückgeschrieben werden.
--
Peter
Meine Homepage mit Tipps und Tricks -
auf was man achten muss, damit eine View neue DS akzeptiert oder updateable ist. Leider finde ich diese Abahndlung nicht mehr.
Hallo Nico,
siehe MSDN CREATE VIEW (Transact-SQL) => Aktualisierbare Sichten
Im Enterprise Manager (SQL Server <= 2000) war es möglich, Daten aus einer View zu bearbeiten, das war aber eher ein Bug als ein gewollte Feature. Seit SSMS 2005 ist es nur eingeschränkt möglich, siehe Link, und auch weiterhin nicht wirklich sinnvoll.
Olaf Helper
[ Blog] [ Xing] [ MVP] -
Hi,
zur Verdeutlichung den folgenden Fall:Tabelle 1 (Master) hat einen Datensatz
Tabelle 2 (Child) hat mehrere Datensätze, die alle auf den Master-Datensatz verweisenDie JOIN-Abfrage liefert so viele Ergebnis-Datensätze wie es Child-Datensätze gibt und in jedem Ergebnis-Datensatz sind auch die Feldinhalte des Master-Datensatzes enthalten. Wenn jetzt in einem Ergebnis-Datensatz geändert wird, bleiben die anderen Ergebnis-Datensätze unverändert, so dass es in den Spalten aus dem Master-Datensatz bei Änderungen in diesen Spalten zu Konflikten kommt. Damit ist ein Rückspeichern der Änderungen unklar und wird von den Datenzugriffs-Routinen verhindert. Abhilfe kann nur das Rückspeichern der Änderungen in den zur Child-Tabelle gehörenden Feldinhalte schaffen. Das ist aber speziell zu programmieren und wird nicht durch die Standard Designer automatisch gemacht.
--
Peter
Meine Homepage mit Tipps und Tricks -
Am 06.10.2014 schrieb NicoNi:
Noch mysteriöser ist es unter Access wo die View als verknüpfte Tabelle aufrufbar ist.
Auch hier kann ich keine neuen DS hinzufügen!Die neuen Datensätze würde ich lieber per Recordset oder mittels
INSERT-Abfrage einfügen/erzeugen. Die INSERT kannst Du in einer SP
aufrufen, die du von Access aus per Pass-Through abfeuern kannst.
Servus
Winfried
Gruppenrichtlinien
WSUS Package Publisher
HowTos zum WSUS Package Publisher
NNTP-Bridge für MS-Foren -
Ich hatte erwähnt, daß es scon funktioniert hat und ich mich nicht erinnern kann etwas verändert zu haben.
Es ist doch etwas in der Zwischenzeit geschehen:
Die Verknüpfung der Tabellen erfolgt jetzt DSN-los und zwar mit dem SQL Server Native Client 11.0.
Die Verknüpfungen werden per Makro/VBA aktualisiert.
Ich habe mal 2 der betroffenen Views rückentwickelt, d.h. der Treiber ist jetzt wieder über "Microsoft SQL Server ODBC-Treiber Version 06.01.7601".
Damit scheint es auf den ersten Blick wieder zu funktinieren.
Ist es denkbar, daß der native Client der Bösewicht ist ?
-
Am 07.10.2014 schrieb NicoNi:
Ich hatte erwähnt, daß es scon funktioniert hat und ich mich nicht erinnern kann etwas verändert zu haben.
Überleg dir das mit dem INSERT bzw. mit dem Recordset trotzdem.
Es ist doch etwas in der Zwischenzeit geschehen:
Die Verknüpfung der Tabellen erfolgt jetzt DSN-los und zwar mit dem SQL Server Native Client 11.0.
Die Verknüpfungen werden per Makro/VBA aktualisiert.OK.
Ich habe mal 2 der betroffenen Views rückentwickelt, d.h. der Treiber ist jetzt wieder über "Microsoft SQL Server ODBC-Treiber Version 06.01.7601".
Damit scheint es auf den ersten Blick wieder zu funktinieren.
Ist es denkbar, daß der native Client der Bösewicht ist ?Das weiß ich nicht, ich kenn mich mit den Treibern nicht aus. Was
machst Du wenn der Kunde den aktuellsten Treiber verwendet? Dann
funktioniert ein Teil der Anwendung nicht.
Servus
Winfried
Gruppenrichtlinien
WSUS Package Publisher
HowTos zum WSUS Package Publisher
NNTP-Bridge für MS-Foren -
Der einzige Kunde bin ich; insofern unproblematisch.
Trotzdem wüsste ich gerne was diese doch dramtische Verhaltensänderung auslöst.
Kann ich doch damit faktisch die früher luafen Anwendung wegschmeissen.
Muss ich mich mit dieser Probelmatik an ein anderes Forum wenden ?
-
Am 08.10.2014 schrieb NicoNi:
Muss ich mich mit dieser Probelmatik an ein anderes Forum wenden ?
Bezüglich View kannst Du dich an eines der SQL Server Foren wenden,
evtl. haben die Spezialisten einen Tipp.
Servus
Winfried
Gruppenrichtlinien
WSUS Package Publisher
HowTos zum WSUS Package Publisher
NNTP-Bridge für MS-Foren -
Hallo Nico,
grundsätzlich sind neuere Treiber restriktiver, schlicht und einfach, weil das frühere laxe Verhalten in einigen Fällen Fehler verursacht.
Ich hatte schon mal was zu gesagt, siehe Schreibkonflikt beim Ändern eines DS von Sql-Server View - was das gleiche Szenario ist, nur ein anderes Problem auslöst.
Aber da ich dort (und andere Male) keine Antwort von Dir erhalten habe, halte ich zukünftig den Mund...
Gruß Elmar