2016-07-02 19 views
1

Unmittelbar nachdem ich einen neuen Datensatz in eine SQL-verknüpfte Tabelle von meinem Access 2016-Front-End hinzugefügt habe, wird eine ODBC-Fehlermeldung angezeigt und alle Daten in der Tabelle werden zu #Name?Warum schlägt mein ODBC sofort nach dem Hinzufügen eines neuen Datensatzes fehl?

Dies ist eine replizierte Zusammenführungsdatenbank.

Der Datensatz wird erfolgreich eingefügt, bevor der Fehler, ich kann es sehen, nachdem ich schließe und öffne die Tabelle. Vorhandene Datensätze können ebenfalls bearbeitet und gelöscht werden. Das einzige Problem ist, dass das ODBC nach dem Hinzufügen eines neuen Datensatzes mit einem ungültigen Cast Specification (# 0) Fehler gelöscht wird. Es macht keinen Sinn, dass ich ungültige Daten einfüge, weil der neue Datensatz mit allen intakten Daten genau so eingefügt wird, wie ich ihn eingegeben habe. Ich muss nur die Tabelle schließen und erneut öffnen, um die neuen Daten anzuzeigen.

Ich bin in der zweiten Woche damit beschäftigt und ich fühle mich wie ich alles versucht habe. Ich kann das System nicht jedes Mal einen Fehler erzeugen lassen, wenn ein neuer Datensatz in dieser spezifischen Tabelle hinzugefügt wird. Alle anderen Tabellen in der Datenbank sind in Ordnung.

Hier ist meine Tabellenlayout:

CREATE TABLE [dbo].[TrnRegistration](
    [fkClassSchedID] [int] NULL, 
    [fkCompanyID] [int] NULL, 
    [NumberUsers] [int] NULL, 
    [Notes] [nvarchar](max) NULL, 
    [Contact] [nvarchar](50) NULL, 
    [fkUserTypeID] [int] NULL, 
    [fkOrderTypeID] [int] NULL, 
    [OrderRef] [nvarchar](50) NULL, 
    [FloatClassID] [int] NULL, 
    [LocFrstID] [int] NULL, 
    [LocScndID] [int] NULL, 
    [SalesRep] [int] NULL, 
    [RegistrationID] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL, 
    [VerifDate] [bit] NOT NULL DEFAULT ((0)), 
    [rowguid] [uniqueidentifier] ROWGUIDCOL NOT NULL CONSTRAINT  [MSmerge_df_rowguid_8C3233BCD5FB4C7AA23281E8C482C778] DEFAULT (newsequentialid()), 
CONSTRAINT [TrnRegistration_PK] PRIMARY KEY NONCLUSTERED 
(
    [RegistrationID] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,  ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] 
+2

Ich bin mir nicht sicher, ob ich helfen kann, aber ich bin verwirrt, wenn der Fehler auftritt. Sie haben gesagt, dass der Datensatz einfügen in Ordnung ist, weil Sie den neuen Datensatz sehen können. Aber dann sagst du, wenn du den Fehler bekommst, ändert sich der eingefügte Datensatz in #Name? Und der Fehler passiert nach dem Einfügen. Wenn der Fehler nach dem Einfügen auftritt, wie können Sie bestätigen, dass die Einfügung in Ordnung war? Datensatz einfügen -> Fehler -> Datensatz hat #Name. Wo in diesem Fluss öffnen Sie den Tisch und der Einsatz sieht gut aus? Tritt der Fehler auf, nachdem Sie den neuen Datensatz angezeigt haben? – artm

+0

Verknüpfte ODBC-Tabellen in Access haben Probleme mit einigen Datentypen oder Spaltenkonfigurationen. Z.B. [Bit-Spalten, die NULL sein können] (http://stackoverflow.com/questions/4764508/nullable-bool-fields-in-ms-access-linked-tables), aber das scheint hier nicht das Problem zu sein. Meine Vermutung wäre die Spalte "ROWGUIDCOL". Welchen Datentyp zeigt Access in der Tabellenentwurfsansicht an? Haben Sie 'ROWGUIDCOL'-Spalten in anderen Tabellen, die funktionieren? – Andre

+0

Versuchen Sie, die Tabelle (n) mit dem Standard-SQL-Treiber neu zu verknüpfen, nicht mit dem nativen 10/11-Treiber. Momentan arbeitet der native 11-Treiber nicht am angegebenen Tisch - und ich bin nicht sicher warum. Der Standard-SQL-Standardtreiber scheint jedoch zu funktionieren. –

Antwort

0

Wenn ich in Ihrem erstellen Tabelle einfügen, dann mit nativer 11 Verknüpfung nicht funktioniert, aber die Standard-Standard-Treiber (die scheinen Sie zu verwenden) funktioniert . Da mein Test jedoch keine replizierte Datenbank ist, macht es Sinn, dass die für die Replikation verwendete Spalte das Problem darstellt.

Die einfache Lösung besteht darin, eine Ansicht zu erstellen, die die Replikationsspalte (rowGuid) auslässt. Sie verknüpfen dann diese Ansicht anstelle der Tabelle. Sie können natürlich nach dem Verknüpfen den originalen Tabellenlink löschen und dann die verknüpfte Tabelle mit dem SAME-Namen neu benennen, wie Sie ihn in Access verwendet haben - dieser Vorschlag erlaubt somit alle Formulare/Reports/code/SQL nach dem Original wie gewohnt zu arbeiten Tabellenname verwendet

So verwenden Sie eine Ansicht mit der einen Spalte ausgelassen, und die Verknüpfung mit dieser Ansicht von Access sollte dies zu arbeiten.