MS Access で奇妙なデータ入力バグが発生しています。なぜこれが起こっているのか、そしてそれを修正する方法について、誰かが少しでも光を当てるのを手伝ってくれることを願っています.
SQL Server データベースで定義されたデータ テーブルがあります。フィールド名のみを変更した定義を以下に示します。
CREATE TABLE [dbo].[MyTable](
[ID] [int] IDENTITY(1,1) NOT NULL,
[TextField1] [nvarchar](10) NOT NULL,
[TextField2] [nvarchar](50) NOT NULL,
[Integer1] [int] NOT NULL CONSTRAINT [DF_MyTable_Integer1] DEFAULT (0),
[Integer2] [int] NOT NULL,
[LargerTextField] [nvarchar](300) NULL
) ON [PRIMARY]
このテーブルの定義からわかるように、特別なことは何もありません。私が抱えている問題は、ODBC を介してこのテーブルにリンクする MS Access 2003 データベースのリンクされたデータ テーブルにあります。
SQL Server でデータ テーブルを定義して作成した後、作業中の Access データベースを開き、新しいテーブルにリンクしました。このテーブルに属するレコードを手動で作成する必要があります。しかし、データ行を追加し始めたとき、タブでLargerTextField
新しい行に移動すると、フィールドに何も入力しておらず、デフォルト値も定義していないにもかかわらず、LargerTextField
がデフォルトで ' ' に設定されていることに気付きました。2
最初に、このフィールドを にする必要がありますNull
。後で戻ってきて、更新ルーチンでデータを入力します。しかし、テーブルのスキーマでは明確に値が定義されていないにもかかわらず、なぜ MS Access はフィールドのデフォルト値を設定するのでしょうか? 誰かがこれを見たことがありますか、またはなぜこれが起こるのか手がかりを持っていますか?
編集
1 つの簡単な修正として、タブで に移動するとすぐにLargerTextField
、値がデフォルトで ' 2
' になり、タブ アウトしたときではありません。小さくて微妙な違いですが、おそらく重要です。
テストとして、テーブルにリンクされた新しい新しい MS データベースも作成しました。私はまったく同じ問題を抱えています。これは、MS SQL Server か、場合によっては ODBC のいずれかに問題がある可能性があると思います。