2014-01-07 3 views
0

НАЗАД END - SQL ServerНевозможно создать новую запись через форму ACCESS

FRONT END - Access 2010 (формат 2000)

система хранит и извлекает данные о технических документов. В целом, есть три таблицы A, B и C, каждая из которых поддерживает данные о документе другого типа.

Передняя часть ACCESS предоставляет форму поиска и форму ввода/редактирования данных (привязана к базовой таблице) для каждого типа документа. Во всех трех типах документов при добавлении новой записи пользователь откроет форму поиска и нажмите кнопку «Добавить». Это открывает/Редактировать форму ввода данных и в случае Form_Load является линия

DoCmd.GoToRecord , , acNewRec 

Когда запись данных завершена, пользователь нажимает на кнопку «Закрыть», которая просто запускает код

DoCmd.Close 

Как я уже сказал, дизайн и код объектов, относящихся к трем типам документов, идентичны для всех целей и целей. Однако, хотя для таблиц A и B процесс добавления новой записи является бесшовной и чрезвычайно быстрой, для таблицы C оказалось невозможным добавить новую запись через пользовательский интерфейс ACCESS. Форма редактирования откроется правильно, чтобы добавить данные, но когда пользователь нажимает кнопку «Закрыть», форма зависает и в конечном итоге возвращается в форму поиска без добавления новой записи.

Можно обойти пользовательский интерфейс, открыв ACCESS, удерживая клавишу SHIFT, открывая связанную таблицу и добавляя новые записи напрямую. Хотя это приемлемо как временная мера, в долгосрочной перспективе это неприемлемо. Следует отметить, что системе исполняется около десяти лет, и она работает совершенно правильно примерно в течение девяти лет (кроме незначительных сбоев, перемещающихся между различными версиями ACCESS).

К сожалению, эта система принадлежит и управляется крупной глобальной корпорацией, и для меня, субподрядного поставщика, очень сложно получить доступ к ящику SQL Server для запуска диагностики (SQL Profiler будет хорошей отправной точкой). Я чувствую, что есть тонкая разница в модели разрешений для этой конкретной таблицы, но я не знаю.

Ситуация осложняется еще тем, что у меня есть копия системы в моей работе, и я не могу воспроизвести проблему. Разумеется, между этими двумя архитектурами должны быть тонкие различия (например, я не знаю наверняка, в какой версии SQL Server он работает, но я считаю, что это 2000, и я не знаю, как полностью он исправлен или обновлено), но факты заключаются в том, что для одной конкретной таблицы, связанной с одной конкретной формой, невозможно добавить записи, тогда как для других таблиц такой проблемы нет.

Я был бы признателен, если у кого-нибудь возникнут какие-либо идеи о том, как начать диагностировать это или даже решить его (если кто-то сталкивался с той же проблемой раньше).

Большое спасибо

Эдвард

+1

Эдвард, почему так трудно получить доступ к SQL Server? Есть нет возможности использовать удаленный сеанс для доступа к серверу. Если они хотят, чтобы вы решили проблему, им нужно как-то помочь вам? – Jaques

+0

Hi Jaques - есть соображения безопасности, связанные с MOD и Министерством обороны США, которые ограничить доступ (я просил удаленного доступа много раз, но нет никаких шансов), не говоря уже о самом обструктивном и сложном DBA, с которым я когда-либо сталкивался! – Edwardo

+0

Не могли бы вы сделать форму несвязанной, а затем добавить запись через Операция «INSERT» в коде, вызванная кнопкой «Закрыть»? (Не принимать во внимание мой «ответ», это означалось как комментарий!) –

ответ

1

Как правило, когда вы столкнулись с проблемами, чтобы обновить таблицу, то это, как правило, предполагает, что таблица не имеет ПК или форму запроса, основанный на делает не подвергается ПК.

Следующее, что я хотел бы убедиться, что стол имеет столбец временной отметки, поскольку Access использует это для проверки изменений записи за кулисами.

Вперед Я бы проверил блокировку по умолчанию для формы (хотя эти настройки обычно не влияют на odbc, их следует проверить).

Далее следует проверить, есть ли в таблице столбец «бит» (true/false) и убедиться, что значения по умолчанию для таких элементов управления установлены на стороне SQL SERVER (они должны по умолчанию равны 0). Эта проблема с нулевыми битами приведет к сбою обновлений, если они не будут устранены.

Я также хотел бы проверить, соответствует ли форма, основанная на запросе, или если источник данных установлен непосредственно в таблицу. Как уже отмечалось, идентификатор номерного знака PK этой таблицы в запросе должен быть значением INTEGER sql side - большой int НЕ поддерживается.

Таким образом, проверьте значения по умолчанию (как в SQL таблицы и формы (эти элементы управления), чтобы гарантировать, ничего установить, что бы предотвратить обновление.

+0

Спасибо Альберту за ваш обычный ученой ответ. Я могу подтвердить, что есть ПК, что это целое число. Форма привязана к таблице, а не к запросу. Существует бит столбца, который не имеет значения по умолчанию, и нет столбца временной метки. Тем не менее, мой инстинкт заключается в том, что это не является причиной проблемы, потому что а) система работала правильно в течение примерно 8 лет с нынешним дизайном и б) она работает правильно в моей сети с этими «ошибками». Тем не менее, я рассмотрю эти проблемы и вернусь, если проблема не будет отсортирована. – Edwardo

Смежные вопросы