2009-06-01 3 views
0

Dies stammt aus einer früheren Frage - über einen Schreibkonflikt mit einem Formular, aber das Problem scheint von der Tatsache herrühren, dass ich vorhandene Datensätze in einer verknüpften Tabelle aktualisieren kann ein System-DSN, aber keine andere verknüpfte Tabelle, die von einem anderen DSN (andere Datenbank) zur Verfügung gestellt wird - erlaubt mir, Datensätze zuerst einzugeben, aber dann verhindert mich Änderungen an den Datensätzen, als ob ein anderer Benutzer die Daten vor mir geändert hat. Auf dem Server sind keine Prüfbedingungen für Standardwerte, keine Trigger, keine Ansichten und keine anderen Benutzer definiert, die auf dieselbe Tabelle zugreifen.Aktualisierungen von Datensätzen nicht erlaubt - Schreibkonflikt

Beide DSNs sind IDENTISCH eingerichtet, mit Ausnahme der Standarddatenbank, die sie öffnen - der erste öffnet gtdata_test, während der zweite den Befehl inskeeper_test öffnet. Beide Datenbanken auf der SQL Server-Instanz gehören mir, ich bin der einzige angemeldete Benutzer.

Ich habe dies getestet, und dieses Problem tritt auf der Ebene der Tabelle (keine VBA im Programm geschrieben, nichts) mit manuellen Updates.

Falls es hilft, werde ich die CREATE-Anweisungen für die gute Tabelle und für die betroffenen Tabellen darunter einfügen. Ich hoffe, dass mir jemand helfen kann, da ich keine Ideen mehr habe.

USE [gtdata_test] 
GO 

/****** Object: Table [dbo].[Supplier_Master] Script Date: 05/27/2009 15:58:17 ******/ 
SET ANSI_NULLS ON 
GO 

SET QUOTED_IDENTIFIER ON 
GO 

CREATE TABLE [dbo].[Supplier_Master](
    [Supplier_Code] [nvarchar](50) NOT NULL, 
    [Supplier_Master_Name] [nvarchar](50) NULL, 
    [Salutation] [nvarchar](50) NULL, 
    [Contact] [nvarchar](50) NULL, 
    [Phone] [nvarchar](50) NULL, 
    [Fax] [nvarchar](50) NULL, 
    [EMail] [nvarchar](50) NULL, 
    [Address] [nvarchar](50) NULL, 
    [City] [nvarchar](50) NULL, 
    [State] [nvarchar](50) NULL, 
    [Zip] [nvarchar](50) NULL, 
    [Country] [nvarchar](50) NULL, 
    [Last_Review] [datetime] NULL, 
    [Last_Rating] [datetime] NULL, 
    [Last_Received] [datetime] NULL, 
    [Last_Reject] [datetime] NULL, 
    [Enabled] [int] NULL, 
    [User1] [nvarchar](50) NULL, 
    [User2] [nvarchar](50) NULL, 
    [SupType] [nvarchar](50) NULL, 
CONSTRAINT [Supplier_Master$PrimaryKey] PRIMARY KEY CLUSTERED 
(
    [Supplier_Code] 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].[Supplier_Master] WITH NOCHECK ADD CONSTRAINT [SSMA_CC$Supplier_Master$Address$disallow_zero_length] CHECK ((len([Address])>(0))) 
GO 

ALTER TABLE [dbo].[Supplier_Master] CHECK CONSTRAINT [SSMA_CC$Supplier_Master$Address$disallow_zero_length] 
GO 

ALTER TABLE [dbo].[Supplier_Master] WITH NOCHECK ADD CONSTRAINT [SSMA_CC$Supplier_Master$City$disallow_zero_length] CHECK ((len([City])>(0))) 
GO 

ALTER TABLE [dbo].[Supplier_Master] CHECK CONSTRAINT [SSMA_CC$Supplier_Master$City$disallow_zero_length] 
GO 

ALTER TABLE [dbo].[Supplier_Master] WITH NOCHECK ADD CONSTRAINT [SSMA_CC$Supplier_Master$Contact$disallow_zero_length] CHECK ((len([Contact])>(0))) 
GO 

ALTER TABLE [dbo].[Supplier_Master] CHECK CONSTRAINT [SSMA_CC$Supplier_Master$Contact$disallow_zero_length] 
GO 

ALTER TABLE [dbo].[Supplier_Master] WITH NOCHECK ADD CONSTRAINT [SSMA_CC$Supplier_Master$Country$disallow_zero_length] CHECK ((len([Country])>(0))) 
GO 

ALTER TABLE [dbo].[Supplier_Master] CHECK CONSTRAINT [SSMA_CC$Supplier_Master$Country$disallow_zero_length] 
GO 

ALTER TABLE [dbo].[Supplier_Master] WITH NOCHECK ADD CONSTRAINT [SSMA_CC$Supplier_Master$EMail$disallow_zero_length] CHECK ((len([EMail])>(0))) 
GO 

ALTER TABLE [dbo].[Supplier_Master] CHECK CONSTRAINT [SSMA_CC$Supplier_Master$EMail$disallow_zero_length] 
GO 

ALTER TABLE [dbo].[Supplier_Master] WITH NOCHECK ADD CONSTRAINT [SSMA_CC$Supplier_Master$Fax$disallow_zero_length] CHECK ((len([Fax])>(0))) 
GO 

ALTER TABLE [dbo].[Supplier_Master] CHECK CONSTRAINT [SSMA_CC$Supplier_Master$Fax$disallow_zero_length] 
GO 

ALTER TABLE [dbo].[Supplier_Master] WITH NOCHECK ADD CONSTRAINT [SSMA_CC$Supplier_Master$Phone$disallow_zero_length] CHECK ((len([Phone])>(0))) 
GO 

ALTER TABLE [dbo].[Supplier_Master] CHECK CONSTRAINT [SSMA_CC$Supplier_Master$Phone$disallow_zero_length] 
GO 

ALTER TABLE [dbo].[Supplier_Master] WITH NOCHECK ADD CONSTRAINT [SSMA_CC$Supplier_Master$Salutation$disallow_zero_length] CHECK ((len([Salutation])>(0))) 
GO 

ALTER TABLE [dbo].[Supplier_Master] CHECK CONSTRAINT [SSMA_CC$Supplier_Master$Salutation$disallow_zero_length] 
GO 

ALTER TABLE [dbo].[Supplier_Master] WITH NOCHECK ADD CONSTRAINT [SSMA_CC$Supplier_Master$State$disallow_zero_length] CHECK ((len([State])>(0))) 
GO 

ALTER TABLE [dbo].[Supplier_Master] CHECK CONSTRAINT [SSMA_CC$Supplier_Master$State$disallow_zero_length] 
GO 

ALTER TABLE [dbo].[Supplier_Master] WITH NOCHECK ADD CONSTRAINT [SSMA_CC$Supplier_Master$Supplier_Code$disallow_zero_length] CHECK ((len([Supplier_Code])>(0))) 
GO 

ALTER TABLE [dbo].[Supplier_Master] CHECK CONSTRAINT [SSMA_CC$Supplier_Master$Supplier_Code$disallow_zero_length] 
GO 

ALTER TABLE [dbo].[Supplier_Master] WITH NOCHECK ADD CONSTRAINT [SSMA_CC$Supplier_Master$Supplier_Master_Name$disallow_zero_length] CHECK ((len([Supplier_Master_Name])>(0))) 
GO 

ALTER TABLE [dbo].[Supplier_Master] CHECK CONSTRAINT [SSMA_CC$Supplier_Master$Supplier_Master_Name$disallow_zero_length] 
GO 

ALTER TABLE [dbo].[Supplier_Master] WITH NOCHECK ADD CONSTRAINT [SSMA_CC$Supplier_Master$SupType$disallow_zero_length] CHECK ((len([SupType])>(0))) 
GO 

ALTER TABLE [dbo].[Supplier_Master] CHECK CONSTRAINT [SSMA_CC$Supplier_Master$SupType$disallow_zero_length] 
GO 

ALTER TABLE [dbo].[Supplier_Master] WITH NOCHECK ADD CONSTRAINT [SSMA_CC$Supplier_Master$User1$disallow_zero_length] CHECK ((len([User1])>(0))) 
GO 

ALTER TABLE [dbo].[Supplier_Master] CHECK CONSTRAINT [SSMA_CC$Supplier_Master$User1$disallow_zero_length] 
GO 

ALTER TABLE [dbo].[Supplier_Master] WITH NOCHECK ADD CONSTRAINT [SSMA_CC$Supplier_Master$User2$disallow_zero_length] CHECK ((len([User2])>(0))) 
GO 

ALTER TABLE [dbo].[Supplier_Master] CHECK CONSTRAINT [SSMA_CC$Supplier_Master$User2$disallow_zero_length] 
GO 

ALTER TABLE [dbo].[Supplier_Master] WITH NOCHECK ADD CONSTRAINT [SSMA_CC$Supplier_Master$Zip$disallow_zero_length] CHECK ((len([Zip])>(0))) 
GO 

ALTER TABLE [dbo].[Supplier_Master] CHECK CONSTRAINT [SSMA_CC$Supplier_Master$Zip$disallow_zero_length] 
GO 

ALTER TABLE [dbo].[Supplier_Master] ADD DEFAULT ((0)) FOR [Enabled] 
GO 

-Code tblSupplierInfo zu schaffen, in instkeeper_test:

-Code Supplier_Master Tabelle in gtdata_test erstellen

USE [instkeeper_test] 
GO 

/****** Object: Table [dbo].[tblSupplierInfo] Script Date: 05/27/2009 15:57:30 ******/ 
SET ANSI_NULLS ON 
GO 

SET QUOTED_IDENTIFIER ON 
GO 

CREATE TABLE [dbo].[tblSupplierInfo](
    [strSupplierID] [nvarchar](50) NOT NULL, 
    [bolSupAltShipAddyRep] [bit] NULL, 
    [bolSupAltShipAddyCal] [bit] NULL, 
    [bolSupInsistNet30] [bit] NULL, 
    [bolRMARequireRepair] [bit] NULL, 
    [bolRMARequireCalibration] [bit] NULL, 
    [bolSupShipOrCourier] [bit] NULL, 
    [bolSupRequireMSDS] [bit] NULL, 
    [bolSupBlanketPO] [bit] NULL, 
    [bolSupRequirePricing] [bit] NULL, 
    [bolSupBlankPricing] [bit] NULL, 
    [bolSupFaxPOSend] [bit] NULL, 
    [bolAdditionalPaperworkRepair] [bit] NULL, 
    [bolAdditionalPaperworkCalibration] [bit] NULL, 
    [strRMARepairWordage] [nvarchar](100) NULL, 
    [strRMACalibrationWordage] [nvarchar](100) NULL, 
    [intBlanketPO] [int] NULL, 
    [bolUseFedExNumber] [bit] NULL, 
    [strFedExNumber] [nvarchar](150) NULL, 
    [bolUseUPSNumber] [bit] NULL, 
    [strUPSNumber] [nvarchar](150) NULL, 
    [bolSupA2LAAccredited] [bit] NULL, 
    [bolSupFreightAllow] [bit] NULL, 
    [bolSupFreightOnly] [bit] NULL, 
    [bolSupUseMiscNum] [bit] NULL, 
    [strSupMiscFreightNum] [nvarchar](150) NULL, 
CONSTRAINT [tblSupplierInfo$PrimaryKey] PRIMARY KEY CLUSTERED 
(
    [strSupplierID] 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 

-Code tblSupplierNote in instkeeper_test zu erstellen:

USE [instkeeper_test] 
GO 

/****** Object: Table [dbo].[tblSupplierNote] Script Date: 06/01/2009 12:34:28 ******/ 
SET ANSI_NULLS ON 
GO 

SET QUOTED_IDENTIFIER ON 
GO 

CREATE TABLE [dbo].[tblSupplierNote](
    [intSupNoteID] [int] IDENTITY(1,1) NOT NULL, 
    [strSupplierID] [nvarchar](50) NULL, 
    [datDateNoteEntered] [datetime] NULL, 
    [datTimeNoteEntered] [datetime] NULL, 
    [strNoteBy] [nvarchar](255) NULL, 
    [memSupNote] [nvarchar](max) NULL, 
CONSTRAINT [tblSupplierNote$PrimaryKey] PRIMARY KEY CLUSTERED 
(
    [intSupNoteID] 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].[tblSupplierNote] WITH CHECK ADD CONSTRAINT [tblSupplierNote$tblSupplierInfotblSupplierNote] FOREIGN KEY([strSupplierID]) 
REFERENCES [dbo].[tblSupplierInfo] ([strSupplierID]) 
ON UPDATE CASCADE 
ON DELETE CASCADE 
GO 

ALTER TABLE [dbo].[tblSupplierNote] CHECK CONSTRAINT [tblSupplierNote$tblSupplierInfotblSupplierNote] 
GO 

Nur zur Übersicht - jede Tabelle, die ich in die Anwendung, die ich mit dem ersten DSN entwickeln, bin Lese/Schreib-fähig, Datensätze können erstellt, entfernt und aktualisiert werden, ohne jedes Problem. Mit dem zweiten DSN kann jede Tabelle, die ich in die Anwendung hineinziehe, auf ONCE geschrieben werden. Alle weiteren Änderungen gehen verloren, und ein Dialogfeld Schreibkonflikt wird immer dann angezeigt, wenn Daten in der Tabelle in der Datenblattansicht aktualisiert werden.

Software Ich benutze:

  • Microsoft Access 2003
  • SQL Server Express 2008
  • Windows XP Professional SP3

- 06/03/2009 @ 1307 Stunden Bearbeitet - -

Ich fand heraus, dass ein seltsames Problem auftaucht, wenn Sie Ja/Nein-Kontrollkästchen und SQL Server wi verwenden th Zugang. Anscheinend wird Access NULL als Nein interpretieren - den Wert ändern, aber SQL Server wird NULL nicht als ein Nein in einem Bit-Feld interpretieren (was Ja/Nein in Konvertierung umgewandelt wird), so dass es einen Schreibkonfliktfehler auslöst, wenn ein Wert nicht ist erforderlich und ist NULL. Die Lösung bestand darin, die Tabelle neu zu gestalten, so dass ein Wert erforderlich war und dass ein Standardwert für JEDES ehemalige Ja/Nein-Kontrollkästchen zugewiesen wurde. Dies löste die mysteriösen Schreibkonfliktnachrichten und erlaubte Änderungen an den Datensätzen, sobald sie erstellt wurden.

Antwort

2

verwenden Es gibt einen Unterschied zwischen dem, wie Zugriffsgriffe Ja/Nein-Option Werte und SQL Server. Beim Übersetzen von Ja/Nein-Booleschen aus Zugriff auf SQL Server müssen Sie daran denken, einen Standardstatus zu definieren und ihn als Antwort zu definieren. Andernfalls erhalten Sie jedes Mal Schreibkonflikte, und es wird verhindert, dass der Datensatz mit Ihren Änderungen gespeichert wird, sobald die Anfangswerte festgelegt wurden.

1

Haben Sie versucht, Ihre Tabellenverknüpfungen zu löschen und neu zu erstellen? Änderungen an den Tabellen/Sichten, mit denen Sie eine Verknüpfung herstellen, können dazu führen, dass sie schreibgeschützt werden. Es gibt keine Möglichkeit, sie zu korrigieren, außer sie zu löschen und neu zu erstellen.

Auch verknüpfe ich den DSN verwenden, aber dann Doug Steele's code to convert them to DNS-less connection strings.

+0

Ich fand die Antwort - ich werde es in dem Post oben notieren. Danke für die neuen Dinge zu versuchen, aber leider - es war nicht Teil der Lösung. Es stellte sich heraus, dass es etwas verworren ist, wie Access mit Ja/Nein-Kontrollkästchen und NULL-Werten in diesen Werten reagiert, wenn sie sich auf SQL Server beziehen. –

1

Ich hatte ähnliche "Write Conflict" mit Access-Front-End zu SQL Server, wenn Datensätze Spalte (n) NULL-Bit-Datentyp enthalten, die Ihre Tabelle enthält, auch wenn Sie diese Spalten nicht aktualisieren. Das Festlegen von Bit-Datentypspalten auf den Standardwert 0 und das Aktualisieren vorhandener Datensätze mit Bit-Datentypspalten von NULL auf 0 wurde für mich korrigiert.

Verwandte Themen