Sql запросы в access: Русско-таджикский словарь

Основы создания запросов в Access 2003 | Info-Comp.ru

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

Содержание

  1. О Microsoft Access
  2. Создание запросов в Microsoft Access 2003 — база MDB
  3. Типы запросов в Access 2003 — база MDB
  4. Создание запросов в Microsoft Access 2003 — база MS SQL Server
  5. Типы запросов в Access 2003 — база MS SQL Server

О Microsoft Access

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

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

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

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

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

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

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

Типы запросов в 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, так как многие термины ниже Вам будут не понятны. Рекомендуемые статьи:

  • Видеокурсы по T-SQL
  • Самоучитель по языку Transact-SQL
  • Основы языка запросов SQL – оператор SELECT
  • Как написать функцию на PL/pgSQL?
  • Что такое представления VIEWS в базах данных? И зачем они нужны?

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

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

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

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

   
   SELECT * FROM my_test_tabl_func(par1, par2 ……)


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

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

   
   SELECT * FROM table WHERE kod = @par


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

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

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

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

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

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

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

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

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

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

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

Заметка! Для профессионального изучения языка T-SQL рекомендую посмотреть мои видеокурсы по T-SQL.

Использование «Запроса к серверу» MS Access для извлечения данных с нескольких серверов SQL Server / Песочница / Хабр

На нашем предприятии несколько десятков удаленных территориально от головного офиса представительств, в каждом из которых имеется база с данными о клиентах каждого представительства. Исторические данные есть и в центральном офисе, но актуальные находятся только в представительстве. Каждая БД на MS SQL Server 2005. Изредка возникает необходимость получить актуальную информацию по всем представительствам в виде таблицы Excel. Например, получить что-то вроде:

select territory, count(customerid) from customer where managerid = 1000

До недавнего момента я тупо в MS SQL Server Management Studio менял вручную connect, прогонял скрипт на выборку данных для каждого удаленного офиса и копировал результаты на лист Экселя. Но как-то выдалась свободное время, и я решил автоматизировать процесс сбора данных с удаленных БД, используя старый добрый MS Access.


MS Access имеет такой интересный инструмент, как “Запрос к серверу”, который отправляет sql-инструкцию напрямую серверу базы данных ODBC. Таким образом для любого сервера БД, — SQL Server, Progress OpenEdge, Oracle, — к которому у нас имеется ODBC-драйвер, мы можем создать в Акцессе “Запрос к серверу” на родном для этого сервера диалекте sql.

Таким образом мне осталось в цикле по числу удаленных офисов сменить настройки ODBC-подключения, запустить запрос и вернуть результат в табличку Акцесса. Что для этого было сделано.

Я создал в MS Access табличку с реквизитами подключения для каждого офиса t_ServerList, табличку t0 – приемник результатов запроса для каждого офиса и написал на VBA проход по объекту ADO Recordset для сбора строки ODBC-подключения и “складированию” данных из “Запрос к серверу”с именем queryName в табличку Access t0. В случае возникновения ошибки (не факт, что каждый локальный сервер будет работать во время прогона), в таблицу t_ServerList пишется код ошибки и описание.

Ниже, собственно, сам код:

Option Compare Database
Public Const queryName As String = "q0"
Public Connection As ADODB.Connection, Recordset As ADODB.Recordset
Sub MkPassTruQueryDefSel()
'Руками поменять в свойствах запроса Возврат записей - ДА
'В цикле по таблице серверов t_ServerList создается pass-thtough запрос и данные с выбранного сервера/базы, используя строку запроса strSql
'инсертятся в заранее созданную таблицу акцесс соотв-й корректной структуры
'Таблица с именем t0 должна быть создана заранее
'Пишется дата прохода в таблицу со списком серверов
Dim strSql As String, strCon As String, serverListTableName As String, strServer As String, strDB As String
Dim errAdo As ADODB.Error, strErrAdoMsg As String
Dim qrdef As Dao.QueryDef, db As Dao.Database
'Текст запроса к серверу вбит руками в конструкторе запроса
Set db = CurrentDb
On Error Resume Next
Set qrdef = db. QueryDefs(queryName)
Dim strSQLFillTable As String
strSQLFillTable = "insert into t0 select * from " & queryName 'Запрос на заполнение таблицы очередной порцией
Set Connection = CurrentProject.Connection
Set Recordset = New ADODB.Recordset
serverListTableName = "t_ServerList"
With Recordset
'Каждый проход из рекордсета берутся атрибуты соединения для pass-thtough запроса
    'Запрос к исходной таблице со списком серверов
    src = "select * from " & serverListTableName & " where use=-1"
    .Open src, Connection, adOpenDynamic, adLockOptimistic
    .MoveFirst
    Do While (.EOF = False)
        strServer = .Fields("ip"): strDB = .Fields("DB")
        qrdef.Connect = GetTPQConString(strServer, strDB)
        CurrentDb.QueryDefs.Refresh
        CurrentProject.Connection.Execute strSQLFillTable
        .Fields("UseDateTime") = Now 'Запись метки времени использования
        .Fields("errNumber") = Err.Number  : .Fields("errString") = Err.Description: Err.Clear
        .MoveNext
    Loop
    . Close
End With
Set Recordset = Nothing : Connection.Close : Set Connection = Nothing
Call ShowOkMessage
End Sub
Public Function GetTPQConString(myServerAddress As String, myDataBase As String) As String
'Строка подключения для "запроса к серверу"
GetTPQConString = "ODBC; DRIVER=SQL Server; Server=" & myServerAddress & _
                                     ";Database=" & myDataBase & _
                                     ";UID=odmin;PWD=pwd;"
End Function

Работа со структурированным языком запросов (SQL) с использованием Microsoft Access 2010, 2013, 2016 и 2019 — Страница 3 — Holowczak.com Tutorials

Опубликовано Автор: holowczak

В этом разделе мы расскажем, как написать собственный SQL в MS Access. В этом упражнении предполагается, что у вас запущен MS Access 2007, 2010 или 2013 с открытой базой данных «Банк» (таблицы «Клиенты» и «Счета»). Щелкните здесь, чтобы просмотреть руководство с инструкциями по созданию этой базы данных.

Для начала:

  1. создайте новый запрос, щелкнув вкладку «Создать», а затем щелкнув значок «Дизайн запроса», как показано ниже.
  2. Появится диалоговое окно «Показать таблицу», как показано ниже. Нажмите кнопку «Закрыть», чтобы закрыть его.
  3. Перейдите на вкладку «Дизайн», а затем щелкните значок SQL с левой стороны (или потяните кнопку просмотра и выберите SQL
    ).
  4. В этот момент появится представление SQL запроса Query1. По умолчанию в окне отображается ключевое слово SELECT.
  5. Отредактируйте запрос, чтобы записать полный оператор SQL:
    ВЫБЕРИТЕ имя, фамилию
    ОТ клиента
    ЗАКАЗАТЬ ПО ФИО
    
     

    Теперь окно запроса представления SQL будет выглядеть следующим образом:

  6. На этом этапе, с введенным оператором SQL, мы можем выполнить запрос к базе данных, нажав кнопку «Выполнить» с восклицательным знаком.
  7. Результаты запроса будут отображаться в виде таблицы (например, в электронной таблице):
  8. Чтобы вернуться к редактированию SQL-запроса, откройте меню View и снова выберите SQL.
  9. Вы также можете сохранить свой запрос. Для этого щелкните правой кнопкой мыши вкладку с текущим именем запроса: Query1 и выберите Сохранить.

    Появится диалоговое окно с запросом нового имени запроса. Введите новое имя, например: Customer_Names, а затем нажмите OK, чтобы сохранить его.

  10. Наконец, MS Access не позволяет сохранить запрос под новым именем («Сохранить как»). Вместо этого вы можете выделить имя запроса, щелкнуть правой кнопкой мыши и выбрать «Копировать», затем снова щелкнуть правой кнопкой мыши и выбрать «Вставить». Затем вам будет предложено ввести новое имя запроса.

Далее я представлю несколько приемов и советов по написанию и отладке ваших SQL-запросов.

Страниц: 1 2 3 4 5 6

Категории: доступ, база данных, SQL

Теги: Доступ, Отладка, MS Access, Программирование, SQL, Язык структурированных запросов

Поиск Holowczak. com

Искать:

Пожертвования Добро пожаловать

Если вы нашли что-то образовательное или развлекательное на holowczak.com, рассмотрите возможность отправки пожертвования через: PayPal
LRC: 0xbe6738ed824cd34b9a109daa956ee448e41a545d
ETH: 0x1F8C9e8B4342872f868c1d313C13259bc4683933
BTC: 3JC5ZVGejv1seyALGiiSdbET9zomJz464X
Спасибо!

Реферальный код моего кошелька Loopring: 013928.

Недавние Посты

  • Обратное проектирование схемы Google BigQuery с помощью Dataedo 10

Категории сообщений Категории сообщенийВыберите категориюAccessBlogBloombergC#C++CIS 4620Облачные вычисленияХранилище данных и аналитикаБаза данных   MySQLDiagramingFactSetFinancial ITInteractive BrokersJavaMicrosoft OfficeOraclePowerPointProgramming   HTMLASSQLSQL ServerVisioVisual Studio

Access 2016: создать запрос