Access 2007 SQL Server 2000 Memofeld gesperrt

Uwe_M

Grünschnabel
Hallo an die Gemeinde, ich habe folgendes Problem:

In einer Access 2007 Datenbank ist eine Tabelle aus einem SQL Server 2000 eingebunden. Zugriff über SYSADM (alle Rechte)
In dieser Tabelle Update ich einzelne Datensätze.
Probleme habe ich mit Memofeldern in dieser Tabelle. Manche Datensätze kann ich updaten, mache Datensätze nicht.
Öffne ich die Tabelle in Access 2007 und schreibe in ein Datensatz in ein Memofeld bekomme ich folgende Fehlermeldung: Schreibkonflikt - Dieser Datensatz wurde seit Beginn der Bearbeitung von einem anderen Benutzer geändert.......etc
Dies ist defintiv nicht der Fall!
Das interessante ist, manche Datensätze sind gesperrt (Schreibkonflikt) Manche nicht. In anderen Feldern des gleichen Datensatzes kann ich ohne Probleme schreiben.
Öffne ich die Tabelle im Enterprise Manager im SQL Server, kann ich in jedes Feld schreiben.
Kennt jemand dieses Verhalten?

Gibt es eine Möglichkeit diesen Schreibkonflikt in Access 2007 abzuschalten.

ich habe die SQL Tabelle eingebunden um per VB dort Datensätze zu editieren.

Codebeispiel:
Set rstRec = CurrentDb.OpenRecordset("SELECT * FROM dbo_ANGEBOTE WHERE ANGEBOTSNUMMER=" & nDokNr)

If Not rstRec.EOF Then
rstRec.MoveFirst

rstRec.Edit
rstRec!FUSSTEXTAB = "TEXT"
rstRec!KOPFTEXTAB = "Mein Kopftext"

rstRec.Update
Ende Codebeispiel:

Dies ist nur ein Ausschnitt und das Updatestatement funktioniert einwandfrei. Nur wenn ich ein Memofeld update oft nicht.

Ich bin für jeden Hinweis dankbar

Grüße

Uwe
 
Hab es gefunden! Wie üblich tolle Microsoft feature ;-)

B2.3. Schreibkonflikt bei verknüpften Tabellen

Problem:
Bei einer in Access eingebunden SQL Server-Tabelle wird die Datenänderung mit der Fehlermeldung "Schreibkonflikt: Dieser Datensatz wurde seit Beginn der Bearbeitung von einem anderen Benutzer geändert ... ". abgebrochen, obwohl nur ein Benutzer mit der Datenbank arbeitet. Die in der Fehlermeldung enthaltene Schaltfläche Eigene Änderungen verwerfen ist zudem noch deaktiviert.

Lösung:
Der Schreibkonflikt wird durch in SQL Server und Access unterschiedliche Datentypen verursacht.
Bei einer Datenänderung werden die Werte aller Spalten miteinander verglichen, um festzustellen, ob es seit dem Einlesen des Datensatzes eine Datenänderung von anderer Seite gab.
Die Werte unterscheiden sich aufgrund der unterschiedlichen Genauigkeiten, die Access und SQL Server bei Gleitkommazahlen verwenden. Dieser Unterschied wird als zwischenzeitige Änderung interpretiert und löst die Fehlermeldung aus.
Der Vergleich der einzelnen Spalten kann vermieden werden, indem die SQL Server-Tabelle um eine Spalte vom Datentyp timestamp erweitert wird. Bei einer Datensatzänderung wird dann nur der Wert dieser Spalte verglichen.
In einer timestamp-Spalte wird kein Datum gespeichert, sondern über eine GUID der aktuelle Stand des Datensatzes abgebildet.


Also einfach im Enterprise Manager zur Tabelle ein Feld hinzufügen, dies als "timestamp" Feld und alles wird gut.

Vielleicht hilft dies auch noch anderen hier im Forum.

LG
Uwe
 
Zurück