Сообщество - MS, Libreoffice & Google docs

MS, Libreoffice & Google docs

762 поста 14 934 подписчика

Популярные теги в сообществе:

63

Приводим данные в порядок с помощью Microsoft Access (часть8)

Microsoft Access предоставляет множество визуальных средств разработки приложения по работе с базой данных. Но рано или поздно возникает необходимость в более тонкой настройке отдельных ее частей и добавление нового функционала, который невозможно реализовать с помощью мастеров и конструкторов. Для этого Microsoft Access да и все программы из пакета MS Office могут расширять свой функционал с помощью встроенного языка программирования VBA (Visual Basic for Applications). Изучив основы языка VBA на одном из продуктов MS Office, в нашем случае это Access, его можно применять в других программах (Excel, Word, Power Point). Задачи автоматизации рутинных процессов не меняются долгое время. Не вдаваясь в новомодные течения, круг задач которые решает VBA будет востребован еще долго. Преимущества VBA в том, что он консервативен, но по прежнему востребован и не подвержен безумным обновлениям, что позволяет неискушенному пользователю спокойно и стабильно работать.

Создадим форму, которая всегда будет открываться при запуске нашей базы. Так называемое главное окно. На вкладке Создание нажмем Пустая форма.

Назовем ее main.

Далее Файл -> Параметры -> Текущая база данных, опция Форма просмотра, в выпадающем списке выберем форму main. Форма будет открываться при запуске приложения и с помощью нее можно организовать навигацию и доступ к другим объектам базы данных.

На вкладке Работа с базами данных нажмем на кнопку Visual Basic. Откроется окно редактора VBA. В редакторе мы будем писать код, который сможет обращаться ко всем нашим объектам (таблицы, формы, запросы, отчеты и т. п.) и принадлежащим им элементам, менять их свойства и поведение.

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


Sub MyFirstProcedure()

<Код на языке VBA>

End Sub

На панели инструментов нажмем Insert - > Module. Модуль это еще один объект нашей базы. В нем мы будем размещать наши процедуры, а затем вызывать их на исполнение. В окне кода модуля Module1 напишем следующее:


Sub MyFirstProcedure()

Debug.Print “Hello, world!”

End Sub

Убедимся что у нас открыто окно Immediate (View -> Immediate Window), оно необходимо для того, чтобы иметь возможность увидеть результаты выполнения программы в процессе ее отладки. На панели инструментов нажмем зленый треугольник (Run Sub), в окне Immediate увидим результат выполнения процедуры.

Теперь выведем наше приветствие на форму main. В режиме конструктора добавим текстовое поле и в окне свойств поля дадим ему имя txtHello.

С помощью VBA обратимся к этому полю из процедуры и поместим в него текст - Hello, world! Процедура будет иметь следующий вид:


Sub MyFirstProcedure()

Form_main.txtHello.Value = "Hello, world!"

End Sub

Запустим ее на исполнение и убедимся, что текстовое поле txtHello формы main получило значение - "Hello, world!"

Показать полностью 9
1099

Как быстро вставлять число прописью в Microsoft Word?

Чтобы перевести числа 1313 в расшифровку "одна тысяча триста тринадцать" нужно сделать следующее:


1. В нужном для вас месте текстового поля нажмите сочетание клавиш «Ctrl+F9». В тексте появится затененное поле с фигурными скобками.

2. Внутри фигурных скобок вставьте конструкцию вида «{ =1313 \*CardText }», где 1313 - это любое число, которое вы хотите видеть прописью.

3. Затем нажмите клавишу «F9», чтобы увидеть готовый результат.


* По умолчанию используются строчные буквы.

* Функция работает только с числами до 6 знаков, а дробную часть округляет до целого числа.

* Если при вводе формулы, раскладка клавиатуры будет на английском, то и текст будет на английском.

Как быстро вставлять число прописью в Microsoft Word?
Показать полностью 1
64

Приводим данные в порядок с помощью  Microsoft Access (часть7)

Продолжим знакомство с SQL. Рассмотрим запросы на вставку, обновление и удаление данных.

Запрос на вставку данных начинается с оператора INSERT INTO, далее следует имя таблицы и в скобках перечисление полей таблицы в которые мы хотим добавить данные, затем оператор VALUES и в скобках значения полей через запятую. Важно правильно соотнести перечисление полей и значений, иначе из-за несовпадения типов вставка не произойдет или произойдет со вставкой данных не в те поля. Заметим, что текстовые значения полей мы заключаем в двойные кавычки, а вот значение поля [companyid] нет, так как значение данного поля числовое.

Запрос на вставку данных будет иметь вид:


INSERT INTO contacts (name, surname, email, companyid)

VALUES ("Мария", "Пыхтина", "mariya85@ya.ru", 1);


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

Убедимся, что данные добавлены корректно.

Запрос на обновление предназначен для изменения данных полей. Начинается запрос с оператора UPDATE, затем следует имя таблицы, оператор SET и перечисление полей с их новыми значениями.

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

Запрос на обновление данных будет иметь вид:


UPDATE contacts SET email="mariya85@rambler.ru" WHERE id =21;


Выполним запрос.

Убедимся, что данные обновились.

Запрос на удаление начинается с оператора DELETE, затем следует символ (*) - что означает удаление записи полностью, если же нам надо удалить значение нескольких полей мы пользуемся запросом на обновление, затем оператор FROM с указанием имени таблицы, сразу же добавим секцию WHERE иначе будут удалены все записи таблицы.

Удаленные записи нельзя будет восстановить. Поэтому делать это нужно крайне аккуратно. И не забывать о том, что у нас есть связанные данные в других таблицах, которые тоже придется удалять. Чаще всего данные отмечаются каким-либо признаком и просто исключаются из выборки. Для этого у нас может послужить поле [active]. Так же при удалении записи, значение поля [id] с типом данных счетчик исключается из счетчика.

Запрос на удаление данных будет иметь вид:


DELETE * FROM contacts WHERE id =21;


Выполним запрос.

Убедимся, что указанная запись удалена.

Показать полностью 6
214

Приводим данные в порядок с помощью Microsoft Access (часть6)

Основу работы с реляционными базами данных составляет язык структурированных запросов SQL (Structured Query Language). Это набор инструкций по манипулированию объектами базы данных, с помощью них мы можем создавать таблицы, добавлять в них данные, производить выборку данных, удалять данные и удалять таблицы. Для всего этого мы пользовались соответствующими мастерами, но под капотом Access формулировал эти задачи на языке SQL и даже генерировал для нас готовый SQL код. Основные команды языка применимы к большинству реляционных баз данных (MS SQL Server, Oracle, MySQL, PostgreSQL, SQLite и т. п.), это устоявшийся стандарт в мире реляционных баз. Различные СУБД расширяют возможности SQL собственным функционалом, но основной синтаксисе с незначительными особенностями применим ко всем.

Откроем наш запрос contacts в режиме SQL. В окне построителя запросов мы наблюдаем код на языке SQL, код сгенерировал Access, но мы бы могли написать его сами и он бы заработал. Разберемся в структуре SQL запросов на более простом примере.

Самыми распространенными запросами являются:

запрос на выборку;

запрос на вставку;

запрос на удаление.

Самый простой запрос на выборку начинается с оператора SELECT, затем следует перечисление необходимых полей, затем оператор FROM после чего указывается имя таблицы (таблиц) которым принадлежат эти поля, например:


SELECT name, surname, email FROM contacts;


В результате мы получим все записи таблицы contacts, представленные тремя полями. Если же мы хотим вывести все поля мы можем написать SELECT * FROM contacts; В конце инструкции ставится точка с запятой.

Через вкладку Создание откроем уже не Мастер запросов, а Конструктор запросов. Не будем выбирать таблицу предложенную диалоговым окном и перейдем в SQL режим. Напишем здесь уже известную нам конструкцию SELECT name, surname, email FROM contacts; и отправим ее на исполнение нажав на кнопку с красным восклицательным знаком.

Убедимся в правильности вывода, действительно программа вывела все записи представленные тремя полями

Заменим перечисление полей в секции SELECT на символ * (звездочка):


SELECT * FROM contacts; и выполним запрос.

Результатом запроса будут все записи и все поля таблицы contacts.

Предположим нас интересуют только активные контакты. Реализуем это в SQL запросе, для этого существует оператор WHERE, это оператор условия. Запрос будет выглядеть следующим образом:

SELECT * FROM contacts WHERE active=true;


Иными словами показать все записи таблицы contacts где поле [active] имеет значение ИСТИНЫ, в SQL коде мы уже строго придерживаемся английского значения слова ИСТИНА – true и ЛОЖЬ – false.

Мы можем задавать несколько значений в секции WHERE. …WHERE условие1 AND условие2 AND условие3, перечисляя их через логические операторы AND. Например:


SELECT * FROM contacts WHERE active=true AND [regdate]= #27/10/2022#;


Запрос покажет все записи из таблицы contacts со значением поля [active] равным ИСТИНА и датой регистрации [regdate] равной 27.10.2022, заметим что дату мы обернули в символ решетки и разделили день, месяц, год через слеш, это необходимо при работе с датами в запросах.

В нашем запросе contacts, помимо таблицы contacts, есть еще таблица phones. В запросах мы можем указывать больше одной таблицы, но необходимо указывать по каким полям будет объединяться результат, для этого существует оператор INNER JOIN. Вообще тема объединения таблиц довольна обширна, мы же рассмотрим самый распространенный вид объединения - внутренне. Наш запрос усложняется наличием двух таблиц, имена полей теперь необходимо указывать в формате – имя_таблица.имя_поля, так как в разных таблицах могут находится поля с одинаковыми именами и как мы помним у нас в обоих таблицах есть поле [id]. Запрос на объединение таблицы contacts и phones c возможностью выбора полей из обоих таблиц будет выглядеть следующим образом:


SELECT contacts.name, contacts.surname, contacts.email, phones.phone

FROMcontacts INNERJOIN phones ON contacts.id = phones.userid;


Иными словами код говорит – выбрать поля [name], [surname], [email], [phone] из объединенных таблиц contacts и phones, где каждой записи таблицы contacts соответствует запись из таблицы phones, в которых поля [id] и [userid] совпадают.

Выполним запрос нажав на красный восклицательный знак.

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

Дополним наш запрос секцией WHERE, для выбора только активных контактов, при этом само поле [active] выводить не обязательно.


SELECT contacts.name, contacts.surname, contacts.email, phones.phone

FROM contacts INNER JOIN phones ON contacts.id = phones.userid

WHERE active=true;

Показать полностью 11
81

Приводим данные в порядок с помощью Microsoft Access (часть5)

В этой части мы познакомимся с ещё одним замечательным объектом Access – Отчеты (report).

Отчеты предназначены для наглядного вывода информации конечному потребителю, как правило отчеты имеют вид документов установленной формы (списки, справки и т. п.), которые распечатываются на бумаге, либо в привычных форматах (doc, pdf и т. п.) передаются пользователям.

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

Выберем для отчета поля [name], [surname], [email], [companyid], [phone], далее.

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

Выберем ступенчатую структуру, при желании это можно будет поменять в конструкторе отчетов. Чтобы все данные уместились на странице выберем альбомную ориентацию.

Завершим работу мастера. Теперь в области объектов базы данных появился новый объект – отчет contacts. Как и другие объекты базы, структуру отчета можно редактировать в режиме конструктора.

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

Изменим надписи полей на удобочитаемые.

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

Показать полностью 9
56

Приводим данные в порядок с помощью Microsoft Access (часть4)

Продолжим приводить наши данные в порядок.

Познакомимся с такими объектам базы данных как Запрсы (query). В работе с электронными таблицами, ярчайшим представителем которых является MS Excel, инструментом для выборки данных с заданными критериями является инструмент Фильтр. В Access этот инструмент тоже имеется и в некоторых случаях очень полезен. Но с ростом количества данных и усложнением их структуры каждый раз и под разные выборки манипулировать инструментом Фильтр становится сложнее. Для упрощения работы по выборке данных и существуют Запросы (в теории баз данных их еще называют представлениями).

Дополним таблицу contacts дополнительными данными для более наглядной работы с ней.

name;surname;email;companyid

Степан;Яковлев;Evgenij164@hotmail.com;ПАО Нефть

Игнат ;Богданов;Anton182@live.com;ПАО Теле

Евгений;Гурьев;Aleksandr91@bk.ru;ООО Компания ВодСантех

Марфа;Жукова;Marfa60@yahoo.com;ОАО МеталВостокОрион

Алина;Зуева;Alina124@msn.com; МКК ГорМобайл

Из вкладки Создание вызовем Мастер запросов.

Выберем простой запрос.

Так как нас интересует работа с контактами выберем таблицу contacts и все ее поля. Завершим работу мастера согласившись на условия по умолчанию, в любом случае все настройки мастера можно будет поменять самостоятельно когда это потребуется.

Результат простого запроса похож на обычную таблицу.

Перейдем в режим Конструктора запроса. В нижней части конструктора для каждого поля нашей таблицы мы можем задавать условия на отбор тем самым формируя сложные выборки. Предположим нас интересуют только активные контакты с номерами их телефонов. В условиях отбора поля [active] укажем Истина.

Отобразить таблицу и выберем таблицу phones, дважды кликнем на поле [phone], которое отобразится в наборе полей для запроса нижней части мастера запросов. Выполним запрос нажав на красный восклицательный знак панели инструментов.

Заметим, что контакты которые у нас имеют два и более номера телефонов дублируются, но с разными телефонами, в последствие мы это исправим. Теперь в области объектов у нас появился новый объект – Запрос contacts и мы сможем использовать его в других объектах базы.

Показать полностью 7
2

Помогите с Эксель

Есть таблица с данными людей из анкеты: фио, образование, контакты, удобное время работы. Надо:

1. Рассортировать по условиям (образование, время работы, опыт) так, чтобы у каждого был свой начальник и свой подчинённый. Подчинённый не может быть более опытным, чем начальник. Уровень образования и время работы должно совпадать. У кого-то удобное время работы указано как один диапазон (8-12), у кого-то несколько.

2. Написать текст с добавлением данных из таблицы с указание контактов начальника и подчинённого.

3. Сделать адресную рассылку в Гугл почте с отправкой данного текста


Может есть идеи, какие формулы использовать?


Пример строки: Иванов Иван Иванович | курс 1с | опыт 25-100 часов | время работы будни 8-11, 11-14, 17-21, выходные 12-17 | телефон | почта | соцсети.


Буду рада любой помощи 🙏

Отличная работа, все прочитано!