Как сделать пользователей в access?

GEEKon » Инструкции » Создание базы данных в MS Access 2007: пошаговая инструкция

В современном мире нужны инструменты, которые бы позволяли хранить, систематизировать и обрабатывать большие объемы информации, с которыми сложно работать в Excel или Word. Подобные хранилища используются для разработки информационных сайтов, интернет-магазинов и бухгалтерских дополнений. Основными средствами, реализующими данный подход, являются MS SQL и MySQL. Продукт от Microsoft Office представляет собой упрощенную версию в функциональном плане и более понятную для неопытных пользователей. Давайте рассмотрим пошагово создание базы данных в Access 2007.

Описание MS Access

Microsoft Access 2007 – это система управления базами данных (СУБД), реализующая полноценный графический интерфейс пользователя, принцип создания сущностей и связей между ними, а также структурный язык запросов SQL. Единственный минус этой СУБД – невозможность работать в промышленных масштабах. Она не предназначена для хранения огромных объемов данных. Поэтому MS Access 2007 используется для небольших проектов и в личных некоммерческих целях.

Но прежде чем показывать пошагово создание БД, нужно ознакомиться с базовыми понятиями из теории баз данных.

Определения основных понятий

Без базовых знаний об элементах управления и объектах, использующихся при создании и конфигурации БД, нельзя успешно понять принцип и особенности настройки предметной области. Поэтому сейчас я постараюсь простым языком объяснить суть всех важных элементов. Итак, начнем:

  1. Предметная область – множество созданных таблиц в базе данных, которые связаны между собой с помощью первичных и вторичных ключей.
  2. Сущность – отдельная таблица базы данных.
  3. Атрибут – заголовок отдельного столбца в таблице.
  4. Кортеж – это строка, принимающая значение всех атрибутов.
  5. Первичный ключ – это уникальное значение (id), которое присваивается каждому кортежу.
  6. Вторичный ключ таблицы «Б» – это уникальное значение таблицы «А», использующееся в таблице «Б».
  7. SQL запрос – это специальное выражение, выполняющее определенное действие с базой данных: добавление, редактирование, удаление полей, создание выборок.

Теперь, когда в общих чертах есть представление о том, с чем мы будем работать, можно приступить к созданию БД.

Создание БД

Для наглядности всей теории создадим тренировочную базу данных «Студенты-Экзамены», которая будет содержать 2 таблицы: «Студенты» и «Экзамены». Главным ключом будет поле «Номер зачетки», т.к. данный параметр является уникальным для каждого студента. Остальные поля предназначены для более полной информации об учащихся.

Итак, выполните следующее:

  1. Запустите MS Access 2007.
  2. Нажмите на кнопку «Новая база данных».
  3. В появившемся окне введите название БД и выберите «Создать».

Все, теперь осталось только создать, заполнить и связать таблицы. Переходите к следующему пункту.

Создание и заполнение таблиц

После успешного создания БД на экране появится пустая таблица. Для формирования ее структуры и заполнения выполните следующее:

  1. Нажмите ПКМ по вкладке «Таблица1» и выберите «Конструктор».
  2. Теперь начинайте заполнять названия полей и соответствующий им тип данных, который будет использоваться.

    Внимание! Первым полем принято устанавливать уникальное значение (первичный ключ). Для него предпочтительно числовое значение.

  1. После создания необходимых атрибутов сохраните таблицу и введите ее название.
  2. Снова нажмите ПКМ по вкладке с уже новым название и выберите «Режим таблицы».
  3. Заполните таблицу необходимыми значениями.

Совет! Для тонкой настройки формата данных перейдите на ленте во вкладку «Режим таблицы» и обратите внимание на блок «Форматирование и тип данных». Там можно кастомизировать формат отображаемых данных.

Создание и редактирование схем данных

Перед тем, как приступить к связыванию двух сущностей, по аналогии с предыдущим пунктом нужно создать и заполнить таблицу «Экзамены». Она имеет следующие атрибуты: «Номер зачетки», «Экзамен1», «Экзамен2», «Экзамен3».

Для выполнения запросов нужно связать наши таблицы. Иными словами, это некая зависимость, которая реализуется с помощью ключевых полей. Для этого нужно:

  1. Перейти во вкладку «Работа с базами данных».
  2. Нажать на кнопку «Схема данных».
  3. Если схема не была создана автоматически, нужно нажать ПКМ на пустой области и выбрать «Добавить таблицы».
  4. Выберите каждую из сущностей, поочередно нажимая кнопку «Добавить».
  5. Нажмите кнопку «ОК».

Конструктор должен автоматически создать связь, в зависимости от контекста. Если же этого не случилось, то:

  1. Перетащите общее поле из одной таблицы в другую.
  2. В появившемся окне выберите необходимы параметры и нажмите «ОК».
  3. Теперь в окне должны отобразиться миниатюры двух таблиц со связью (один к одному).

Выполнение запросов

Что же делать, если нам нужны студенты, которые учатся только в Москве? Да, в нашей БД только 6 человек, но что, если их будет 6000? Без дополнительных инструментов узнать это будет сложно.

Именно в этой ситуации к нам на помощь приходят SQL запросы, которые помогают изъять лишь необходимую информацию.

Виды запросов

SQL синтаксис реализует принцип CRUD (сокр. от англ. create, read, update, delete — «создать, прочесть, обновить, удалить»). Т.е. с помощью запросов вы сможете реализовать все эти функции.

На выборку

В этом случае в ход вступает принцип «прочесть». Например, нам нужно найти всех студентов, которые учатся в Харькове. Для этого нужно:

  1. Перейти во вкладку «Создание».
  2. Нажать кнопку «Конструктор запросов» в блоке «Другие».
  3. В новом окне нажмите на кнопку SQL.
  4. В текстовое поле введите команду: SELECT * FROM Студенты WHERE Адрес = «Харьков»; где «SELECT *» означает, что выбираются все студенты, «FROM Студенты» — из какой таблицы, «WHERE Адрес = «Харьков»» — условие, которое обязательно должно выполняться.
  5. Нажмите кнопку «Выполнить».
  6. На выходе мы получаем результирующую таблицу.

А что делать, если нас интересуют студенты из Харькова, стипендии у которых больше 1000? Тогда наш запрос будет выглядеть следующим образом:

SELECT * FROM Студенты WHERE Адрес = «Харьков» AND Стипендия > 1000;

а результирующая таблица примет следующий вид:

На создание сущности

Кроме добавления таблицы с помощью встроенного конструктора, иногда может потребоваться выполнение этой операции с помощью SQL запроса. В большинстве случаев это нужно во время выполнения лабораторных или курсовых работ в рамках университетского курса, ведь в реальной жизни необходимости в этом нет. Если вы, конечно, не занимаетесь профессиональной разработкой приложений. Итак, для создания запроса нужно:

  1. Перейти во вкладку «Создание».
  2. Нажать кнопку «Конструктор запросов» в блоке «Другие».
  3. В новом окне нажмите на кнопку SQL, после чего в текстовое поле введите команду:

CREATE TABLE Преподаватели
(КодПреподавателя INT PRIMARY KEY,
Фамилия CHAR(20),
Имя CHAR (15),
Отчество CHAR (15),
Пол CHAR (1),
Дата_рождения DATE,
Основной_предмет CHAR (200));

где «CREATE TABLE» означает создание таблицы «Преподаватели», а «CHAR», «DATE» и «INT» — типы данных для соответствующих значений.

  1. Кликните по кнопке «Выполнить».
  2. Откройте созданную таблицу.

Внимание! В конце каждого запроса должен стоять символ «;». Без него выполнение скрипта приведет к ошибке.

На добавление, удаление, редактирование

Здесь все гораздо проще. Снова перейдите в поле для создания запроса и введите следующие команды:

Создание формы

При огромном количестве полей в таблице заполнять базу данных становится сложно. Можно случайно пропустить значение, ввести неверное или другого типа. В данной ситуации на помощь приходят формы, с помощью которых можно быстро заполнять сущности, а вероятность допустить ошибку минимизируется. Для этого потребуются следующие действия:

  1. Откройте интересующую таблицу.
  2. Перейдите во вкладку «Создание».
  3. Нажмите на необходимый формат формы из блока «Формы».

    Совет! Рекомендуется использовать «Разделенную форму» – кроме самого шаблона, в нижней части будет отображаться миниатюра таблицы, которая сделает процесс редактирования еще более наглядным.

  4. С помощью навигационных кнопок переходите к следующей записи и вносите изменения.

Все базовые функции MS Access 2007 мы уже рассмотрели. Остался последний важный компонент – формирование отчета.

Формирование отчета

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

Если вы никогда не сталкивались с подобной функцией, рекомендуется воспользоваться встроенным «Мастером отчетов». Для этого сделайте следующее:

  1. Перейдите во вкладку «Создание».
  2. Нажмите на кнопку «Мастер отчетов» в блоке «Отчеты».
  3. Выберите интересующую таблицу и поля, нужные для печати.
  4. Добавьте необходимый уровень группировки.
  5. Выберите тип сортировки каждого из полей.
  6. Настройте вид макета для отчета.
  7. Выберите подходящий стиль оформления.

    Внимание! В официальных документах допускается только стандартный стиль оформления.

  8. Просмотрите созданный отчет.

Если отображение вас не устраивает, его можно немного подкорректировать. Для этого:

  1. Нажмите ПКМ на вкладке отчета и выберите «Конструктор».
  2. Вручную расширьте интересующие столбцы.
  3. Сохраните изменения.

Вывод

Итак, с уверенностью можно заявить, что создание базы данных в MS Access 2007 мы разобрали полностью. Теперь вам известны все основные функции СУБД: от создания и заполнения таблиц до написания запросов на выборку и создания отчетов. Этих знаний хватит для выполнения несложных лабораторных работ в рамках университетской программы или использования в небольших личных проектах.

Для проектирования более сложных БД необходимо разбираться в объектно-ориентированном программировании и изучать такие СУБД, как MS SQL и MySQL. А для тех, кому нужна практика составления запросов, рекомендую посетить сайт SQL-EX, где вы найдете множество практических занимательных задачек.

Удачи в освоении нового материала и если есть какие-либо вопросы – милости прошу в комментарии!

Microsoft Access является полезным приложением, поскольку позволяет создавать и хранить данные во многих связанных таблицах, предлагая большую эффективность и стандартизацию, чем электронные таблицы. Таблицы являются основой базы данных. Но, в отличие от обычных таблиц Excel, где ввод данных — очень медленная и утомительная процедура, создание форм в Access-формах выполняется с использованием удобных многочисленных функций.

Простые формы доступа

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

Чтобы выбрать форму, необходимо войти на вкладку «Создать» на ленте меню, и найти раздел «Формы». При нажатии этой кнопки автоматически создается базовая форма, основанная на исходной таблице, выделенной на левой панели навигации. Это самый простой вариант для создания форм в Access, хотя предоставляет меньшую гибкость.

Разделенная форма фактически отображает данные из двух таблиц. Одна часть выглядит как электронная форма, расположенная ниже. Простая форма в Access показывает только одну запись, разделенная же имеет несколько строк, чтобы пользователи вводили много данных на экране. Этот тип формы полезен для ввода длинных списков, у которых столбцов не много.

Создание проекта с нуля

После того как будет выбран один из вариантов формы, пользователь приступает к созданию формы для ввода данных в Access с нуля, применяя дополнительные функции программы. Для этого нужно перейти в Дополнительные формы -> Мастер форм и далее нажать стрелку раскрывающегося списка «Больше форм», найти опцию для Мастера форм. После чего Access проведет пользователя по этапам создания формы и даст возможность использовать множество настроек, создавая баланс между программой, чтобы Access выполнила большую часть работы, и пользователем, создающему форму самостоятельно.

Существует много вариантов, которые можно реализовать с помощью создания форм MS Access. Можно создать два основных типа форм:

  1. Связанные формы.
  2. Несвязанные формы.

Связанные формы (Bound Forms) взаимодействуют с некоторыми базами данных, такими как оператор SQL, запрос или таблица. Этот вид используется для ввода или редактирования данных в базе.

Несвязанные формы (Unbound Forms) не зависят от источника данных. Они могут быть в форме диалоговых окон и коммутационных площадок, используемых для навигации с базой данных в целом. Существует много режимов создания форм в Access.

Типы связанных форм:

  1. Форма единого элемента, самая популярная, когда записи отображаются в одной записи единовременно.
  2. Несколько элементов, отображает ряд записей за один раз из связанного источника данных.
  3. Сплит-форма, разделяется на половину, горизонтально или вертикально. Одна отображает элемент или запись, а другая — предоставляет данные нескольких записей из базового источника данных.

База данных Access

Для создания форм access формы имеется несколько способов. Для этого нужно открыть базу данных и войти на «Создать». Во вкладке «Формы» в правом углу нажать кнопку «Мастер форм». На первом экране выбирают поля, которые нужно будет отобразить в форме. Алгоритм действия:

  1. В мастере форм выбрать tblProjects для таблиц/запросов и несколько необходимых полей, таких как ProjectStart, ProjectName, ProjectID, и ProjectEnd. Они перейдут в рабочие поля.
  2. Выбрать tblTasks для таблиц / запросов и разместить по полям.
  3. Нажать «Далее».
  4. Выбрать вид упорядочивания создания форм и отчетов в access. Если нужно создать плоскую форму, выбирают организацию tblTasks, а при создании иерархической формы, можно упорядочить данные с помощью tblProjects.
  5. Выбрать форму с подформами (s) и затем нажать «Далее». На следующем экране можно выбрать макет для своей подформы. По умолчанию выбран Datasheet View. Он похож на Table View.
  6. Нажать «Далее».
  7. На следующем экране необходимо указать имя формы и «Готово».

Создание форм в Microsoft Access через дополнительную форму выполняют через раскрывающееся меню «Дополнительные формы». Далее нужно создать форму «Несколько элементов», форму Datasheet, форму «Сплит» или форму «Модальный диалог». Это обычно связанные формы. Выбрать объект, который нужно привязать к этой форме. Это не относится к формам модального диалога. Выбрать объект в навигационной панели, выделить tblEmployees, появится форма «Несколько элементов», в которой будут перечислены все данные.

Мастер приложения

Перед созданием форм Access их можно увидеть на экране и использовать для просмотра данных в таблице. Для этого существуют кнопки навигации в нижней части экрана: первая запись, следующая запись, предыдущая запись, завершающая запись, которые позволяют перемещаться по таблице. Можно также ввести новейшую запись, нажав кнопку «Новая». Алгоритм создания форм в субд. Access следующий:

  1. Нажать вкладку «Создать» на ленте и кнопку «Мастер форм».
  2. В раскрывающемся списке «Таблицы / Запросы» выбрать «Члены клуба», и нажать двойной шеврон (>>), чтобы переместить все поля в окно справа.
  3. В списке параметров макета выбрать Columnar и «Далее».
  4. Назвать форму и «Готово».
  5. Отредактировать форму и прикрепить изображение. Можно добавить логотип или другое изображение в форму, нажав вкладку «Главная»> «Вид»> «Дизайн» для формы.
  6. Открыть «Инструменты дизайна форм»> «Дизайн» и нажать «Вставить изображение» > Обзор.
  7. Найти изображение, которое будет использоваться в форме, выбрать его, а затем перетащить, чтобы создать окно.
  8. Чтобы изменить размер изображения, нажать мышью, выбрать «Свойства» и перейти на вкладку «Формат».
  9. Установить режим размера для увеличения и выравнивания изображения в верхнем левом углу, а затем использовать размерные ручки для определения размера.
  10. Можно изменить размер некоторых текстовых полей формы, если они слишком большие.
  11. После окончания выбрать «Главная»> «Вид»> «Форма», чтобы вернуться к использованию и просмотру формы.

Альтернативная форма доступа

Способы создания форм в Access позволяют сделать ввод данных более удобным для пользователей, используя бесплатные альтернативы. Microsoft Access — это сложный инструмент базы данных с трудным процессом обучения. Существуют более интуитивные альтернативы с аналогичными функциями. Прежде чем будет создана форма, пользователю придется импортировать базу данных. Набор информации:

  1. Начать с избрания «Пустое содержимое базы данных».
  2. Импортировать данные, используя «Внешние данные» в правом верхнем углу экрана.
  3. Выбрать XML-файл на вкладке «Внешние данные».
  4. Перейти в папку, в которую разархивировали файл, и выбрать, где будет предоставлено меню импорта XML.
  5. Нажать OK для импорта в новую базу данных.
  6. В левом столбце будут указаны доступные объекты базы данных, и если все работает исправно, пользователь должен увидеть импортированные объекты данных contact_information и member и дважды кликнуть их, чтобы открыть элемент.

Настраиваемые объекты дизайна

Создание базы данных в Access-формах позволяет предоставлять пользовательский доступ и настраивать объекты дизайна. Хорошо разработанная форма может повысить эффективность и точность ввода. На вкладке «Инструменты компоновки форм» содержатся поля настройки формы. Выбор его приведет к экрану с настройками дизайнерских форм и эстетических возможностей. На вкладке «Главная» нужно найти опцию и просмотреть доступные виды форм. Design View предоставляет более подробное представление о структуре формы, чем представление макета. Он также позволяет изменять форму без каких-либо помех.

Большинство задач могут выполнятьсякак в представлении Design View, так и в Layout View, но есть некоторые свойства формы, которые могут быть изменены только в Design. Layout View предоставляет более визуальный макет для редактирования формы. Он имеет близкое сходство с фактической формой.

Большинство модификаций форм могут быть сделаны в представлении макета, но в некоторых случаях Access сообщает, что нужно переключиться на Design View, чтобы внести определенные изменения. Когда активирована функция «Формирование дизайна форм», ленточная панель добавляет три новые позиции вверху под заголовком «Инструменты дизайна форм»:

  1. Дизайн-изменение цветов и тем. Добавляет в форму кнопки, поля, метки и другие объекты.
  2. Упорядочить — меняет макет и выравнивает объекты в форме.
  3. Формат — изменение текста, фоновых изображений и фигур чертежа.

Инструмент быстрой разработки

Мастер Access Form Wizard — это полезный инструмент форм, который открывает возможности проектирования, предоставляя варианты для столбцов, строк, размеров таблиц, языков и тем. Можно использовать мастер создания форм Access, чтобы быстро решить, какой стиль формы подходит для базы данных и предпочтений пользователя. В зависимости от данных есть несколько других форматов, а также элементы управления дизайном, чтобы помочь пользователю в навигации:

  1. Мастера форм.
  2. Дополнительные опции.

Использование мастера открывает новые параметры, добавляет новые поля и убирает ненужные. Эта добавленная гибкость обеспечивает высокое качество управления и экономию времени. Вместо создания форм с нуля можно использовать Мастер форм и настроить его по своему усмотрению. Это экономит время и повышает эффективность, позволяя сразу начать работу. Удобный интерфейс позволяет создавать нужные поля двойным щелчком.

Формы четырех форматов

Один из этих четырех форматов имеется в каждой конфигурации базы данных Access, с которой столкнется пользователь. В работе нужно применять панель свойств. Это полезная боковая панель, расположенная на вкладке «Инструменты компоновки форм», содержит множество важной информации о форме и может быть использована для быстрого редактирования, изменения и переключения множества опций с удобной подсказкой в левом нижнем углу экрана.

Виды форматов:

  1. Единая таблица — одна форма, соответствующая одной таблице базы данных. Она функциональная, базовая и может применяться для выполнения ряда задач.
  2. Форма одиночной таблицы с полем поиска: использует только одну единственную настройку базы данных, поиск позволяет отображать данные из другой таблицы или базы данных, или создавать обобщенные значения диапазона данных.
  3. Форма Master / Detail — одна основная форма направляет множество подформ.
  4. Форма Master / subform — дополнительными полями поиска в главном или подчиненном виде.

Блокировка разделов

Защита доступа к базе данных от других пользователей нужна тогда, когда владелец не хочет, чтобы кто-то вмешивался в тонко настраиваемую внутреннюю работу таблиц и запросов и особенно кодов VBA. Доступ предоставляет ряд способов предотвращения случайного изменения данных пользователями в формах. Один из вариантов — установить свойства управления Enable и Locked для предотвращения ввода данных. Например, при создании подчиненной формы Access, которая будет применяться для внесения изменений в адреса клиентов.

Первое управление — это поле поиска, используемое для нахождения клиентского номера. Когда, например, выбирается номер, имя и адрес клиента автоматически отображаются в соответствующих элементах управления. Однако если не нужно, чтобы другие пользователи вносили изменения в поле «Имя клиента», можно его заблокировать. Далее следует перейти к списку свойств, которые нужно редактировать. Изменения будут применяться ко всей форме. Примерно на полпути вниз по списку свойств можно увидеть варианты редактирования.

Порядок наложения запрета:

  1. Изменить каждое свойство на ПО.
  2. Перейти к представлению дизайна и в раскрывающемся списке свойств листа выбрать форму.
  3. Переключить режим «Разрешить макет» на «Нет». Это останавливает доступ всех дополнительных пользователей к виду макета, где они могут непосредственно редактировать форму.
  4. Теперь сохраняют форму для этого преобразовывают файл из.accdb в.accde, ограничивая любые дальнейшие изменения дизайна или редактирование полей.
  5. Сохранить текущую базу данных в важном месте.
  6. Перед конвертированием файла в Access убедиться, что сделана копия (или две) исходного файла базы данных. В случае ее повреждения она будет главной копией.
  7. Перейти в файл> Сохранить.

Командные кнопки Access

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

Чтобы запустить Command Button, пользователям необходимо написать процедуру или макрос события в свойстве On Click. Шаги для создания главной кнопочной формы Access следующие:

  1. Выбрать и открыть форму, в которую нужно вставить кнопку Command.
  2. Закрыть все формы, запущенные в системе, чтобы избежать путаницы.
  3. Нажать мышью по форме и открыть ее в режиме разработки.
  4. Выбрать вкладку «Дизайн» в панели «Лента» и нажать значок кнопки.
  5. Пользователи могут заметить, что их курсор превратился в знак плюса и должны использовать его для рисования или создания структуры кнопки в своей форме.

После того как пользователь решил создать новую кнопку, на экране автоматически появляется Мастер создания кнопочной формы в Access. Обычно кнопка может вызывать предустановленную функцию в форме и запускаться на Macro или через специальный код VBA.

Пользователи закрепляют эти изменения, выбрав «Операция формы» в «Окна»> «Печать текущей формы» из окна действий, затем нажать дальше. Пользователь может выбрать два варианта: использовать изображение или значок на кнопке Command или использовать текстовое название. Можно внести изменения с помощью мастера команд, где MS Access также позволяет пользователям просматривать изображения из своей системы.

Чтобы применить изменения в форме, нужно нажать «Готово». Указать имя, используя мастер кнопок команд. После внесения всех необходимых изменений нужно сберечь форму. Проверить форму, чтобы убедиться, что она работает правильно.

MS Access поддерживает особый порядок создание формы. Удобный пользовательский интерфейс проектирования форм позволяет настроить базовую форму, нажав всего лишь на один значок. Встроенные менеджеры программы — отличный способ изменить дизайн форм вручную и настроить форму доступа с нуля.

06 сентября 2004 года

mhaturov

901 / / 23.10.2003

Беда. Имею Jet-таблицу. В одно из её полей должно писаться имя юзверя, который добавляет запись. Задаю значение по умолчанию. Нифига не выходит. Пытался задавать тип поля Текст (255) и МЕМО. Пытался использовать следующие методы:

1). Пытаюсь подставить в поле значение системной функции GetUser(). Сообщает, что такой нет.

2). Пишу в модуле свою функцию, возвращающую имя текущегог пользователя, но не заню, как подключить пользовательскую функцию (или её изначально надо откомпилить как библиотеку?).

3). Написал запрос, ну типа Select GetUser(). Пытаюсь по умолчанию подсовывать результат выполнения этого запроса. Оказываюсь посланым.

Что делать? Как установить по умолчанию имя текщего пользователя? Делать нужно именно в Access — такова задача, к сожалению…

Заранее всем спасибо!

06 сентября 2004 года

SergeySV

1.5K / / 19.03.2003

Завтра гляну, помойму у Гетца был готовый пример…

а у тебя что за база? mdb сетевая, к которой пользователи подключаются и тянут таблицы?

06 сентября 2004 года

mhaturov

901 / / 23.10.2003

Цитата:

Originally posted by SergeySV
Завтра гляну, помойму у Гетца был готовый пример…
а у тебя что за база? mdb сетевая, к которой пользователи подключаются и тянут таблицы?

Не, вариант до глупого прост. БД локальная (при запуске копируется). Состоит сплошь из прилинкованных таблиц, но нужна 1 таблица на уровне Jet, то есть mdb — файла в которой нужно отслеживать имена юзверей, производящих изменения какие-либо. Причём работать это должно как при обращении из кода (что само по себе легко), так и при обращении непосредственно к таблицы через интерфейсы СУБД.

07 сентября 2004 года

SergeySV

1.5K / / 19.03.2003

Хм, не знаю то ли тебе нужно, но вот ADO позволяет создавать наборы записей с информацией о текущих пользователях базы данных: имя компьютера, имя пользователя, статус коннекта..

07 сентября 2004 года

SergeySV

1.5K / / 19.03.2003

и вторая часть:

07 сентября 2004 года

mhaturov

901 / / 23.10.2003

Цитата:

Originally posted by SergeySV
и вторая часть:

Спасибо, но это — немного не то. Дело в том, что у меня имеется таблица, в которой в одно поле автоматом должно писаться имя пользователя, добавляющего запись. Ну, по дефолту, то есть. А в Акцессе НЕТ системной функции, которую можно было бы в этом случае прописать по дефолту.
Функция CurrentUser не воспринимается системой, хотя в коде работает. Запрос (SELECT CurrentUser()), который без проблем обрабатывается в редакторе запросов, тоже не «прокатывает».
Тип поля Текст (255). Пробовал устанавливать МЕМО, но тот же эффект.
Пробовал в модуле писать агнкцию, которая возвращает CurrentUser типа String, но не знаю, как определить для таблицы доступную пользовательскую функцию.:{

И ещё, SergeySV, если не трудно, поведи, плз, пока темы «http://forum.codenet.ru/showthread.php?threadid=15556&goto=newpost» и «http://forum.codenet.ru/showthread.php?threadid=15810&goto=newpost», а то тама люди ждут меня, а у меня сейчас траблы и некогда отвечать на посты. ОК? Огромное спасибо, что подхватил их во время моего отпуска.

07 сентября 2004 года

SergeySV

1.5K / / 19.03.2003

А понял, это к вопросу о триггерах. Проблема в том, чтобы в овую запись автоматом заполнялось одно из полей!? К сожалению, это не возможно, в Access нельзя для значения по умолч. задавать СВОИ функции, только встроенные. Остается отлавливать событие добавление/изменение записи в таблице и самому заполнять это поле именем пользователя. Но это уже триггеры, которых в Access тоже нет. Единственная возможность реализации такого псевдотриггера для Access я вижу только в ограничение работы пользователей опр. формами (как правила во всех базах пользователь работает не напрямую с данными, а через форму) и уже в самой форме сделать контроль добавления/изменения данных в таблице, это уже реализовать средствами VB можно… Просто у Access такая концепция заложена, что пользователь в базе работает с данными именно через формы (у них и формы спец., с подсоед. Recordset), а уже в них ты как разработчик средствами VB можешь реализовать все что задумано, т.е. логика конечно чисто клиентская, в том смысле что если mdb и выполняет роль сервера (файл сервера, а клиентов mbd прилинкованные с него таблицы), то всю логику по контролю придется закладывать именно в клиентские mdb, а иначе это уже надо переходить на MS SQL в качестве сервера где ты уже не зависишь от клиентов и можешь вертеть данными как хочешь вне зависимости че там себе клиент пыхтит

Цитата:

Originally posted by mhaturov
И ещё, SergeySV, если не трудно, поведи, плз, пока темы «http://forum.codenet.ru/showthread.php?threadid=15556&goto=newpost» и «http://forum.codenet.ru/showthread.php?threadid=15810&goto=newpost», а то тама люди ждут меня, а у меня сейчас траблы и некогда отвечать на посты. ОК? Огромное спасибо, что подхватил их во время моего отпуска.

ОК

07 сентября 2004 года

mhaturov

901 / / 23.10.2003

Цитата:

Originally posted by SergeySV
А понял, это к вопросу о триггерах. Проблема в том, чтобы в овую запись автоматом заполнялось одно из полей!? К сожалению, это не возможно, в Access нельзя для значения по умолч. задавать СВОИ функции, только встроенные. Остается отлавливать событие добавление/изменение записи в таблице и самому заполнять это поле именем пользователя. Но это уже триггеры, которых в Access тоже нет. Единственная возможность реализации такого псевдотриггера для Access я вижу только в ограничение работы пользователей опр. формами (как правила во всех базах пользователь работает не напрямую с данными, а через форму) и уже в самой форме сделать контроль добавления/изменения данных в таблице, это уже реализовать средствами VB можно… Просто у Access такая концепция заложена, что пользователь в базе работает с данными именно через формы (у них и формы спец., с подсоед. Recordset), а уже в них ты как разработчик средствами VB можешь реализовать все что задумано, т.е. логика конечно чисто клиентская, в том смысле что если mdb и выполняет роль сервера (файл сервера, а клиентов mbd прилинкованные с него таблицы), то всю логику по контролю придется закладывать именно в клиентские mdb, а иначе это уже надо переходить на MS SQL в качестве сервера где ты уже не зависишь от клиентов и можешь вертеть данными как хочешь вне зависимости че там себе клиент пыхтит ОК

У меня беда следующая, на самом деле. Имеется некая таблица, все события в которой должны протоколироваться. Причём это должна быть Jet-таблица в самом mdb, ну по определённым требованиям. Группы Access 2000 тоже создавать нельзя по определённым требованиям. Пользователь работает с ней через формы. Но, блин, некоторые особо умные пользователи, как накосячат, бегут к программистам и просят «немножко поправить данные в самой базе», да и «особо продвинутые» юзверя тоже попадаются. Если это не критично — нет проблем. Но именно в этой таблице ВСЕ данные должны протооколироваться. Я хочу, что бы из таблицы ничего не удалялось. Только, в случае удаления записи, менялся флаг использования записи и проставлялась дата её удаления, а взамен появлялась аналогичная ей с новыми параметрами. В удалённой записи появлялось имя пользователя, который её удалил, а в новой — имя пользователя, который её добавил. Таким образом, всегда можно отследить, кто и что менял. Таблица особо дуться не будет, так как она для действий, что производятся 1 раз в год.

В принципе, можно предупредить программисто о том, что бы данную таблицу не трогали. Но человеческий фактор исключить нельзя. И, если, например, есть у нас в SQL — БД триггер, который ведёт лог-файл, то программисту может просто лень будет его отключать или чистить лог и он откажет нерадивому юзверю. А в нашем случае программеру НИЧЕГо не мешает нарушить правила. Да и потом не стоит забывать. что программист просто может забыть о правилах, а отслеживание изменений в этой таблице очень критично…

07 сентября 2004 года

mhaturov

901 / / 23.10.2003

Сергей, у меня не открываются файлы, что ты тут выложил. Пишет, что у меня — старая версия Access (у меня 2000-й). Скинь пример получения имени машины и пользователя? ОК? Я сам сейчас воспользовался GetComputerNameA

07 сентября 2004 года

SergeySV

1.5K / / 19.03.2003

Цитата:

Originally posted by mhaturov
Сергей, у меня не открываются файлы, что ты тут выложил. Пишет, что у меня — старая версия Access (у меня 2000-й). Скинь пример получения имени машины и пользователя? ОК? Я сам сейчас воспользовался GetComputerNameA

Упс.. не получится, вот код функции:

Код:

Sub ListUsers()

    ‘ Lists the current users of the database to

    ‘ the debug window.

    ‘ From Access 2002 Enterprise Developer’s Handbook

    ‘ by Litwin, Getz, and Gunderloy. (Sybex)

    ‘ Copyright 2001. All rights reserved.

    Dim cnn As ADODB.Connection

    Dim rst As ADODB.Recordset

    Dim fld As ADODB.Field

    Dim intUser As Integer

    ‘ The user list schema information requires this magic

    ‘ number. Why isn’t a constant predefined for this?

    ‘ Who knows.

    Const adhcUsers = «{947bb102-5d43-11d1-bdbf-00c04fb92675}»

    Set cnn = New ADODB.Connection

    Set cnn = CurrentProject.Connection

    Set rst = cnn.OpenSchema(adSchemaProviderSpecific, , adhcUsers)

    With rst

        Do Until .EOF

            intUser = intUser + 1

            For Each fld In .Fields

            Next

            .MoveNext

        Loop

    End With

End Sub

… работает через OpenSchema. В Access 2000 метод OpenSchema вызывает ошибку потому что не понимает константу adhcUsers. Вернее константы как раз нет, а есть код, который Microsoft где-то выложила, по крайне мере Гетц про него занл и в книжке его указал. И вот тут непонятки, толи в Access 2000 OpenSchema вообще не может вернуть такую информацию про пользователей, либо просто коды поменялись и нужно уже другой указывать… это я пока не выяснил и потому указанный выше код работает токо в Acc2002. 🙁

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

Могу тогда предложить токо вариант:

1. автом. загрузка скрытой формы при открытие базы

2. создание копии нужной таблицы

3. пока пользователь/программист работает тихо себе висим, ждем

4. при закрытии базы делаем сравнение таблиц, выясняем изменения в таблице и зная номера измененных записей в исходной таблице поставляем имя тек. пользователя.

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

07 сентября 2004 года

mhaturov

901 / / 23.10.2003

Цитата:

Originally posted by SergeySV
Упс.. не получится, вот код функции:
Код: Sub ListUsers()     ‘ Lists the current users of the database to     ‘ the debug window.
    ‘ From Access 2002 Enterprise Developer’s Handbook     ‘ by Litwin, Getz, and Gunderloy. (Sybex)     ‘ Copyright 2001. All rights reserved.
    Dim cnn As ADODB.Connection     Dim rst As ADODB.Recordset     Dim fld As ADODB.Field     Dim intUser As Integer
    ‘ The user list schema information requires this magic     ‘ number. Why isn’t a constant predefined for this?     ‘ Who knows.     Const adhcUsers = «{947bb102-5d43-11d1-bdbf-00c04fb92675}»
    Set cnn = New ADODB.Connection     Set cnn = CurrentProject.Connection
    Set rst = cnn.OpenSchema(adSchemaProviderSpecific, , adhcUsers)     With rst         Do Until .EOF             intUser = intUser + 1
            For Each fld In .Fields
            Next             .MoveNext         Loop     End With End Sub … работает через OpenSchema. В Access 2000 метод OpenSchema вызывает ошибку потому что не понимает константу adhcUsers. Вернее константы как раз нет, а есть код, который Microsoft где-то выложила, по крайне мере Гетц про него занл и в книжке его указал. И вот тут непонятки, толи в Access 2000 OpenSchema вообще не может вернуть такую информацию про пользователей, либо просто коды поменялись и нужно уже другой указывать… это я пока не выяснил и потому указанный выше код работает токо в Acc2002. 🙁 А у тебя с этой базой сами программисты еще работают, т.е. раздать пользователей с правами ты не можешь (и тем более менять код)? Могу тогда предложить токо вариант:
1. автом. загрузка скрытой формы при открытие базы
2. создание копии нужной таблицы
3. пока пользователь/программист работает тихо себе висим, ждем
4. при закрытии базы делаем сравнение таблиц, выясняем изменения в таблице и зная номера измененных записей в исходной таблице поставляем имя тек. пользователя. если база зависнет, то конечно никакие изменения не отразятся, но для пущей гарантии, при желании, можно и таймер забабахать, чтобы например каждые полчаса сравнивала и помечала в таблице сделанные пользователем действия.

Опять же вариант не подходит. Во всех mdb-шниках есть стартовые формы, поэтому для отладки они токрываются с шифтом. И вот тут-то никакая скрытая форма не сработает…:{

07 сентября 2004 года

SergeySV

1.5K / / 19.03.2003

Может тогда пусть эта таблица лежит в отдельной mdb, а во всех остальных mdb-ка пусть прилинкуют эту таблицу, в работе с этой таблицей они разницу непочувствуют, ну а с файл-серверной mdb-кой можно уже и поколдовать