Как я могу исправить эту ошибку Access 2003? Автоматический ввод данных - PullRequest
2 голосов
/ 21 декабря 2011

У меня странная ошибка ввода данных в 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]

Как видно из определения этой таблицы, в этом нет ничего особенного.Проблема, с которой я сталкиваюсь, связана со связанной таблицей данных в базе данных MS Access 2003, которая через ODBC связывается с этой таблицей.

После определения и создания таблицы данных в SQL Server я открыл свою рабочую базу данных Access и связался с новой таблицей.Мне нужно вручную создать записи, которые принадлежат этой таблице.Однако, когда я начал добавлять строки данных, я заметил, что, когда я вкладывал из LargerTextField в новую строку, LargerTextField по умолчанию устанавливался на '2', хотя я ничего не вводил, ниопределил значение по умолчанию для поля?!

Изначально мне нужно, чтобы это поле было Null.Я вернусь позже и с помощью процедуры обновления заполню данные.Но почему MS Access по умолчанию устанавливает значение в моем поле, даже если схема для таблицы явно не определяет его?Кто-нибудь видел это или есть какие-либо подсказки, почему это может произойти?

РЕДАКТИРОВАТЬ

Одна быстрая коррекция, как только я вкладываю в LargerTextField, значение по умолчаниюна «2», не когда я выхожу.Небольшая небольшая разница, но, возможно, важная.

В качестве теста я также создал новую, свежую базу данных MS, связанную таблицу.У меня точно такая же проблема.Я предполагаю, что это может быть проблемой либо с MS SQL Server, либо, возможно, с ODBC.

Ответы [ 2 ]

2 голосов
/ 21 декабря 2011

Ух, проблема решена. Это не ошибка, но это было не то поведение, которое я желал или ожидал.

Это происходит из-за данных, которые я вручную вводю в поля Integer1 и Integer2. Я вручную ввожу 0 в качестве значения Integer1 и 1 в Integer2. Я никогда не видел, чтобы Access автоматически принимал мои данные, но похоже, что он распознает данные, которые вводятся последовательно.

В качестве теста я ввел запись с Integer1, установленным на 1 и Integer2, установленным на 2. Конечно, когда я вкладывал в LargerTextField, значение 3 заполнялось автоматически.

Я ненавижу, что это была проблема из-за невежества пользователей, но, если честно, за последние 10 с лишним лет использования MS Access я не могу вспомнить, даже когда видел такое поведение. Я почти предпочел бы удалить этот вопрос, чтобы сохранить лицо, но так как он застал меня врасплох, и я опытный пользователь, я мог бы также оставить его в архиве StackExchange для других, кто может иметь такой же опыт. : /

1 голос
/ 21 декабря 2011

В качестве эксперимента запустите совершенно новую БД Access и подключитесь к этой таблице, чтобы проверить, действуете ли вы так же.Я подозреваю, что эта БД Access была подключена к таблице, подобной этой, в прошлом и имела этот набор по умолчанию.У доступа есть проблемы, забывая иногда:)

...