2

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 のいずれかに問題がある可能性があると思います。

4

2 に答える 2

2

うわー、問題は解決しました。これはバグではありませんが、私が望んでいた、または期待した動作ではありませんでした。

Integer1この動作は、フィールドとに手動で入力しているデータが原因で発生していますInteger2。と0の値としてを手動で入力しています。Accessがデータ入力を自動的に想定するのを見たことがありませんが、順番に入力されたデータを認識しているようです。 Integer11Integer2

テストとして、にをInteger1設定してレコードを入力しました。案の定、タブを押したときに、の値が自動入力されました。1Integer22LargerTextField3

これがユーザーの無知のために問題になったのは嫌いですが、正直なところ、過去10年以上のMS Accessの使用では、この動作を一度も見たことがありません。私はほとんど顔を救うためにこの質問を削除したいと思いますが、それは私を不意を突かれて、経験豊富なユーザーなので、同じ経験を持つかもしれない他の人のためにStackExchangeアーカイブに残したほうがいいでしょう。:/

于 2011-12-21T18:54:48.497 に答える
1

実験として、まったく新しい Access DB を起動し、このテーブルに接続して、同じ動作が得られるかどうかを確認します。この Access DB は過去にこのようなテーブルに接続されていて、そのデフォルトが設定されていたと思われます。アクセスは時々忘れるのに苦労します:)

于 2011-12-21T18:30:04.577 に答える