![]() |
|
Модераторы: Poseidon |
![]()
|
|
| POMA |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 2.11.2008 Репутация: нет Всего: нет |
Задача: Написать БД по учету компьютеров и оргтехники на предприятии. Программа должна уметь импортировать основные данные из отчетов Everest-а, ручной ввод/редактирование. Движение техники юзер/склад/ремонт/списать. Поиск по любому параметру, отчеты.
Знаю, что есть готовые программы, заточенные под подобные задачи. Пробовал, не подходят по ряду причин. Взялся за это дело с Excel и VBA для него, но чувствую, что не потяну. Программа работает но слишком громоздкая и медленная. Кроме того возникают проблемы при изменении. Так, если добавить/удалить столбец на лист, то придется переписывать весь код, где этот столбец фигурирует. (добавил два столбца и два cjmbobox и весь код крошить пришлось) Поэтому решил освоить (с нуля) Access. Итак. Стоит ли мутить воду с Access? Есть таблица столбец1 "Где" может принимать значения "юзер", "ремонт", "склад" (может еще что) столбец2 "РабочееМесто" значения, например ОтделКадров_1, ОтделКадров_2 и тд столбец3 "Параметр" (пока не знаю, как его назвать своего рода ключ к ячейкам следующих столбцов) может принимать значения "переферия ", "СистемныйБлок", "Пользователь" и тд столбец4 "Наименование" может принимать значения "принтер", "сканер", "монитор", "CPU", "IP_адрес", и тд и тп столбец 5 "Имя" значения "192.168.1.1", "Xerox 3121", " Kingston 1024 Mb", и тд столбец 6 "серийныйНомер" столбец 6 "ИнвентарныйНомер" пример (без столбцов серийный и инвентарный) Где РабочееМесто Параметр Наименование Имя Юзер ОтделКадров_1 переферия монитор Sony555 Юзер ОтделКадров_1 переферия принтер Xerox333 Юзер ОтделКадров_1 СистемныйБлок CPU IP4;2800 Юзер ОтделКадров_1 СистемныйБлок HDD1 Maxtor80 Юзер ОтделКадров_1 Софт os WinXP Юзер ОтделКадров_1 Софт мыло [email protected] Юзер ОтделКадров_1 Юзер ФИО ИвановИИ Ремонт ОтделКадров_1 переферия монитор Sony777 Склад -------------------- переферия принтер Sony555 и так далее в тоже духе. (может еще столбцы надо? даты какие нить? примечания) Так, если подобную таблицу использовать в Excel то используя автофильтр можно получить практически любой отчет по оргтехнике предприятия. Если использовать UserForm с кучей combo и text box-ов можно забивать, редактировать и управлять таблицей Думаю, что и Access справится с задачей. Тем более, что он заточен под ведение баз данных Отсюда вопросы: 1.Правильное ли направление я выбрал для структуры БД? 2.В таблице великое множество повторяющихся значений. Реально ли использовать подстановку, когда при добавлении новых значений в основную таблицу новые значения появятся в таблице, на которую ссылается основная? (У меня пока не получилось даже разрешить добавлять новые значения. Access ругается на какую-то ширину столбца) 3. Реально ли освоить Access для такой задачи или лучше использовать то, что знаю (Excel VBA)? 4 Остальное по ходу |
|||
|
||||
| bopoha |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1283 Регистрация: 10.5.2006 Где: Беларусь, Минск Репутация: нет Всего: 21 |
1. Нет. Вы пытаетесь засунуть все данные в одну таблицу, как в Excel. В MS Access данные можно раскидать по таблицам со связями между ними. См. реляцинная маодель данных.
2. Реально. "Просто добавте табличку", т.е. см. п.1. 3. Все освоили и вы справились. Вопрос в затратах денег и времени. Сразу хорошо не сделаете. Переделывать придется по-любому. |
|||
|
||||
| POMA |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 2.11.2008 Репутация: нет Всего: нет |
Эта таблица плод нескольконедельных усилий Изначально пытался втиснуть в одну строку все данные но не получается. К примеру монитор на рабочем месте. Хорошо, если он один. делаем столбцы наименование, серийник, инвентарный, состояние (юзер/склад/ремонт). А если три монитора? У нас есть и такие рабочие места. А железо внутри компа!? 255 столбцов не хватит.
Эта таблица своего рода адрес. К примеру, по адресу (страна, город, улица, дом, квартира) можно найти любого человека. Так и тут с запрсом найти все строки в столбце РабочееМесто со значением ОтделКакдров_1 мы получим все, что есть на этом рабочем месте. Если найти "Xerox3121" в столбце Имя то получим все рабочие места с этим принтером если включить еще фильтр то можно найти "Xerox3121" которые в ремонте. Или задать фильтр "ремонт" столбец "где" и "принтер" столбец "наименование" то получим все принтеры в ремонте. На счет связанных таблиц я так и буду делать. Почти все столбцы основной таблицы будут (как это правильно сказать?) маленькими подтаблицами (ссылками чтоли). У меня пока Access ругается и не хочет разрешать вставлять новые значения в таблицу. Времени как раз и нет. Есть только стимул. После создания БД и инвентаризации меня переводят в хороший график 2х2 (два дня дома, два дня на работе) пс Книжульку б какую-нить типа "быстрый старт". А то изучаешь "труды", пока одно читаешь другое забыл, а за комп сел не работает ни одно ни другое. |
|||
|
||||
| Akina |
|
||||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 17 Всего: 454 |
Боюсь, что инвентаризацию этого года вы провалите безоговорочно. Следующего - по срокам. Извини, но "быстро только кошки родятся". Мутить воду - нет. А вот серьёзно подойти к созданию нужного приложения - вполне можно. Учитывая описанное выше и сделав из него правильный вывод - разработка не будет готова к ближайшей инвентаризации, и ее следует выполнять уже имеющимся порядком, без оглядки на это приложение.
Какие проблемы? дойди до ближайшего книжного магазина и купи книжку. И делай параллельно с чтением. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
||||
|
|||||
| bopoha |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1283 Регистрация: 10.5.2006 Где: Беларусь, Минск Репутация: нет Всего: 21 |
POMA, как насчет того, чтобы завести карточку рабочего места и впихивать уже к нему любое оборудование, которое класифицируется по типам. А вы все равно пытаетесь засунуть все в одну таблицу, справочники не в счет.
|
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 17 Всего: 454 |
Вообще список оборудования с точки зрения хранения представляет собой многоуровневое дерево. От этого и следует отталкиваться.
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| POMA |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 2.11.2008 Репутация: нет Всего: нет |
Akina,
Инвентаризацию сдал сегодня. Но на Excel. Основная таблица та, которая как образец выше. За исключением отсутствия столбца "параметр" (CPU - это процессор. Понятное дело, что он в системном блоке а не иначе) то есть необходимости в этом столбце нет. Когда при чтении параллельно пишешь учебную базу, которая хоть как-то работает это помогает. Тонкости работы и детали можно выяснить по мере необходимости. К примеру, в книжке не нашел что за "таблица_старая" появляется после разделения таблицы на связные. Это на счет делать параллельно с чтением. И еще: решил разделить телефонный справочник. Вытащил поле "фамилия" (бо много одинаковых) и Access мне выдал "по видимому не все поля будут связаны"... или типа "есть похожие давайте поменяем? Иванов на Петров" (!!!!) и это 8 тысяч фамилий (!) руками сказать access- у "НЕТ не менять" В книжках я ничего этого не нашел. Без оглядки на это приложение не получится. Так или иначе БД придется вести программами для БД. Excel с этим делом тяжело справляется. Взвесив все "за" и "против" остановился на приложении, которое мне известно, хотя в А (при наличии знаний) сделать было бы проще. bopoha, Своего рода карточки уже есть это файлы Report###.html которые создает Everest как отчет (### - IP адрес. Гемор только с локальными машинами). Excel делает web запрос к файлам извлекает необходимые данные, помещает их на userform затем ручная коррекция (серийники UPS-ов Everest не выдаст) жмем "применить" и данные с формы в таблицу. Основная рутинная работа выполнена. Неоходимый отчет из таблицы извлечь не сложно. Была задумка сделать каждый лист Excel - карточкой рабочего места. Отказался (те же я-ца только в профиль) Akina, "Вообще список оборудования с точки зрения хранения представляет собой многоуровневое дерево. От этого и следует отталкиваться." Если можно поподробнее. Не уловил суть. Структура предприятия - многоуровневое древо. понятно. А железо? |
|||
|
||||
| bopoha |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1283 Регистрация: 10.5.2006 Где: Беларусь, Минск Репутация: нет Всего: 21 |
POMA, мы с вами разговариваем на разных языках. Предлагаю следующее. Перед тем, как создавать базу, прочитайте про реляционную модель данных.
А потом для вас станет понятно, что значит предложение: Завести таблицы следующего смысла "Оборудование", "Рабочее место", "Наименование Оборудования", "Пользователь", "Тип Оборудования". Это, скорей всего не все таблицы. И призываю вас не называть таблицы по-русски. Используйте латиницу и символ подчеркивания вместо пробела. Можно конечно таблицу "Оборудование" разбить на разные таблицы, в зависимости от типа, но это по желанию. Теперь про связи. Таблица "Оборудование" содержит внешние ключи на таблицы "Рабочее место", "Тип Оборудования", "Наименование Оборудования" и "Оборудование" (что бы можно было к системному блоку добавить материнскую плату и пр., если нужно). Таблица "Рабочее место" содержит внешние ключ на таблицу "Пользователь". А то, что генерирует Everest, совершенно другая история и называется она входные данные. |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 17 Всего: 454 |
У тебя есть одна сущность - оборудование. Причем это может быть как самостоятельный компонент (скажем, видеокарта или процессор), так и компонент, состоящий из таких самостоятельных компонентов (скажем, системный блок), который в свою очередь может быть составной частью более крупного компонента (АРМа). Соответственно в структуре для каждого компонента должно быть предусмотрено поле-ссылка на "вышестоящий" компонент, в состав которого он входит, а также поле категории этой учетной единицы по уровню вхождения, наличию индивидуального инвентаризационного номера и т.п. Ссылка должна иметь возможность содержать не только ссылки на другие компоненты, но и специальные значения (на складе, в ремонте, ожидает входной обработки и пр.). Категория позволит в разных учетных и корректировочных формах выводить для обработки только компоненты необходимой степени детализации отчета/формы. Когда Вы усвоите основы организации реляционной модели хранения и обработки данных, вышенаписанное станет понятным и пригодным к реализации. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| POMA |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 2.11.2008 Репутация: нет Всего: нет |
Akina,
Понял на счет древовидной модели. Это для меня и остается самым сложным моментом. Если, к примеру, принтер(ы) привязывать к рабочим местам то с ними проблемм нет (ну если не учитывать расходники) А вот системмник - с ним сложнее. Он может быть как самостоятельная единица, привязанная к рабочему месту, так и набор деталей, которые можно менять и это должна учитывать программа. То о чем вы рассказываете очень хорошо. Есть даже готовые программные продукты но уж очень они громоздки в управлении. Сегодня упростил таблицу: Workplace Parametre Value отдел_кадр1 CPU IP4 отдел_кадр1 DIMM1 kingston512 отдел_кадр1 DIMM2 kingston512 отдел_кадр1 VolMem 1024 отдел_кадр1 User Иванов ИИ отдел_кадр1 per_comp aqarius 555 отдел_кадр1 Monitor_name1 benq757 отдел_кадр1 Monitor_SN1 QWE1234567890 отдел_кадр1 Office Отдел Кадров если принять во внимание то, что видеокарта, память, проц итд являются частью системного блока per_comp aqarius 555 расположеном на рабочем месте отдел_кадр1 которое в свою очередь находится кабинете Отдел Кадров то подобная модель построения данных достаточно гибкая как для внесения данных (разумеется не руками, а через userform) так и для получения отчетов. Пример: задаем фильтр Value="Отдел кадров" и получаем список рабочих мест этого кабинета. Задаем фильтр Workplace="отдел_кадр1", "отдел_кадр2", "отдел_кадр3" а с Value фильтр снимаем. Получаем все железо в отделе кадров. добавляем фильтр Parametre="volmem" и получаем общий объем оперативной памяти в отделе кадров на всех машинах. Или Parametre="monitor_name1" и получаем список мониторов (фильтр можно снабдить казявой, которая будет откидывать последнюю цифру для учета, например, dimm1, dimm2, dimm3) Про реляционную модель читал. Понравилось. Очень даже хорошая идея. Если я сделаю связанную основную таблицу и Workplace то возникает вопрос: при подстановке новых значений в поле(столбец) Workplace основной таблице они появятся в таблице Workplace? У меня не получилось заставить access не ограничиваться списком. Да и не такая уж огромная бд. Пока хватит и одной таблицы. Можно пару столбцов добавить "Дата_изменения_записи" и "кто_изменил_запись" Хотя лучше вести подробную историю. Недостатком этого творчества на VBA Excel является то, что при добавлении на форму нового параметра придется в нескольких местах добавлять/менять код. Сейчас задача определить подводные камни подобной таблицы. Если кординальных перемен не будет то из существующего вида ее можно трансформировать в любой другой удобный для чтения вид не сложными программными средствами. в том числе и в access |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 17 Всего: 454 |
C какой радости? программно, программно... тем более что в таблице компонентов хранят не место, а только ссылку (ID) записи из таблицы мест. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| POMA |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 2.11.2008 Репутация: нет Всего: нет |
Akina,
Вот те раз.... Я то наивно думал, что поставив новое значение в таблицу оно само переедет в другую таблицу, а на старом месте останется ID нового значения. Тогда в чем полезность использования реляционной базы? Экономия места на жестком диске и опасность однажды потерять эти связи? |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 17 Всего: 454 |
Тебе же уже сказали - читай. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| POMA |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 2.11.2008 Репутация: нет Всего: нет |
Akina,
Не ответ. Что я узнаю нового от повторного прочтения? Пример реализации реляционной таблицы в excel использовать в столбце Workplace не наименования рабочих мест, а код (1,2,3,4,5) и дополнительный лист "Workplace" в столбце A:A которого будут наименования рабочих мест Тогда Наименование_Рабочего_Места=ИНДЕКС(Workplace!A:A;Код). Будет ли этоа формула на листе или в VBA не суть важно. И какие от этого плюсы? Кроме того Access позволяет проанализировать таблицу и сделать из одной несколько связных. Так что в каком виде она будет не столь важно. Сейчас главное - структура программы/таблицы. И что эта таблица не позволит реализовать. |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 17 Всего: 454 |
Суть системы обеспечения целостности и непротиворечивости данных тобой понята? Преимущества индексирования данных - тоже? Принцип построения системы безопасности? разделения доступа? обеспечения одновременной работы? разрешения коллизий? транзакции?
Ерунда это всё. Прежде чем понимать, КАК сделать, надо понимать ПОЧЕМУ. Или, иными словами, на каких ПРИНЦИПАХ. Конкретная реализация, когда есть готовый план - дело чисто техническое и рутинное. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
![]()
|
| Правила форума "Центр помощи" | |
|
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Центр помощи | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |