как поменять код в аксесс
Как поменять код в аксесс
| Регистрация Здравствуйте. Здравствуйте. Способ есть конечно но не быстрый Добавление и изменение первичного ключа таблицы в AccessПервичный ключ — это поле или набор полей со значениями, которые являются уникальными для всей таблицы. Значения ключа могут использоваться для обозначения всех записей, при этом каждая запись имеет отдельное значение ключа. Каждая таблица может содержать только один первичный ключ. Access может автоматически создавать поле первичного ключа при создании таблицы. Вы также можете самостоятельно указать поля, которые нужно использовать в качестве первичного ключа. В этой статье объясняется, как и зачем использовать первичные ключи. Чтобы задать первичный ключ таблицы, откройте таблицу в режиме конструктора. Выберите нужное поле (или поля), а затем на ленте щелкните Ключевое поле. Примечание: Эта статья относится только к классическим базам данных Access. В веб-приложениях Access и веб-базах данных первичный ключ для новых таблиц назначается автоматически. Несмотря на то что автоматические первичные ключи можно менять, делать это не рекомендуется. В этой статьеОбщие сведения о первичных ключах в AccessИспользуя поля первичных ключей, Access быстро связывает данные из нескольких таблиц и объединяет их понятным образом. Вы можете добавить поля первичных ключей в другие таблицы, чтобы ссылаться на таблицу, которая является источником первичного ключа. В других таблицах поля называются внешними ключами. Например, поле «ИД клиента» в таблице «Клиенты» также может отображаться в таблице «Заказы». В таблице «Клиенты» оно является первичным ключом. В таблице «Заказы» оно называется внешним ключом. Проще говоря, внешний ключ — это первичный ключ другой таблицы. Дополнительные сведения см. в статье Основные сведения о создании баз данных. При переносе существующих данных в базу данных в них уже может существовать поле, которое можно использовать как первичный ключ. Часто в роли первичного ключа таблицы выступает уникальный идентификационный номер, например порядковый или инвентарный номер или код. Например, в таблице «Клиенты» для каждого клиента может быть указан уникальный код клиента. Поле кода клиента является первичным ключом. Для первичного ключа автоматически создается индекс, ускоряющий выполнение запросов и операций. Кроме того, приложение Access проверяет наличие и уникальность значений в поле первичного ключа. При создании таблицы в режиме таблицы Access автоматически создает первичный ключ с именем «Код» и типом данных «Счетчик». Создание приемлемого первичного ключаЧтобы правильно выбрать первичный ключ, следует учитывать несколько характеристик. Ключ должен однозначно определять каждую строку. В нем не должно быть пустых или отсутствующих значений — он всегда содержит значение. Ключ крайне редко изменяется (в идеале — никогда). Если не удается определить приемлемый ключ, создайте для него поле с типом данных «Счетчик». Поле «Счетчик» заполняется автоматически созданными значениями при первом сохранении каждой записи. Таким образом, поле «Счетчик» соответствует всем трем характеристикам приемлемого первичного ключа. Дополнительные сведения о добавлении поля «Счетчик» см. в статье Добавление поля счетчика в качестве первичного ключа. Поле с типом данных «Счетчик» является хорошим первичным ключом. Примеры неудачных первичных ключейЛюбое поле, не имеющее одной или нескольких характеристик подходящего первичного ключа, не следует выбирать в качестве первичного ключа. Ниже представлено несколько примеров полей, которые не годятся на роль первичного ключа в таблице «Контакты», и пояснения, почему их не следует использовать. Неподходящий первичный ключ Может быть не уникальным и может изменяться Джентльменский набор разработчика AccessЗа время работы разработчиком Access набралась куча полезностей, которую считаю своим долгом выложить на Хабр. Многие из этих сниппетов находятся в сети, а некоторые находятся с трудом или безнадежно затеряны. 1. При работе с Access во время выполнения запроса возникают предупреждающие сообщения. Они довольно полезны во время отладки приложения, но для пользователей, как правило, не нужны. Отключить/включить их можно с помощью небольшого кода VBA: Указав в виде параметра 0 для отключения и 1 для включения. 3. Не знаю, как бы я работал (наверное, работал бы так же, но гораздо медленнее), если бы не создал себе форму с поиском текста в содержимом запросов или форм. Очень часто необходимо производить какой-то рефакторинг или определять область применения таблицы или поля. Для поиска по запросам поможет форма с кодом, который выполняет поиск в тексте запросов: Для поиска по формам код немного объемнее: 4. Для того, чтобы сделать нашу работу чуть более солидной с точки зрения программирования и для возможности поиска ошибок при работе в режиме production на рабочей базе данных очень желательно добавить модуль VBA (tracing модуль) для записи происходящих событий в текстовый файл лога. Простая функция записи в текстовый файл будет очень полезна при отладке. 5. Этот код (из пункта 4) вполне можно вынести в отдельный файл базы данных Access и добавить во все существующие базы данных через References/Ссылки редактора VBA. Если у вас имеется несколько файлов баз данных Access, то любой повторяющийся код можно вынести в отдельный файл. Единственное изменение, которое может быть необходимо сделать — в случае если в коде используется объект CurrentDb, то заменить его на CodeDb, дабы обращение шло к объектам той базы, которая используется в качестве хранителя общего кода. 6. Зачастую в запросах указывают в качестве параметра значение какого-либо поля открытой формы. Например, таким образом: Но иногда необходимо указать параметр непосредственно в самом запросе. Сделать это можно так: И далее из кода Access задать эти параметры и выполнить запрос: Альтернативой может быть создание модуля VBA и добавление в него глобальной переменной, а также функции, возвращающей эту переменную. Перед запуском запроса необходимо задать значение глобальной переменной (можно задать при открытии основной формы): И в самом запросе указать параметром название возвращающей значение функции: 6.1 Этот способ получения параметра запроса можно использовать для частичного ограничения доступа к информации таблицы (в случае использования рабочей группы). При загрузке формы в зависимости от текущего пользователя установим значение глобальной переменной: Далее установим запрет на просмотр и изменение таблицы demotable, а на запрос установим разрешение. Но так как запрос у нас использует таблицу, на которую нет прав, то данных он нам не вернет. Для того, чтобы он вернул данные необходимо к sql запроса добавить в конце 7. Для того, чтобы открыть форму из кода используется код: В качестве «WhereCondition» можно указать условие, на какой записи формы необходимо её открыть (в случае, если форма привязана к данным). Указав, например, «ZakazID=56325», можно открыть форму именно со значением данных ZakazID равным 56325. В качестве значения «OpenArgs» можно указать какие-либо параметры, которые на открываемой форме можно будет считать 8. Многие забывают, что Access работает не только таблицами из файлов mdb/accdb, но и с таблицами других баз данных. Для экспорта уже существующих таблиц есть бесплатная утилита SQL Server Migration Assistant, хотя можно воспользоваться и встроенным функционалом или найти стороннее решение. И напоследок небольшой хинт из разряда «Это знает каждый ребенок, но я вот этого не знал…»: Знаете ли вы, что для того, чтобы при открытии файла Access не срабатывали макросы и не открывалась форма по умолчанию, необходимо держать нажатой клавишу Shift? Изменение свойств запросов в Microsoft AccessИсходный номер КБ: 304356 СводкаВ этой статье показано, как изменить свойства запросов в Microsoft Access. Эта информация полезна, если вы хотите выполнить такие задачи, как: Дополнительные сведенияСвойства запросаЧтобы просмотреть все свойства запроса, в представлении Проектирование любого запроса щелкните правой кнопкой мыши в пустом пространстве в окне проектирования запроса, а затем щелкните Свойства в меню ярлыка. В некоторых версиях Access лист свойств откроется и по умолчанию будет открываться в «Свойства списка полей». Чтобы отобразить свойства запроса, щелкните слева в пустом пространстве в окне проектирования запроса. В следующей таблице перечислены все свойства запроса и объясняется, для чего используется каждый из них.
Свойства списка полейЧтобы просмотреть свойства списка полей, в представлении Проектирование любого запроса щелкните правой кнопкой мыши в любой ячейке в сетке проектирования запроса, а затем щелкните Свойства в меню ярлыка.
В Access 2000 недоступны следующие два свойства: В Access 2007 для запросов были добавлены следующие два новых свойства: Сброс значения поля AutoNumber в AccessOffice 365 ProPlus переименован в Майкрософт 365 корпоративные приложения. Для получения дополнительной информации об этом изменении прочитайте этот блог. Исходный номер КБ: 812718 СводкаВ этой пошаговой статье описывается, как сбросить значение поля AutoNumber в Access. Значение поля AutoNumber в Access автоматически не сбрасывается при удалении некоторых строк или всех строк в таблице. Чтобы сбросить значение поля AutoNumber и обновить значение AutoNumber в справочной таблице, необходимо вручную выполнить некоторые задачи. Перед выполнением последующих действий необходимо выполнить базу данных. Сброс поля AutoNumber в одной таблицеЕсли ваша таблица не имеет связей с другими таблицами, используйте метод 1 или метод 2 для сброса значения поля AutoNumber. Метод 1. Перемещение данных в новую таблицу с помощью Make-Table запросаВы можете сбросить значение поля AutoNumber с помощью запроса Make-Table для создания новой таблицы с одинаковыми данными и добавления нового поля AutoNumber. Доступ к версиям 2003 и более ранних версий Чтобы сделать это в Access 2003 или в более ранней версии, выполните следующие действия: Доступ к версиям 2007 и более поздних версий Для этого в Microsoft Office Access 2007 или в более поздней версии выполните следующие действия: Метод 2. Создание новой таблицы и перемещение данных в нее с помощью запроса приложенияСтруктуру существующей таблицы можно скопировать в виде новой таблицы. Затем можно добавить данные в новую таблицу и добавить новое поле AutoNumber. Доступ к версиям 2003 и более ранних версий Для этого в Microsoft Office Access 2003 и в более ранних версиях выполните следующие действия: Удаление поля AutoNumber из основной таблицы. Обратите внимание на имя поля AutoNumber. Скопируйте структуру основной таблицы и создайте новую таблицу. Щелкните Запросы на левой области. Щелкните Создать запрос в представлении Design на правой области. В диалоговом окне Show Table выберите главную таблицу. Щелкните Добавить и нажмите кнопку Закрыть. Чтобы выбрать поля, дважды щелкните необходимые поля. Сделайте это для всех полей, за исключением поля AutoNumber в представлении таблицы главной таблицы. В меню Запрос нажмите кнопку Append Query. Это меняет тип запроса. В списке Имя таблицы выберите новую таблицу, созданную на шаге 2. Нажмите кнопку OK. В меню Запрос нажмите кнопку Выполнить. Когда вам будет предложено сообщение «Вы вот-вот вставьте #row(s) в новую таблицу», нажмите кнопку Да, чтобы вставить строки. В меню Файл нажмите кнопку Закрыть. Нажмите кнопку Нет, чтобы закрыть окно AppendQuery. Щелкните Таблицы на левой области. Щелкните правой кнопкой мыши новую таблицу и нажмите кнопку Просмотр дизайна. В представлении Design для таблицы добавьте поле AutoNumber с тем же именем поля, которое удалено на шаге 1. Добавьте это поле AutoNumber в новую таблицу и сохраните таблицу. Закрой окно представления Design. Переименуй главную таблицу, а затем переименуй новую таблицу в соответствие с именем главной таблицы. Доступ к версиям 2007 и более поздних версий Для этого в Microsoft Office Access 2007 или в более поздней версии выполните следующие действия: Удаление поля AutoNumber из основной таблицы. Обратите внимание на имя поля AutoNumber. Скопируйте структуру основной таблицы и создайте новую таблицу. Щелкните вкладку Создать, а затем нажмите кнопку Дизайн запроса в другой группе. В диалоговом окне Show Table выберите главную таблицу. Нажмите Добавить, а затем — Закрыть. Чтобы выбрать поля, дважды щелкните необходимые поля. Сделайте это для всех полей, за исключением поля AutoNumber в представлении таблицы главной таблицы. На вкладке Дизайн щелкните Приложение в группе Тип запроса. Это меняет тип запроса. Я список имен таблицы, выберите новую таблицу, созданную на шаге 2, а затем нажмите кнопку ОК. На вкладке Дизайн нажмите кнопку Выполнить в группе Результаты. Когда вам будет предложено сообщение «Вы вот-вот вставьте #row(s) в новую таблицу», нажмите кнопку Да, чтобы вставить строки. Щелкните правой кнопкой мыши новую таблицу и нажмите кнопку Просмотр дизайна. В представлении Design для таблицы добавьте поле AutoNumber с тем же именем поля, которое удалено в шаге 1. Добавьте это поле AutoNumber в новую таблицу и сохраните таблицу. Закрой окно представления Design. Переименуй главную таблицу, а затем переименуй новую таблицу в соответствие с именем главной таблицы. Сброс поля AutoNumber в таблице со ссылками на таблицыТаблица со ссылками имеет отношение к одной или нескольких таблицам. Ниже описано, как сбросить поле AutoNumber для таблицы с одной ссылкой. Если в таблице имеется несколько ссылок, необходимо следовать этим шагам для каждой ссылаемой таблицы. Удалите связь между таблицами. Установите поле AutoNumber основной таблицы для типа данных Номер, а затем удалите основной ключ. Создайте новое поле типа данных AutoNumber в главной таблице и сохраните таблицу. Создайте новое поле типа данных номеров в таблице ссылок, а затем сохраните таблицу. Чтобы создать запрос обновления, обновляющий новое поле в таблице ссылок на новое поле AutoNumber основной таблицы, выполните следующие действия. Доступ к версиям 2003 и более ранних версий Это создает новый запрос. Это создает соединение между таблицами, основанными на исходных полях ссылок. Доступ к версиям 2007 и более поздних версий Это создает соединение между таблицами, основанными на исходных полях ссылок. Это меняет тип запроса. Удаление исходного поля ссылок из основной таблицы и со ссылкой. Revert the name of the new AutoNumber field to the original name. Повторно создайте основной ключ и связь между таблицами. Эта процедура сбрасывает поле AutoNumber и обновляет таблицу ссылок с помощью правильных ключевых значений.
|