2016-07-02 8 views
1

直前に、Access 2016のフロントエンドからSQLリンクテーブルに新しいレコードを追加すると、ODBCエラーメッセージがポップアップし、テーブルのすべてのデータが#Nameに変わりますか?新しいレコードを追加した直後にODBCが失敗するのはなぜですか?

これは、マージレプリケートされたデータベースです。

エラーが発生する前にレコードが正常に挿入されると、テーブルを閉じて再度開いた後にレコードが表示されます。既存のレコードを編集して削除することもできます。唯一の問題は、新しいレコードが追加された後、ODBCがInvalid Cast Specification(#0)エラーでドロップされることです。私が無効なデータを入れているのは意味がありません。なぜなら、新しいレコードはすべてのデータがそのまま入力された状態で挿入されるからです。新しいデータを表示するには、テーブルを閉じてから再度開いてください。

私はこれを扱って2週間目ですが、私はすべてを試したように感じています。この特定のテーブルに新しいレコードが追加されるたびに、システムにエラーが発生することはありません。データベース内の他のテーブルはすべて正常です。ここで

は、私のテーブルレイアウトです:

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

私は助けることができるかどうかはわかりませんが、エラーが発生したときは混乱しています。あなたは新しいレコードを見ることができるので、レコードの挿入は問題ありません。しかし、エラーが発生したら、挿入されたレコードは#Nameに変わります。そしてエラーは挿入後に起こります。挿入後にエラーが発生した場合は、挿入が正常であることをどのように確認できますか?レコードを挿入 - >エラー - >レコードに#Nameがあります。その流れの中であなたはテーブルを開き、インサートはうまく見えますか?新しいレコードを表示した後、エラーが発生しますか? – artm

+0

AccessのリンクされたODBCテーブルには、一部のデータ型や列の設定に問題があります。例えば。 [ビット列はNULLにすることができます](http://stackoverflow.com/questions/4764508/nullable-bool-fields-in-ms-access-linked-tables)、しかし、ここでは問題にはならないようです。私の推測は 'ROWGUIDCOL'カラムでしょう。テーブルデザインビューでは、Accessではどのデータ型が表示されますか?他のテーブルに 'ROWGUIDCOL'カラムがありますか? – Andre

+0

ネイティブの10/11ドライバではなく、標準のSQLドライバを使用してテーブルを再リンクしてみてください。現在、ネイティブの11人のドライバーはあなたのテーブルでは動作しません。なぜ私はその理由がわかりません。しかし、標準のデフォルトのSQLドライバは、 –

答えて

0

私はあなたの作成し、テーブルに貼り付ける場合は、ネイティブの11とのリンクが機能していますが、デフォルトの標準ドライバ(あなたが使用しているように見える1)が作業を行うありません。しかし、私のテストはレプリケートされたデータベースではないので、レプリケーションに使用されるカラムが問題になります。

単純な解決策は、レプリケーション列(rowGuid)を除外するビューを作成することです。次に、テーブルの代わりにそのビューにリンクします。もちろん、元のテーブルのリンクを削除してリンクした後に、Accessで使用したのと同じ名前にリンクされたテーブルの名前を変更することができます - この提案は、すべてのフォーム/レポート/コード/ SQLが元の使用されるテーブル名。

したがって、1つの列が残っているビューを使用し、そのビューをAccessからリンクすると、これが機能するはずです。

関連する問題