Модераторы: Poseidon

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [MS Access] Проблемы у новичка, Взялся за БД компьютеров предприятия. 
:(
    Опции темы
POMA
Дата 2.11.2008, 23:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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 Остальное по ходу
PM MAIL   Вверх
bopoha
Дата 2.11.2008, 23:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1283
Регистрация: 10.5.2006
Где: Беларусь, Минск

Репутация: нет
Всего: 21



1. Нет. Вы пытаетесь засунуть все данные в одну таблицу, как в Excel. В MS Access данные можно раскидать по таблицам со связями между ними. См. реляцинная маодель данных.
2. Реально. "Просто добавте табличку", т.е. см. п.1.
3. Все освоили и вы справились. Вопрос в затратах денег и времени. Сразу хорошо не сделаете. Переделывать придется по-любому.
PM MAIL WWW ICQ Skype GTalk   Вверх
POMA
Дата 3.11.2008, 00:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 2.11.2008

Репутация: нет
Всего: нет



Эта таблица плод нескольконедельных усилий Изначально пытался втиснуть в одну строку все данные но не получается. К примеру монитор на рабочем месте. Хорошо, если он один. делаем столбцы наименование, серийник, инвентарный, состояние (юзер/склад/ремонт). А если три монитора? У нас есть и такие рабочие места. А железо внутри компа!? 255 столбцов не хватит.
Эта таблица своего рода адрес. К примеру, по адресу (страна, город, улица, дом, квартира) можно найти любого человека. Так и тут с запрсом найти все строки в столбце  РабочееМесто со значением ОтделКакдров_1 мы получим все, что есть на этом рабочем месте. Если найти "Xerox3121" в столбце Имя то получим все рабочие места с этим принтером если включить еще фильтр то можно найти "Xerox3121" которые в ремонте. Или задать фильтр "ремонт" столбец "где" и "принтер" столбец "наименование" то получим все принтеры в ремонте.

На счет связанных таблиц я так и буду делать. Почти все столбцы основной таблицы будут (как это правильно сказать?) маленькими подтаблицами (ссылками чтоли). У меня пока Access ругается и не хочет разрешать вставлять новые значения в таблицу.

Времени как раз и нет.  Есть только стимул. После создания БД и инвентаризации меня переводят в хороший график 2х2 (два дня дома, два дня на работе)

пс
Книжульку б какую-нить типа "быстрый старт". А то изучаешь "труды", пока одно читаешь другое забыл, а за комп сел не работает ни одно ни другое.
PM MAIL   Вверх
Akina
Дата 3.11.2008, 19:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 17
Всего: 454



Цитата(POMA @  3.11.2008,  01:23 Найти цитируемый пост)
Времени как раз и нет.  Есть только стимул. После создания БД и инвентаризации меня переводят в хороший график 2х2 (два дня дома, два дня на работе)

Боюсь, что инвентаризацию этого года вы провалите безоговорочно. Следующего - по срокам.

Цитата(POMA @  3.11.2008,  01:23 Найти цитируемый пост)
Книжульку б какую-нить типа "быстрый старт". 

Извини, но "быстро только кошки родятся". 

Цитата(POMA @  3.11.2008,  00:21 Найти цитируемый пост)
Стоит ли мутить воду с Access?

Мутить воду - нет. А вот серьёзно подойти к созданию нужного приложения - вполне можно. Учитывая описанное выше и сделав из него правильный вывод - разработка не будет готова к ближайшей инвентаризации, и ее следует выполнять уже имеющимся порядком, без оглядки на это приложение.

Цитата(POMA @  3.11.2008,  01:23 Найти цитируемый пост)
изучаешь "труды", пока одно читаешь другое забыл, а за комп сел не работает ни одно ни другое

Какие проблемы? дойди до ближайшего книжного магазина и купи книжку. И делай параллельно с чтением.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
bopoha
Дата 5.11.2008, 02:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1283
Регистрация: 10.5.2006
Где: Беларусь, Минск

Репутация: нет
Всего: 21



POMA, как насчет того, чтобы завести карточку рабочего места и впихивать уже к нему любое оборудование, которое класифицируется по типам. А вы все равно пытаетесь засунуть все в одну таблицу, справочники не в счет.
PM MAIL WWW ICQ Skype GTalk   Вверх
Akina
Дата 5.11.2008, 09:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 17
Всего: 454



Вообще список оборудования с точки зрения хранения представляет собой многоуровневое дерево. От этого и следует отталкиваться.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
POMA
Дата 6.11.2008, 23:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 2.11.2008

Репутация: нет
Всего: нет



Akina, 
Инвентаризацию сдал сегодня. Но на Excel. Основная таблица та, которая как образец выше.  За исключением отсутствия столбца "параметр" (CPU - это процессор. Понятное дело, что он в системном блоке а не иначе) то есть необходимости в этом столбце нет.


Когда при чтении параллельно пишешь учебную базу, которая хоть как-то работает это помогает. Тонкости работы и детали можно выяснить по мере необходимости. К примеру, в книжке не нашел что за "таблица_старая" появляется после разделения таблицы на связные.  Это на счет делать параллельно с чтением. И еще: решил разделить телефонный справочник. Вытащил поле "фамилия" (бо много одинаковых) и Access мне выдал "по видимому не все поля будут связаны"... или типа "есть похожие давайте поменяем? Иванов на Петров" (!!!!) и это 8 тысяч фамилий (!) руками сказать access- у "НЕТ не менять" В книжках я ничего этого не нашел.

Без оглядки на это приложение не получится. Так или иначе БД придется вести программами для БД. Excel с этим делом тяжело справляется. Взвесив все "за" и "против" остановился на приложении, которое мне известно, хотя в А (при наличии знаний) сделать было бы проще.


bopoha, 
Своего рода карточки уже есть это файлы Report###.html которые создает Everest как отчет  (### - IP адрес. Гемор только с локальными машинами).  Excel делает web запрос к файлам извлекает необходимые данные, помещает их на userform затем ручная коррекция (серийники UPS-ов Everest не выдаст) жмем "применить" и данные с формы в таблицу. Основная рутинная работа выполнена. Неоходимый отчет из таблицы извлечь не сложно. Была задумка сделать каждый лист Excel - карточкой рабочего места. Отказался (те же я-ца только в профиль)

Akina, 
"Вообще список оборудования с точки зрения хранения представляет собой многоуровневое дерево. От этого и следует отталкиваться."

Если можно поподробнее. Не уловил суть. 
Структура предприятия - многоуровневое древо. понятно. А железо?

PM MAIL   Вверх
bopoha
Дата 7.11.2008, 00:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1283
Регистрация: 10.5.2006
Где: Беларусь, Минск

Репутация: нет
Всего: 21



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

А потом для вас станет понятно, что значит предложение: Завести таблицы следующего смысла "Оборудование", "Рабочее место", "Наименование Оборудования", "Пользователь", "Тип Оборудования". Это, скорей всего не все таблицы. И призываю вас не называть таблицы по-русски. Используйте латиницу и символ подчеркивания вместо пробела. Можно конечно таблицу "Оборудование" разбить на разные таблицы, в зависимости от типа, но это по желанию.
 
Теперь про связи. Таблица "Оборудование" содержит внешние ключи на таблицы "Рабочее место", "Тип Оборудования", "Наименование Оборудования" и "Оборудование" (что бы можно было к системному блоку добавить материнскую плату и пр., если нужно). Таблица "Рабочее место" содержит внешние ключ на таблицу "Пользователь".

А то, что генерирует Everest, совершенно другая история и называется она входные данные.
PM MAIL WWW ICQ Skype GTalk   Вверх
Akina
Дата 7.11.2008, 09:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 17
Всего: 454



Цитата(POMA @  7.11.2008,  00:44 Найти цитируемый пост)
Если можно поподробнее. Не уловил суть.

У тебя есть одна сущность - оборудование. Причем это может быть как самостоятельный компонент (скажем, видеокарта или процессор), так и компонент, состоящий из таких самостоятельных компонентов (скажем, системный блок), который в свою очередь может быть составной частью более крупного компонента (АРМа). Соответственно в структуре для каждого компонента должно быть предусмотрено поле-ссылка на "вышестоящий" компонент, в состав которого он входит, а также поле категории этой учетной единицы по уровню вхождения, наличию индивидуального инвентаризационного номера и т.п. Ссылка должна иметь возможность содержать не только ссылки на другие компоненты, но и специальные значения (на складе, в ремонте, ожидает входной обработки и пр.). Категория позволит в разных учетных и корректировочных формах выводить для обработки только компоненты необходимой степени детализации отчета/формы.

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


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
POMA
Дата 7.11.2008, 23:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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
PM MAIL   Вверх
Akina
Дата 8.11.2008, 09:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 17
Всего: 454



Цитата(POMA @  8.11.2008,  00:22 Найти цитируемый пост)
при подстановке новых значений в поле(столбец) Workplace основной таблице они появятся в таблице Workplace?

C какой радости? программно, программно... тем более что в таблице компонентов хранят не место, а только ссылку (ID) записи из таблицы мест.



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
POMA
Дата 8.11.2008, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 2.11.2008

Репутация: нет
Всего: нет



Akina, 
Вот те раз....
Я то наивно думал, что поставив новое значение в таблицу оно само переедет в другую таблицу, а на старом месте останется ID нового значения.
Тогда в чем полезность использования реляционной базы? Экономия места на жестком диске и опасность однажды потерять эти связи?
PM MAIL   Вверх
Akina
Дата 8.11.2008, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 17
Всего: 454



Цитата(POMA @  8.11.2008,  12:39 Найти цитируемый пост)
в чем полезность использования реляционной базы? 

Тебе же уже сказали - читай.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
POMA
Дата 8.11.2008, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 2.11.2008

Репутация: нет
Всего: нет



Akina, 
Не ответ. 
Что я узнаю нового от повторного прочтения?
Пример реализации реляционной таблицы в excel использовать в столбце Workplace не наименования рабочих мест, а код (1,2,3,4,5) и дополнительный лист "Workplace" в столбце A:A которого будут наименования рабочих мест Тогда Наименование_Рабочего_Места=ИНДЕКС(Workplace!A:A;Код). Будет ли этоа формула на листе или в VBA не суть важно. И какие от этого плюсы?
Кроме того Access позволяет проанализировать таблицу  и сделать из одной несколько связных. Так что в каком виде она будет не столь важно.

Сейчас главное - структура программы/таблицы. И что эта таблица не позволит реализовать.
PM MAIL   Вверх
Akina
Дата 8.11.2008, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 17
Всего: 454



Суть системы обеспечения целостности и непротиворечивости данных тобой понята? Преимущества индексирования данных - тоже? Принцип построения системы безопасности? разделения доступа? обеспечения одновременной работы? разрешения коллизий? транзакции? 

Цитата(POMA @  8.11.2008,  14:05 Найти цитируемый пост)
Сейчас главное - структура программы/таблицы. 

Ерунда это всё. Прежде чем понимать, КАК сделать, надо понимать ПОЧЕМУ. Или, иными словами, на каких ПРИНЦИПАХ. Конкретная реализация, когда есть готовый план - дело чисто техническое и рутинное.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0585 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.