dr.cornwallis
Goto Top

Access 2010 SQL Tabellen Datensätze einfügen

Liebe Gemeinde,

ich habe 3 Formulare(Access 2010), die ersten beiden greifen direkt auf einen SQL Table zu(der Table liegt auf einen internen SQL Server und wurde mit dem FE verlinkt), das 3. Formular greift auf eine Abfrage zu.

Bei den ersten beiden Formularen kann ich problemlos Datensätze hinzufügen bzw. löschen(direkt im Formular, ohne VBA Code oder Buttons), beim 3. hingegen kann ich zwar Datensätze löschen, aber keine neuen hinzufügen.

Muss ich die Abfrage jetzt in eine Pass-Trough umwandeln oder gibt es da einen einfacheren Weg?

SQL Server Management Studio 2014

Bitte um Hilfe!

Besten Dank!

Gruß

Dr.

Content-Key: 326536

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

Ausgedruckt am: 19.03.2024 um 06:03 Uhr

Mitglied: 131381
131381 16.01.2017 um 13:59:36 Uhr
Goto Top
screenshot

Gruß mik
Mitglied: Dr.Cornwallis
Dr.Cornwallis 16.01.2017 um 14:18:10 Uhr
Goto Top
Moin Mik,

anfügen zulassen ist bereits auf "ja" gestellt..

Screenshot Formular zeigt auf Abfrage:
query


hier zeigt das Formular direkt auf den SQL Table:
table


Gruß

Dr.
Mitglied: 131381
131381 16.01.2017 aktualisiert um 14:26:11 Uhr
Goto Top
Mitglied: Dr.Cornwallis
Dr.Cornwallis 16.01.2017 um 14:34:24 Uhr
Goto Top
Also gibt es da keine andere Möglichkeit?

Dann werde ich das BE doch lieber auf ein Netzlaufwerk legen face-smile. Mit einer lokalen bzw. nicht SQL Tabelle funktioniert es problemlos direkt aus dem Formular(die User hätten es gerne so da es für sie so schneller geht).

Gruß

Dr.
Mitglied: AndreasHoster
Lösung AndreasHoster 16.01.2017 um 16:45:28 Uhr
Goto Top
Das Problem ist, das Views nicht grundsätzlich Updatefähig sind.
Eine View aus mehreren Tabellen ist nur dann Updatefähig, wenn alle Primärschlüssel aller beteiligten Tabellen mit drin sind.
Das ist bei Dir vermutlich nicht der Fall.
Und wir brauchen auf dem SQL auch eine definierte Fremschlüsselbeziehung.

Ich habe es mal mit zwei einfachen Tabellen auf SQL 2012 probiert (mit Access 2013, habe kein 2010):
CREATE TABLE [dbo].[Table1](
	[ID] [int] NOT NULL,
	[Wert1] [nvarchar](50) NULL,
 CONSTRAINT [PK_Table1] PRIMARY KEY CLUSTERED 
(
	[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

CREATE TABLE [dbo].[Table2](
	[ID] [int] NOT NULL,
	[Wert2] [nvarchar](50) NULL,
 CONSTRAINT [PK_Table2] PRIMARY KEY CLUSTERED 
(
	[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

ALTER TABLE [dbo].[Table2]  WITH CHECK ADD  CONSTRAINT [FK_Table2_Table1] FOREIGN KEY([ID])
REFERENCES [dbo].[Table1] ([ID])
Im Access dann:
SELECT dbo_Table1.ID, dbo_Table1.Wert1, dbo_Table2.Wert2, dbo_Table2.ID
FROM dbo_Table1 INNER JOIN dbo_Table2 ON dbo_Table1.ID = dbo_Table2.ID;

Da funktioniert es. Es wird sogar im 2. Schlüssel (dbo_Table2.ID) automatisch der richtige Schlüsselwert eingetragen, wenn ich in die ersten 3 Felder was eintrage und dann in einen anderen Datensatz springe.
Mitglied: Dr.Cornwallis
Dr.Cornwallis 17.01.2017 um 10:37:58 Uhr
Goto Top
Moin Andreas,

vielen Dank für deine Bemühungen, der Fehler war dass ich den Primärschlüssel nicht ins Formular eingebaut habe, nun ist er nicht sichtbar vorhanden und schon klappt es.

Besten Dank!

Gruß

Dr.