Форум программистов, компьютерный форум, киберфорум
Наши страницы
MS Access
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
Humorist
0 / 0 / 0
Регистрация: 17.05.2018
Сообщений: 24
1

Access в руках новичка

17.05.2018, 17:26. Просмотров 1197. Ответов 60
Метки нет (Все метки)

Добрый день Уважаемые посетители.
В силу сложившихся обстоятельств в поисках ответов на вопросы вынужден просить посильной помощи у Вас.
Коротко о себе. Мне 30, имею несколько дипломов но ни одного по программированию. Учился в физмате, там же было углубленное (в рамках школьной программы) программирование, но это были все-таки азы, хорошая база, которая позволяла развиться всякому желающему. Мое желание в плоскость программирования не пошло.

Моя ситуация.
--На работе ввели курсы повышения квалификации (разные) для сотрудников компании.
--Часть из этих курсов относится к нашему департаменту.
--На меня скинули следующую задачу. Сформировать реестры слушателей для каждой учебной программы.

В чем проблема:
-- Программ 28, филиалов 56+/- разбросаны по всей стране, от Калининграда до Владивостока.
--На каждую программу надо набрать 20 слушателей, где-то желающих больше, где-то желающих недостаточно и приходится обзванивать и просить.
--Программы есть как абсолютно уникальные (то есть составлены под один филиал и весь набор ведется из одного источника, в таком случае проблем никаких нет), а есть программы как котлован, набор слушателей ведется из разных источников, в довесок есть программы одинаковые, но проходящие в разное время, или в разных городах/ВУЗах, то есть степень вариативности тут достаточно высокая.
--Так как я человек новый, данный процесс был запущен без моего ведома, и я был просто помещен в ситуацию хаоса.
--Когда ко мне одновременно посыпались заявки на согласование кандидатур из всех филиалов (учитывая, что я новенький ситуация для меня была неприятной) на весь спектр программ (самая первая программа начиналась 30 апр, а последняя заканчивается в декабре)
--Если бы все это свалилось одномоментно большой бы беды не было, я бы в тишине спокойно бы разгреб списки из 500+ кандидатов.
--Но все сыпалось хаотично, оформление документов у всех разное, следовательно на обработку уходило много времени.
--Я уже не говорю о случая когда на местах подчеркнуто наплевательски относились к подаче заявки.
--И снова уходило время на то, что бы дозвониться, поговорить и уточнить.
--В компании есть ресурс по автоматизации, как коллеги сказали "неограниченный".
--Я обрадовался и быстренько накидал письмо со своими пожеланиями в части автоматизации процесса.

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

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

Разные самоучители/видеокурсы по Аccess формируют несколько таблиц с данными, потом их связывают. делают надстройки из формы ввода и вывода данных. В целом я понимаю зачем делать несколько разных таблиц вместо одной, так быстрее и проще их просматривать программе.

Тут-то у меня и возник первый вопрос. Каким образом мне лучше всего организовать свои таблицы?

у меня есть :
1 ФИО слушателя
2 Филиал (место его работы)
3 Подразделение филиала (далеко не всегда он есть, но можно внести наименование отдела, к примеру)
4 Рабочая электронная почта (ее я решил сделать ключевым полем в таблице, так как почтовый адрес 100% уникальный, на другом форуме мне объяснили что это не самая лучшая идея, и я ключевым полем буду делать "стандартное")
5 Наименование учебной программы
6 Срок проведения программы (он делится на дистанционную часть и очную)
7 Место проведения программы (ВУЗ, их всего 2, один в Москве, второй в Новосибирске)
7.1 Стоимость учебной программы
8 Логин и пароль для каждого слушателя
9 Внутренний документ (телеграмма) на основании которого слушателей отправляют на обучение (можно привязать к слушателю или филиалу)

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

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

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

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

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

Так же я понимаю, что все это можно сделать через excel. Запихать все в одну огромную таблицу на 500+ строк, с большим количеством столбцов (штук 15, наверное) и через фильтры получать данные.
Но это не так круто и красиво как Access. Этот пусть знают все, реализовать могут все. А Access для многих программа неведомая, одновременно красивая и тыры-пыры.

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

P.S. Прошу не закидывать какашками за дублирование темы, так как я планирую все свои вопросы, по мере их поступления, писать именно сюда.
В данный момент формирование базы уже идет. Что я сделал, сформировал одну таблицу с филиалами, ключевое поле сделал "стандартное"

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

P.P.S. Я понимаю, что для ниндзи БД проще дать мне готовое решение на мой вопрос, чем описывать, объяснять и учить, но с Вашего позволения я прошу если не подробно-подробно писать путь решения проблемы, то хотя бы просто укажите направление решения.

Так как на финальных этапах я хочу что бы из БД автоматом шла рассылка через outlook значений Логин, Пароль (которые присваиваются каждому слушателю и которые я буду вносить в соответствующую таблицу) + 2 документа word с телеграммой на обучение и excel с реестром слушателей, вот тут-то может быть вариант "скинь базу я лучше сам сделаю, чем буду тебе объяснять" будет более приемлемым

Всем заранее большое спасибо и надеюсь на Ваше терпение и понимание.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.05.2018, 17:26
Ответы с готовыми решениями:

Нужно ли устанавливать Access 2003, если в Access 2016 итак возможно разрабатывать БД в формате Access 2003?
Здравствуйте! Подскажите пожалуйста, нужно ли устанавливать Access 2003, если...

Вопрос новичка
Здравствуйте! Я занимаюсь созданием базы по видеороликам и столкнулась с такой...

Вопрос от новичка
Хочу реализовать вот какую функцию.Имеется одна таблица с полями ФИО и...

вопрос от новичка
не ругайтесь если посчитаете вопрос глупым-я только новичок. проблема такая:...

Dlookup для новичка
Здравствуйте гуру! Подскажите, пожалуйста, как использовать Dlookup в...

60
VinniPuh
Эксперт MS Access
6265 / 3568 / 361
Регистрация: 27.03.2013
Сообщений: 13,065
17.05.2018, 19:20 2
Humorist, Да уж, много делов то.
До конца лета при должном усердии можно наверное справиться.
Но так как у вас еще ни чего нет, то для начального толчка посмотрите примерчик по организациям и для описания ваших 56 +/- филиалов и попробуйте повводить данные.
Возможно на что то путное и полезное вас сей примерчик и направит.
1
Вложения
Тип файла: rar Организации-01 (Подр.Должн.Сост).rar (82.8 Кб, 15 просмотров)
Kiriver
56 / 45 / 17
Регистрация: 09.04.2018
Сообщений: 285
17.05.2018, 20:19 3
вставлю свои 5 копеек. учусь вот по такой книге Мэтью Мак-Дональд - Access 2007. Недостающее руководство - 2007
в приложении к ней есть диск (его можно скачать),так вот один из примеров в ней как раз БД школа. Почти всё, что вы перечислили там есть.
2
Humorist
0 / 0 / 0
Регистрация: 17.05.2018
Сообщений: 24
18.05.2018, 09:50  [ТС] 4
Большое спасибо за советы. Книгу на выходных постараюсь скачать, приложенный пример сегодня посмотрю. Вчера на ютубе нашел запись с семинара про реляционные БД, посмотрел и вроде бы все понятно. Но вопрос все же остался.
Общий принцип формирования БД я, надеюсь, понял верно. То есть все данные надо сгруппировать по какому-то общему признаку и в зависимости от наличия таких групп необходимо формировать таблицы (прошу прощения за упрощенный лексикон с явной отсылкой к excel, но если сейчас начну прибегать к помощи профессиональной лексики наверняка где-нибудь совершу ошибку, либо изложу мысль не верно, либо прочту не так)
так вот. я в своей ситуации буду формировать 3 таблицы.
1 - Филиал. В ней 2 столбца
- Ключевой
- Наименование филиала
2 - Учебная программа. В ней 9 столбцов
- Ключевой
- Полное наименование учеб. программы
- Краткое наименование учеб. программы
- Даты начала и окончания очной и заочной части обучения (всего 4 столбца)
- Место обучения
- Стоимость обучения
3 - Слушатели. В ней 12 столбцов
- Ключевой
- ФИО слушателя
- ФИО заменяющего слушателя (иногда бывает так, что утвержденный кандидат заменяется новым, для этого я ввел этот столбец, если замены не было, там пусто, если она была указываю фамилию нового)
- Филиал
- Подразделение филиала
- Должность Слушателя
- Адрес электронной почты (тут либо конкретного слушателя, либо контактного лица от филиала. И здесь у меня может быть накладка. При смене слушателя, должна будет и измениться электронная почта, в принципе, так как объем БД крохотный это можно сделать и ручками, но если есть более удачные вариации организации я буду благодарен за совет)
- Логин
- Пароль (эти два поля предоставляет сам институт)
- Логин/пароль переданы слушателю (логическое поле)
- Телеграмма
- Реестр (это вложенные файлы, внутренние документы компании)
На данный момент это все, что я успел обдумать и прошу дать оценку такой организации БД. Может быть более опытные посетители знают лучший путь организации?


P.S. У меня есть ряд пунктов по которым я испытываю сомнения.
1. Первоначально мне предложили сформировать отдельную таблицу на Телеграмму и Реестр (я считаю, что это много разумнее чем мой вариант, но телеграмма с реестром формируется на группу слушателей каким образом мне сформировать таблицу? Сделать:
- Ключевой
- Номер телеграммы
- Номер реестра
- Вложенные файлы
А связать как потом? Через столбец Телеграмма в таблице слушатели?
2. И самое главное объясните, мне, пожалуйста, за связи таблиц? Как вообще все это связать и что есть эта связь?
Сейчас постараюсь объяснить свою проблему.
У меня есть отдельные таблицы Филиал, Слушатели, Учебные программы. Слушатель будет связан с таблицей филиал через одноименный столбец "Филиал" по принципу многие к одному (многие слушатели могут относиться к одному филиалу). Но мне же надо сформировать группы по 20 человек по признаку наименования учебной программы. Значит мне надо в таблицу Слушатели добавить столбец Учебная программа (к примеру краткую форму ее написания) и таким образом будет организована связь, по принципу многие к одному (многие Слушатели могут относиться к одной учебной программе)
Отсюда у меня вопрос, верно ли я понимаю чуть связей и организации БД?
Выходит, что БД это набор таблиц, которые содержат в себе данные имеющие единый признак группировки иными словами справочники. При этом можно сколь угодно подробно описывать что-либо в любой таблице. Но набрав несколько таких таблиц (справочников) создается дополнительная, которая наполняется посредством ссылок на предыдущие таблицы. Это и есть те самые связи. Верно ли я все это понимаю?
Спасибо
0
avgur113
26 / 25 / 6
Регистрация: 20.04.2013
Сообщений: 68
18.05.2018, 10:16 5
Лучший ответ Сообщение было отмечено Humorist как решение

Решение

"ФИО заменяющего слушателя" - не годится. При запросах будут сложности или вдруг подряд несколько замен. Проще логическое поле "Зачислен" и поле "Примечание", где можете отметить кто кого и когда заменил.
1
Humorist
0 / 0 / 0
Регистрация: 17.05.2018
Сообщений: 24
18.05.2018, 10:30  [ТС] 6
"Примечание" в той же таблице? К сожалению не до конца понял. Вас не затруднит пояснить?
Цитата Сообщение от avgur113 Посмотреть сообщение
При запросах будут сложности или вдруг подряд несколько замен.
Да, замен очень много, текучка высокая и постоянная. Поэтому мне важно знать ФИО первого, и ФИО второго, так как логин и пароль присваивается первому слушателю, заменяющий должен использовать логин/пароль от предшествующего.
Может быть убрать колонку "ФИО Заменяющего", ввести логическую "зачислен/не зачислен" и просто добавлять строку с новым? А вывод данных организовать в том числе и по признаку Зачислен/не зачислен?
Но все равно, мне надо как-то увязывать выбывшего и заменяющего.
0
avgur113
26 / 25 / 6
Регистрация: 20.04.2013
Сообщений: 68
18.05.2018, 10:55 7
Лучший ответ Сообщение было отмечено Humorist как решение

Решение

Если так это важно то создается доп.таблица "История_замен" куда при помощи макроса или Vb должны быть занесены все замены с датой и временем замен. Но вам по вашим желаниям нужно учить матчасть. Здесь вам могут только посоветовать и помочь, а в остальном вы сами. Поищите в торрентах курсы по Access Специалист
0
Панург
Мы один, давай на "ты"
1631 / 708 / 138
Регистрация: 16.06.2016
Сообщений: 1,406
18.05.2018, 10:56 8
Лучший ответ Сообщение было отмечено Humorist как решение

Решение

Цитата Сообщение от Humorist Посмотреть сообщение
Да, замен очень много, текучка высокая и постоянная. Поэтому мне важно знать ФИО первого, и ФИО второго, так как логин и пароль присваивается первому слушателю, заменяющий должен использовать логин/пароль от предшествующего.
Не читал всё ибо "многа букав".

Для начала нужно разработать и выделить объекты, потом определить нужные связи, затем создавать таблицы.
В данном случае есть два объекта Слушатель и Человек (возможно Работник) - это два набора свойств (описываются отдельными таблицами). Между собой они связаны "many-to-many" (многие ко многим) через таблицу связи. В этой таблице и возможно проследить, кто кого и когда замещал.
0
Humorist
0 / 0 / 0
Регистрация: 17.05.2018
Сообщений: 24
20.05.2018, 13:28  [ТС] 9
Цитата Сообщение от VinniPuh Посмотреть сообщение
Возможно на что то путное и полезное вас сей примерчик и направит.
Направил, большое спасибо за помощь.
Если не обременит, пожалуйста, подскажите каким образом можно организовать on line отображение текущего времени в шапке формы?
Никак не удается. То, что нашел отображает только то время в момент которого произошло обновление формы.
Спасибо
0
Kiriver
56 / 45 / 17
Регистрация: 09.04.2018
Сообщений: 285
20.05.2018, 13:46 10
Цитата Сообщение от Humorist Посмотреть сообщение
Если не обременит, пожалуйста, подскажите каким образом можно организовать on line отображение текущего времени в шапке формы
Вставить элемент AktiveX
1
Миниатюры
Access в руках новичка   Access в руках новичка  
Изображения
 
VinniPuh
Эксперт MS Access
6265 / 3568 / 361
Регистрация: 27.03.2013
Сообщений: 13,065
20.05.2018, 15:16 11
Humorist, откройте в режиме конструктора форму - Главная.
В свойстве - Таймер смотрите процедуру.
Ниже в свойстве - Интервал, нужно вместо нуля поставить 1000, это количество миллисекунд в секунде и свободное поле с Временем будет обновляться каждую секунду.
1
Humorist
0 / 0 / 0
Регистрация: 17.05.2018
Сообщений: 24
21.05.2018, 23:18  [ТС] 12
Всем здравствуйте.
Прошу посмотреть прикрепленный скрин и дать свою оценку организации таблиц. Так как есть у меня подозрения, что организовал я их логически не верно. Не нравится мне связь между Учебные-программы и Работники, но исправить не получается.
Саму базу выложу чуть позднее, так как нажо предварительно потереть личную информацию. (не принимайте близко к сердцу, пожалуйста)
Заранее спасибо
0
Миниатюры
Access в руках новичка  
amd48
390 / 132 / 20
Регистрация: 18.05.2016
Сообщений: 353
Записей в блоге: 1
22.05.2018, 09:59 13
Пока не поздно, избавляйтесь он названий с пробелами. Или подчёркивания вместо них или ИменаЧерезЗаглавнуюБукву. Если очень нужно для понимания назначения полей, лучше в конструкторе таблицы у поля заполнить свойство "Подпись". Ну и в будущем https://ru.wikipedia.org/wiki/Венгерская_нотация
2
alvk
Эксперт MS Access
5605 / 3500 / 169
Регистрация: 12.08.2011
Сообщений: 8,921
23.05.2018, 05:09 14
Все почему-то рекомендуют книги, но никто не даёт наш подфорум.
Вот ссылка Написание статей там есть многое для изучения азов, в том числе рассмотрение построения БД с нуля на конкретном примере
Написание статей
2
Humorist
0 / 0 / 0
Регистрация: 17.05.2018
Сообщений: 24
24.05.2018, 11:59  [ТС] 15
Всем добрый день.
Сформировал таблицы и связал их. Вроде бы процесс идет. Создал форму для ввода данных в таблицу Учебные группы. Данная таблица связана с таблицей-каталогом "Работники" и таблицей-каталогом "Учебные_программы"
При использовании формы ввода можно случайно занести одного и того же работника два и более раз. Защиты по умолчанию тут нет. Нашел инструкцию и код, но ручки пока кривые и прошу ознакомиться с нижеприведенным кодом на предмет наличия ошибки.
Так же прошу подсказать, как мне добавить в анализ второе дополнительное поле из формы ввода. Заранее спасибо
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub ФИО_слушателя_LostFocus()
On Error GoTo Err_ФИО_слушателя_Click
Dim Cod As Integer
Dim Answer As Integer
    Answer = DCount("[ФИО_слушателя]", "Работники", "[ФИО_слушателя]=Forms![Работники]![ФИО_слушателя]")
    If Answer = 1 Then
    MsgBox prompt:="Значение уже содержится в файле"
    End If
Err_ФИО_слушателя_LostFocus_Click:
    MsgBox Err.Description
    Resume Exit_ФИО_слушателя_LostFocus_Click
    
End Sub
0
snipe
2872 / 981 / 222
Регистрация: 07.08.2013
Сообщений: 2,460
24.05.2018, 12:38 16
так не сработает
Visual Basic
1
Answer = DCount("[ФИО_слушателя]", "Работники", "[ФИО_слушателя]=Forms![Работники]![ФИО_слушателя]")
лучше подсунуть конкретное значение
Visual Basic
1
Answer = DCount("[ФИО_слушателя]", "Работники", "[ФИО_слушателя]=" & Forms![Работники]![ФИО_слушателя])
или же (если [ФИО_слушателя] текстовое )
Visual Basic
1
Answer = DCount("[ФИО_слушателя]", "Работники", "[ФИО_слушателя]='" & Forms![Работники]![ФИО_слушателя] & "'")
Добавлено через 3 минуты
и вот это место
Visual Basic
1
If Answer = 1 Then
лучше записать так (вдруг какой-то юзер проигнорирует сообщение о дублировании)
Visual Basic
1
If Answer >= 1 Then
1
Панург
Мы один, давай на "ты"
1631 / 708 / 138
Регистрация: 16.06.2016
Сообщений: 1,406
24.05.2018, 12:57 17
Цитата Сообщение от Humorist Посмотреть сообщение
Прошу посмотреть прикрепленный скрин и дать свою оценку организации таблиц.
неправильно задана связь между "работником" и "учебные группы" (кстати почему группы? это же слушатель). Связь будет "многие ко многим" исходя из этого
Цитата Сообщение от Humorist Посмотреть сообщение
Да, замен очень много, текучка высокая и постоянная. Поэтому мне важно знать ФИО первого, и ФИО второго
И явно не хватает отдельной таблицы "Группы" которая связана с таблицей слушатели "один ко многим"

Код пока рано писать (а возможно и ненужно). Мало сформировать таблицы нужно создать индексы и констрейны.
1
alvk
Эксперт MS Access
5605 / 3500 / 169
Регистрация: 12.08.2011
Сообщений: 8,921
24.05.2018, 13:18 18
Цитата Сообщение от Humorist Посмотреть сообщение
жно случайно занести одного и того же работника два и более раз. Защиты по умолчанию тут нет
что означает "один и тот же"? два Ивановых Иван Иваныча? так это в реальности есть
1
Humorist
0 / 0 / 0
Регистрация: 17.05.2018
Сообщений: 24
24.05.2018, 13:21  [ТС] 19
Цитата Сообщение от Панург Посмотреть сообщение
неправильно задана связь между "работником" и "учебные группы" (кстати почему группы? это же слушатель). Связь будет "многие ко многим" исходя из этого
Не до конца понял мысль. Ведь одном работник может быть только одним слушателем.
Отслеживание кто, кого заменил я сделал через поле "примечание" и логическое поле.
В итоге в таблицу Учебные группы я заношу всех подряд, но флажок присваиваю только тем кто зачислен. Если была замена и человек не зачислен, то флажок убираю, а в примечании пишу кем заменили. Аналогично, вношу замененного, ставлю флажок и в примечании пишу, кого заменил.
Я как доделаю все, что я запланировал, обязательно сюда выложу для сбора экспертных мнений. Наверняка будет много советов по улучшению и упрощению.
0
alvk
Эксперт MS Access
5605 / 3500 / 169
Регистрация: 12.08.2011
Сообщений: 8,921
24.05.2018, 13:40 20
Выложите схему данных, прежде чем будете "жирок накапливать" в БД. Ошибки на первом этапе чреваты в последующем создании форм и т.д.
0
24.05.2018, 13:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.05.2018, 13:40

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

Вопрос от новичка: текущая запись
Подскажите пожалуйста, как в табличной форме (или подчинённой форме) узнать...

Источник строк для Новичка!
Доброго времени суток! Дайте ссылку, направление, куда копать, по работе с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru