#

ok Timestamp Access Fehlermeldung: Schreibkonflikt: Dieser Datensatz wurde seit Beginn der Bearbeitung von einem anderen Benutzer geändert
 
 
Fehlermeldung

Schreibkonflikt:
Dieser Datensatz wurde seit Beginn der Bearbeitung von einem anderen Benutzer geändert. Wenn Sie den Datensatz speichern, werden Sie die Änderungen des anderen Benutzers überschreiben.
Kopieren Ihrer Änderung in die Zwischenablage ermöglichte es Ihnen, die Änderungen des anderen Benutzers anzusehen und dann Ihre Änderungen einzufügen, wenn Sie es wünschen

->In Zwischenablage kopieren
->Eigene Änderungen verwerfen

 

 
 
Lösung
Man muss / sollte in SQL Server eine Spalte vom Typ timestamp einfügen
Dadurch wird es für den Server oder Client einfacher, einen geänderten Datensatz zu erkennen.
 
Verbesserung bei Access:
Mit einer Spalte timestamp muss nur die ID als primary key plus der wert in Timestamp geprüft werden um zu erkennen, ob ein Datensatz gerade bearbeitet wird.
Vor allem beim Löschen oder ändern von großen Datenmengen mit Query Abfragen kann es dadurch zu verbesserungen kommen.
 
 
SQL Server: Timestamp Feld
Unter Datentyp gibt es in SQL Server speziell ein Datentyp Feld vom Typ: timestamp. Dieses hat die Größe von binär 8 Byte

 
Eingabe
Unter Microsoft MS Access erscheinen eingebundene Timestamp Felder als <Binärdaten>

 
SQL-Server einbinden in MS Access
Zugriff über ODBC

Dann in externe Daten ODBC Datenbank
->Erstellen Sie eine Verknüpfung zur Datenquelle, indem Sie eine verknüpfte Tabelle erstellen

 
Dann muss man nur eine neue Datenquelle unter Computerdatenquelle mit dem Button: Neu erstellen und den Typ der neuen Datenquelle als SQL Server zuweisen

 
Der neuen Datenquelle für SQL Server bindet man den lokalen SQL Server .\sqlexpress oder einen externen SQL Server mit einer vorgegebenen SQL Connectionstring zu

 
In der Quelle wählt man die Standarddatenbank von master auf die Datenbank (hier Test), welche man verwenden möchte

 
Dann werden alle Tabellen, View Abfragen und interne Tabellen angezeigt zur Einbindung in MS Access.

 
Folgen erkennt man in MS Access in den verknüpften Tabellen aus SQL Server, dass die eingebundenen Timestamp Tabellen vom Typ: Binär in MSAccess gehandelt werden.

 
Änderung in MS Access gleichzeitig von 2 Benutzern oder zwei gleichzeitigen Anwendungen
 
Normalerweise kommt die Meldung:
Microsoft Access
Die Daten wurden geändert.
Ein anderer Benutzer hat diesen Datensatz bearbeitet und die von ihm vorgenommenen Änderungen gespeichert, bevor Sie versucht haben, Ihre Änderungen zu speichern.
Bearbeiten Sie den Datensatz neu

 
Oder die Fehlermeldung
Schreibkonflikt:
Dieser Datensatz wurde seit Beginn der Bearbeitung von einem anderen Benutzer geändert. Wenn Sie den Datensatz speichern, werden Sie die Änderungen des anderen Benutzers überschreiben.
Kopieren Ihrer Änderung in die Zwischenablage ermöglichte es Ihnen, die Änderungen des anderen Benutzers anzusehen und dann Ihre Änderungen einzufügen, wenn Sie es wünschen
 
->In Zwischenablage kopieren
->Eigene Änderungen verwerfen

 
Diese Tabelle hat zum Beispiel noch kein Timestamp Feld

 
 

http://support.microsoft.com/kb/128808

Timestamps

On servers that support them (such as Microsoft SQL Server), timestamp fields make updating records more efficient. Timestamp fields are maintained by the server and are updated every time the record is updated. If you have a timestamp field, Microsoft Access needs to check only the unique index and the timestamp field to see whether the record has changed since it was last retrieved from the server. Otherwise, Microsoft Access must check all the fields in the record. If you add a timestamp field to an attached table, re-attach the table in order to inform Microsoft Access of the new field.

and

http://www.sql-server-performance.com/2007/access-sql/ 

One way to increase performance of DELETEs or UPDATEs made by your Access front-end to a SQL Server backend is to ensure that the table on SQL Server has a timestamp column. If a table does have a timestamp column, then when Access DELETEs or UPDATEs a row, Access will automatically check the timestamp column to see if it has changed during the time that the transaction begun and the current time that the deletion or update is being made. If the timestamp column has changed, then the DELETE or UPDATE will be aborted. If a timestamp column does not exist in the table, then Access will have to compare all the field values when the transaction begun to their current value to determine if there were any changes. This is much slower for Access to perform than checking the timestamp column.
 
 
 
Create SQL Transact
SQL Anweisung zur SQL Server Tabellen mit TimeStamp Spalte


USE [Test]
GO
 
/****** Object: Table [dbo].[tblTimeStamp] script Date: 07.01.2020 16:01:11 ******/
SET ANSI_NULLS ON
GO
 
SET QUOTED_IDENTIFIER ON
GO
 
CREATE TABLE [dbo].[tblTimeStamp](
[ID] [int] IDENTITY(1,1) NOT NULL,
[Eingabe] [nvarchar](50) NULL,
[tmp] [timestamp] NULL,
CONSTRAINT [PK_tblAccess] 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

 
Mobile

.