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

Вычисляемые поля в запросе БД Access 2003

Вычисления в запросе БД Access 2003

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

Выражения могут содержать следующие элементы:

  • идентификаторы (имя поля и элемента управления, которые заключаются в квадратные скобки);
  • операторы (арифметические, логические, сравнения и другие операторы);
  • функции (готовые формулы, которые состоят из имени и аргумента, помещенного в круглые скобки)
  • константы (элементы, которые не изменяются в Выражении, например Null, Истина, Ложь);
  • значения (например, значения даты и времени, численные положительные или отрицательные значения).
  • =[Оценка]/1,2, где «=» — опрератор, [Оценка] — имя поля, а 1,2 — значение;
  • Date(), где Date — имя функции текущей даты, которая не имеет аргумента.

Рассмотрим создание вычисляемых полей в бланке запроса базы данных Access 2003. Для ввода Выражения в запрос его необходимо открыть в режиме Конструктора. Чтобы создать вычисляемое поле в запросе (в существующем или вновь создаваемом запросе) открытого в режиме конструктора, необходимо ввести Выражение в строку Поле свободного столбца бланка запроса. Выражение может выполнять вычисления, обрабатывать текст, указывать время и дату, проверять данные и т.д. Необходимо отметить, что каждая формула вычисляется только для отдельной строки таблицы бланка запроса.

Рассмотрим создание вычисляемого поля в бланке запроса на примере базы данных Training_students_VP. Постановка задачи: в запросе на выборку (Запрос 3) создать поле, в котором должны отображаться итоговые оценки (ниже на 20% от полученных по результатам рейтинга). Для решения этой задачи откроем бланк «Запроса 3» в режиме конструктора (Рис. 1).

Для создания вычисляемого поля можно применить «Построитель выражений». Для этого надо установить курсор в свободное поле и выбрать на панели инструментов команду Построить (можно также воспользоваться контекстным меню), откроется окно Построитель выражений.

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

Для поставленной задачи в Построитель можно ввести выражение =[Оценка]/1,2 с клавиатуры (Рис.2) и щелкнуть на кнопке ОК.

В результате в бланке запроса появится вычисляемое поле =[Оценка]/1,2

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

С учетом вышеизложенного следует изменить название вычисляемого поля и отформатировать его. Для этого необходимо вернуться в режим конструктора и слово Выражение1 заменить на «Итог_оценка». Затем щелкнуть правой кнопкой мыши на вычисляемое поле и в контекстном меню выбрать команду Свойства, откроется диалоговое окно Свойства поля (Рис. 5)

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

© Обучение в интернет, .
Обратная связь

Основы создания запросов в Access 2003

Сегодня мы начнем рассматривать такое приложение как — Microsoft Access 2003, которое умеет создавать собственные базы данных (формат mdb), а также создавать клиентские приложения к существующим базам на основе MS SQL Server. Темой сегодняшней статьи будет создание новых запросов из Access, имеется в виду, как простые запросы, так и различные функции, представления и процедуры. Под запросом здесь понимается объекты базы данных.

О Microsoft Access

Microsoft Access – программный продукт компании Microsoft, являющейся реляционной СУБД. Имеет огромные возможности при организации базы данных, создания отдельного приложения, которое может взаимодействовать с множеством других СУБД. Наиболее часто встречающееся решение клиент-сервер, где в качестве клиента выступает приложение, написанное в Access (язык VBA, формы и многое другое), а сервером является СУБД Microsoft SQL Server. Однако Access поддерживает и взаимодействие с другими СУБД, например, такими как: MySql или PostgreSQL. О Access можно разговаривать долго, но цель сегодняшней статьи именно создание запросов (объектов) из Access.

Переходим к практике и начнем с простой базы mdb, т.е. как там создать эти самые запросы.

Создание запросов в Microsoft Access 2003 — база MDB

Для начала открываем базу, затем нажимаем на объекты «Запросы» и жмем кнопку «Создать».

Примечание! Имеется в виду, что база у Вас уже есть.

И перед Вами откроется новое окно выбора типа запроса

Читать еще:  Как сделать кнопку поиска в access?

Давайте рассмотрим каждый из этих типов запросов подробней.

Типы запросов в Access 2003 — база MDB

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

Далее Вы просто выбираете нужные поля, ставите условия, сортировку и так далее.

Если не нравится это делать в графическом редакторе, то можете переключиться в режим SQL, для этого нажмите пункт меню «Вид», затем «Режим SQL».

Простой запрос – это, можно сказать, такой же конструктор, только немного другого вида и поменьше возможностей.

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

Повторяющееся записи – это как видно из названия поиск повторяющихся записей.

Записи без подчиненных – это поиск тех записей, которые отсутствуют в той или иной таблице.

С базами mdb достаточно, так как их редко используют на предприятиях, обычно используют следующую схему – пишут отдельный клиент, а все данные хранят на сервере с помощью СУБД в нашем случае — это MS SQL Server, а клиент Access (.adp).

Создание запросов в Microsoft Access 2003 — база MS SQL Server

Давайте рассмотрим создание новых запросов из клиента Access на базе MS SQL Server (подразумевается, что клиент adp и база данных на основе MS SQL Server у Вас уже есть).

Примечание! Данная статья не подразумевает изучение sql, поэтому на момент прочтения этой статьи Вы уже должны понимать основы sql и понятие основных объектов в базе данных таких как: представление, функция, процедура. Если Вы совсем новичок в этом, то сначала, конечно же, рекомендуется освоить SQL, так как многие термины ниже Вам будут не понятны. Рекомендуемые статьи:

Начало все такое же, открывает проект, затем нажимаем на объекты «Запросы» и жмем кнопку «Создать».

И теперь подробней.

Типы запросов в Access 2003 — база MS SQL Server

Конструктор встроенной функции – это, можно сказать, обычное представление, только в нее можно передавать параметры, затем выполняются какие-то запросы на сервере, и возвращается таблица. Это своего рода функция, которая возвращает данные в виде таблицы. К ней обращаются следующим образом (если говорить об sql):

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

Затем если Вы хотите добавить входящие параметры можете просто в условие ставить знак @ и название переменной, например, так:

После на панели в свойствах функции

на вкладке «параметры функции» появится те параметры, которые Вы указали, причем передавать их нужно в том порядке, в котором они здесь указанны.

Конструктор представления – это создание обычного представления, в просто народе «Вьюха».

Конструктор сохраненной процедуры – создание процедуры с помощью конструктора, принцип такой же, как и в вышеупомянутых функциях. Напомню процедура — это набор sql операторов, как на выборку, так и на изменение данных.

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

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

Ввод табличной функции – это создание функции, которая вернет набор записей. Похожа на встроенную функцию.

Для того чтобы в клиенте access их можно было отличать, у них разные иконки, те самые которые Вы видите при создании того или иного объекта.

При создании всех этих объектов они сохраняются на сервере, и Вы их можете использовать не только из своего adp проекта, но и из других клиентов.

Конечно же, все эти объекты Вы можете создать и на сервере с помощью, например, Enterprise Manager (устарел, сейчас SQL Server Management Studio), но мы сегодня рассматриваем возможность создания этих объектов из access клиента.

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

Как создать параметризованный запрос в MS Access 2003 и использовать другие запросы / формы для заполнения параметров и получения результирующего набора

Я хотел бы иметь возможность создать параметризованный запрос в MS Access 2003 и передать значения определенных элементов формы в этот запрос, а затем получить соответствующий результирующий набор и выполнить некоторые основные вычисления с ними. Я быстро разбираюсь в том, как получить параметры запроса, которые будут заполнены элементами формы. Если мне придется использовать VBA, это нормально.

Читать еще:  Как сделать связь один ко многим в access 2007?

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

Например, если вы хотите отфильтровать запрос с помощью элемента управления LastName на MyForm, вы можете использовать его в качестве критерия:

Затем вы бы определили ссылку на форму как параметр. Полученный SQL может выглядеть примерно так:

Однако я хотел бы спросить, зачем вам нужно иметь сохраненный запрос для этой цели. Что вы делаете с этими результатами? Отображение их в форме или отчете? Если это так, вы можете сделать это в источнике записей формы/отчета и оставить сохраненный запрос нетронутым параметрами, чтобы его можно было использовать в других контекстах без всплывающих подсказок для заполнения параметров.

С другой стороны, если вы делаете что-то в коде, просто напишите SQL на лету и используйте буквальное значение элемента управления form для построения Вашего предложения WHERE.

Вот фрагмент кода. Он обновляет таблицу с помощью параметра txtHospital:

Существует три традиционных способа обойти эту проблему:

  1. Назовите параметр something cleaver так, чтобы при выполнении запроса пользователю было предложено ввести его значение.
  2. Поле ссылки в форме (возможно скрытое)
  3. Стройте запрос на лету и не используйте параметры.

Я думаю, что это просто неправильно для меня, что вы должны были бы ввести что-то вроде [?enter ISO code of the country] или ссылки на поля в вашей форме, такие как : [Forms]![MyForm]![LastName] .

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

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

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

— У меня наконец-то появилась причина использовать это. Вот настоящий код.

Давайте возьмем пример. параметризованный запрос выглядит так:

и вы хотели бы иметь возможность получить это значение ([?входить. страна] один) из формы, где у вас есть элементы управления и некоторые данные в нем. Что ж. это может быть возможно, но для этого требуется некоторая нормализация кода.

Одним из решений может быть присвоение элементам управления формы имени определенной логики, например fid_Country для элемента управления, который будет содержать значение id_Country . После этого ваш запрос может быть представлен в виде строки:

После ввода всех запрошенных данных в форму нажмите кнопку «query». Логика будет просматривать все элементы управления и проверять, находятся ли они в запросе, в конечном итоге заменяя параметр значением элемента управления:

Таким образом, вы получите полностью обновленный запрос, в котором параметры были заменены реальными данными. В зависимости от типа fid_country (string, GUID, date и т. д.), Вам может потребоваться добавить дополнительные двойные кавычки или нет, чтобы получить окончательный запрос, такой как:

Это полностью совместимый с доступом запрос, который можно использовать для открытия набора записей:

Я думаю, что вы здесь закончили.

Этот вопрос имеет решающее значение, когда ваша цель состоит в разработке приложений доступа к данным. Вы должны предложить пользователям стандартный способ запрашивать данные из их GUI, не только запускать запросы, но и фильтровать непрерывные формы (точно так же, как это делает Excel с его опцией «autofilter») и управлять параметрами отчетов. Удачи вам!

где SQL запроса доступа включает [frontMthOffset] фактически в SQL. напр.

Все это просто работает!

Похожие вопросы:

Я создал приложение в Access 2003 и продолжал работать над ним на другом компьютере с Access 2007. Я создал отчет с помощью метода, который загружает данные из набора записей в некоторые несвязанные.

Я работаю в компании, где мы, вероятно, собираемся обновить Access97/2003 до Access2010. После игры с прототипом я обнаружил проблему при использовании Access 2010 с базами данных, созданными в.

Могу ли я использовать запрос обновления в MS Access для автоматического заполнения уникального поля ID символами из других полей? В частности, у меня есть уникальное поле ID, которое состоит из (1).

У меня есть office 2003, и я разработал базу данных из ms access 2003. Я хочу связать ms excel и ms access, чтобы при обновлении любой из них был обновлен

Я купил приложение, оно имеет VB и MS ACCESS 2003 used.application insert или update ms access on button click. Я хочу создать триггер или хранимую процедуру или событие в таблице, которые вставляют.

Я использую базу данных MS Access, где мне нужно передать параметризованный запрос. На самом деле MS Access использует как в этом формате . LIKE ‘ [par1] ‘ .

Из того, что я прочитал шифрование в базе данных MS-Access 2003 (*.mdb) довольно слаб. Я работаю с устаревшей базой данных JET/MS-Access 2003, к которой у меня есть доступ к интерфейсу и odbc, и мне.

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

Читать еще:  Как сделать связи в access 2010?

Приходя из мира MySQL, Postgres, MongoDB, Oracle и т. д. Мне только что дали базу данных MS-Access 2003 с приложением внутри нее; мне нужно ее документировать. Я не беспокоюсь о таблицах и связях.

как открыть файл ms access 2007 в ms access 2003

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

Всем программистам привет! Respect! В общем составил кучу запросов в Access 2003 при помощи мастеров и конструкторов, а оказалось что нужно было все прописывать на ЧИСТОМ SQL, т е при помощи Select, Distinct, From, Where, In, Null, Like, Group by, Having, Any, All, Exist,Group by, Order by, Asc. .
Я знаю, что каждый запрос можно просмотреть в окне, где будет запрос на SQL..Я не очень понимаю, как можно составить запрос с самого начала на чистом SQL, а затем выполнить в Access. Подскажите как быть то. буду очень признателен.

Добавлено 08.12.08, 13:54
P.S. SQL знаю на твердую тройку.

I originate
You must appreciate, all the others imitate

SCOOTER «GUEST LIST»

‘Pon the mic I’m the teacher!
Spread my words like a preacher!
Yiiihhaaaa.

SCOOTER «WEEKEND»

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

Добавлено 08.12.08, 15:21
а если с помощью макросов попробовать, как думаете Bas, например: С помощью макросов. Вводим Макрокоманду «ЗапускЗапросаSQL». или нет.

I originate
You must appreciate, all the others imitate

SCOOTER «GUEST LIST»

‘Pon the mic I’m the teacher!
Spread my words like a preacher!
Yiiihhaaaa.

SCOOTER «WEEKEND»

Для запросов, не возвращающих набор записей (Insert, Update, Create, Delete, Modify, etc.), удобнее использовать DoCMD.RunSQL. Это собсно и есть запуск макрокоманды «ЗапускЗапросаSQL».

ваш вариант неплох, но Access обмануть таким образом не удалось, рассказываю что я делал:
1) создал новую БД, состоящую из 2 — х таблиц: авто(IDavto(сч), name, IDColor), цвет(IDColor, name)), т е связь между машинами и их цветами, связь один ко многим, 1 цвет — много авто
2) в БД построил схему данных, поставив целостную ссылочность
вот данные которые есть в таблицах:
IDavto name IDcolor
1 ягуар 1
2 пежо 2
3 нива 1
4 мерседес 3
5 лада 4
6 митсубиши 1

IDcolor name
1 красный
2 синий
3 зеленый
4 желтый

3) в режиме конструктора создал запрос выбирающий все авто с цветом 1. Вот что построил сам:

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

Добавлено 09.12.08, 01:10

жалко это команда не может возвращать набор данных. Еще есть открытьЗапрос, но в этом случае он должен существовать, что противоречит условию задачи, значит остается только один вариант VB, больше никак(просто считаю, что через VB сложно, тем более VB почит не знаю, был бы Turbo Pascal, было бы лучше ).

Добавлено 09.12.08, 01:22
попытался создать процедуру на выбор всех названий из таблицы «цвет»:

I originate
You must appreciate, all the others imitate

SCOOTER «GUEST LIST»

‘Pon the mic I’m the teacher!
Spread my words like a preacher!
Yiiihhaaaa.

SCOOTER «WEEKEND»

Добавлено 09.12.08, 12:20
его я получил конструктором, думаю что если писать вручную, будет тоже самое. или нет.

Добавлено 09.12.08, 12:21

т е я ВООБЩЕ НЕ ИМЕЮ ПРАВА ПЕРЕКЛЮЧАТЬСЯ В РЕЖИМ КОНСТРУКТОРА В ЭТОМ СЛУЧАЕ.

Добавлено 09.12.08, 12:25

I originate
You must appreciate, all the others imitate

SCOOTER «GUEST LIST»

‘Pon the mic I’m the teacher!
Spread my words like a preacher!
Yiiihhaaaa.

SCOOTER «WEEKEND»

Как распознать, что это запрос реализован на чистом SQL, без участия конструктора, очень просто: когда нахожусь в главном окне, встать на закладку запросы и выберать например просто «Сводный запрос», затем нажать конструктор, в этом случае система ACCESS откроет его по умолчанию в конструкторе(где связи и экран разделен на две части), т е видно, что данный запрос был создан чисто при помощи конструктора. Если встать на «Сводный запрос_1» и щелкните за конструктор, то ACCESS автоматически его откроет в режиме SQL — запроса, что показывает, что данный запрос был выполнен на чистом SQL, без использования непосредственно конструктора.

О том, как создавать эти запросы:
1) Сначала составить текст запроса, зная структуры таблиц, где хранятся исходные данные, связи между ними и что собственно надо получить.
2) Затем вызвать конструктор запросов, отказаться от добавления таблиц, сразу перевести его в режим SQL (в окне будет только текст SELECT;)
3) набрать в этом окне текст запроса и. или сохранить, а потом смотреть, или сразу переключить в режим просмотра.

Добавлено 09.12.08, 12:59

вы не поняли для чего я это произвожу..

Добавлено 09.12.08, 13:00

I originate
You must appreciate, all the others imitate

SCOOTER «GUEST LIST»

‘Pon the mic I’m the teacher!
Spread my words like a preacher!
Yiiihhaaaa.

SCOOTER «WEEKEND»

Ссылка на основную публикацию
Adblock
detector