Долой бумагооборот, даешь СУБД!
Модератор: Naeel Maqsudov
Интересует мнение специалистов. Возможно ли сделать в Accesse-07 следующую жизненную задачу.
Есть шкаф, в нем лежат папки с контрактами. Для каждого контракта заводится своя папка "Досье контракта". Каждая папка с контрактом хранится на своей полке (импорт, экспорт) в шкафу. В каждый контракт входит серия документов (Контракт, допсоглашения, приложения, протоколы, счета на оплату, банковские выписки, ГТД и пр.). Эти документы по мере появления вкладываются в папку с контрактом. Выполненные контракты закрываются - т.е. проверяется наличие в них основных документов и в случае, если все ОК, то папка изымается из шкафа и передается в архив, но иногда все же может потребоваться контракт поднять и представить кому-либо для проверки. В общем ужоснах.
===
Возможно ли все это хозяйство перевести на безбумажную работу с помощью создания в аццессе Базы Данных? Тупо открыл базу, ввел дату или номер контракта, появился список контрактов. Нажал на какой-либо номер контракта, тутже появляется таблица "Картотека документов" со списком прилагаемых контрактов и к каждому списку картотеки прикрепляется скан-копия документа.
===
Есть мысли, как это сделать? С чего начать? Помогите сориентироваться...
Есть шкаф, в нем лежат папки с контрактами. Для каждого контракта заводится своя папка "Досье контракта". Каждая папка с контрактом хранится на своей полке (импорт, экспорт) в шкафу. В каждый контракт входит серия документов (Контракт, допсоглашения, приложения, протоколы, счета на оплату, банковские выписки, ГТД и пр.). Эти документы по мере появления вкладываются в папку с контрактом. Выполненные контракты закрываются - т.е. проверяется наличие в них основных документов и в случае, если все ОК, то папка изымается из шкафа и передается в архив, но иногда все же может потребоваться контракт поднять и представить кому-либо для проверки. В общем ужоснах.
===
Возможно ли все это хозяйство перевести на безбумажную работу с помощью создания в аццессе Базы Данных? Тупо открыл базу, ввел дату или номер контракта, появился список контрактов. Нажал на какой-либо номер контракта, тутже появляется таблица "Картотека документов" со списком прилагаемых контрактов и к каждому списку картотеки прикрепляется скан-копия документа.
===
Есть мысли, как это сделать? С чего начать? Помогите сориентироваться...
Прочитал я тут анадыся книжицу "Access-2007: это просто".
Много думал.
Вопрос. Допустим, я, замострячил базу данных, а как зделать так, чтобы к файлу базу данных был доступ только на просмотр? Чтобы никаких изменений и редактирований - тока тупой (или острый) просмотр...
Че делать?
Много думал.
Вопрос. Допустим, я, замострячил базу данных, а как зделать так, чтобы к файлу базу данных был доступ только на просмотр? Чтобы никаких изменений и редактирований - тока тупой (или острый) просмотр...
Че делать?
-
- Сообщения: 526
- Зарегистрирован: 04 фев 2007, 18:37
- Откуда: Сургут
- Контактная информация:
Здравствуйте Mag_White.
с Access-2007 я пока не работал, но думаю эти свойства в нем не отличаются от Access 97. Изменения и просмотр записей БД осуществляется с помощью форм. А в свойствах этих самых форм и задается возможность добавления, изменения, удаления, то есть редактирования. Эти и другие настройки выполняются в процессе создания БД
Удачи Вам.
Евгений.
с Access-2007 я пока не работал, но думаю эти свойства в нем не отличаются от Access 97. Изменения и просмотр записей БД осуществляется с помощью форм. А в свойствах этих самых форм и задается возможность добавления, изменения, удаления, то есть редактирования. Эти и другие настройки выполняются в процессе создания БД
Удачи Вам.
Евгений.
Спасибо за ответ. А если серьезно, то задача, на первый взгляд простейшая, легко делалась в екселе, но как в ацессе это сделать не догоняю.
Существует ли шаблон БД, который организовывает библиотечный каталог? Только вместо книжек, хранились бы подшивки документов?
Существует ли шаблон БД, который организовывает библиотечный каталог? Только вместо книжек, хранились бы подшивки документов?
-
- Сообщения: 526
- Зарегистрирован: 04 фев 2007, 18:37
- Откуда: Сургут
- Контактная информация:
Здравствуйте Mag_White.
Рекомендую Вам начать изучение БД (базы данных, не чтото другое
) с MS Access 97. Его преимущество в том, что сн имеет руссифицированую (возможно Вам это не важно) справочную систему в том числе раздел VBA, и приличный набор пользовательских шаблонов(неполный список в файле).
С его помощью легко изучать, получать первый практический опыт и понимание принципов работы с БД.
Минус - ядро Access97 (JET3,5) "не понимает" формат MDB JET4,0, БД Access 2000-и выше. Но все более поздние СУБД Access, могут работать с БД 97-го и во всех есть встроенные конверторы для преобразования файла БД из 97-го формата к своему.
Удачи Вам.
Евгений.
Рекомендую Вам начать изучение БД (базы данных, не чтото другое

С его помощью легко изучать, получать первый практический опыт и понимание принципов работы с БД.
Минус - ядро Access97 (JET3,5) "не понимает" формат MDB JET4,0, БД Access 2000-и выше. Но все более поздние СУБД Access, могут работать с БД 97-го и во всех есть встроенные конверторы для преобразования файла БД из 97-го формата к своему.
Удачи Вам.
Евгений.
- Вложения
-
- TemplateAccess97.jpg (26.1 КБ) 209 просмотров
Спасибо огромное за наводку. Сделал то, что надо.
Создал 2 таблицы:
"Контракт" - для хранения ключевой информации и "Картотека" - для хранения документов, принадлежащим контрактам. Связь через подтаблицу дает возможность увидеть, какой пакет документов к какому контракту относится. Но.. Поиск - такой геморройный (только через cntrl+f - т.к. на работе стоит офис 2003, но надеюсь убедить начальство в пользу СУБД и раскошелить на человеческий офис).
Задачу каталогизирования решил (кстати, без шаблона, нигде не нашел его в сети), но теперь другая задача - поисковый блок.
Подскажите - в каком направлении двигаться?
Нужно: на основе кнопочной формы составить окно поиска, в котором проставив 2 параметра (в идеале больше конечно, но хотябы 2 главных) я получаю форму, в которую загружается искомая запись из таблицы"Контракты" или "Картотека". Основные параметры поиска - это номер контракта(из таблицы "Контракты") и реестр_документа (из таблицы "Картотека").
Буду благодарен за практические советы.
Создал 2 таблицы:
"Контракт" - для хранения ключевой информации и "Картотека" - для хранения документов, принадлежащим контрактам. Связь через подтаблицу дает возможность увидеть, какой пакет документов к какому контракту относится. Но.. Поиск - такой геморройный (только через cntrl+f - т.к. на работе стоит офис 2003, но надеюсь убедить начальство в пользу СУБД и раскошелить на человеческий офис).
Задачу каталогизирования решил (кстати, без шаблона, нигде не нашел его в сети), но теперь другая задача - поисковый блок.
Подскажите - в каком направлении двигаться?
Нужно: на основе кнопочной формы составить окно поиска, в котором проставив 2 параметра (в идеале больше конечно, но хотябы 2 главных) я получаю форму, в которую загружается искомая запись из таблицы"Контракты" или "Картотека". Основные параметры поиска - это номер контракта(из таблицы "Контракты") и реестр_документа (из таблицы "Картотека").
Буду благодарен за практические советы.
-
- Сообщения: 526
- Зарегистрирован: 04 фев 2007, 18:37
- Откуда: Сургут
- Контактная информация:
Здравствуйте Mag_White.
В пакет Office 2003 включен Access, это и есть СУБД.
Что Вы называете "человеческий офис"?
"поисковый блок" - это не задача.
Организовать "поиск" средствами JET (Access) и VBA очень легко. Разместите на форме поле и кнопку, а в качестве источника строк формы используйте запрос с условием отбора. В условии задайте подобную строку :
Like [Forms]![ИмяВашейФормы]![ПолеПоиска] & "*"
А событию "Нажатие кнопки" подключите подобный код
Я думаю Вам стоит почитать учебник по Access.
Удачи Вам.
Евгений.
В пакет Office 2003 включен Access, это и есть СУБД.
Что Вы называете "человеческий офис"?
"поисковый блок" - это не задача.

Like [Forms]![ИмяВашейФормы]![ПолеПоиска] & "*"
А событию "Нажатие кнопки" подключите подобный код
Код: Выделить всё
Private Sub Кнопка1_Click()
Me.Requery
End Sub
Удачи Вам.
Евгений.
Предложенное выше никак не могу дотумкать, не получается.... И что делаю не так - не понимаю.
Человеческий офис? Ну...э..... Имеется в виду офис 2007 с новым Аццессом.))))
Можно практический вопрос?
Как сделать так, чтобы при введении в поле19 и нажатии энтер, начинался поиск из таблицы "Контракты" по полю"Контракт", и в форму загружались данные, согласно найденного контракта, или вообще ничего не загружалось, в случае необнаружения в таблице совпадения по полю "Контракт", или бы выводилось сообщение "Такого контракта в базе данных не обнаружено, попробуйте поискать снова"

Человеческий офис? Ну...э..... Имеется в виду офис 2007 с новым Аццессом.))))
Можно практический вопрос?
Как сделать так, чтобы при введении в поле19 и нажатии энтер, начинался поиск из таблицы "Контракты" по полю"Контракт", и в форму загружались данные, согласно найденного контракта, или вообще ничего не загружалось, в случае необнаружения в таблице совпадения по полю "Контракт", или бы выводилось сообщение "Такого контракта в базе данных не обнаружено, попробуйте поискать снова"

-
- Сообщения: 526
- Зарегистрирован: 04 фев 2007, 18:37
- Откуда: Сургут
- Контактная информация:
Здравствуйте Mag_White.
На форме расположен Grid - форма с табличным отображением данных.
Замените "подчиненная_форма_Контракты" на имя используемое Вами
и поместите в модуль формы подобный кодЕвгений.
На форме расположен Grid - форма с табличным отображением данных.
Замените "подчиненная_форма_Контракты" на имя используемое Вами
и поместите в модуль формы подобный код
Код: Выделить всё
Private Sub Поле19_KeyPress(KeyAscii As Integer)
Dim sSql$
sSql = "SELECT * FROM Контракты"
If KeyAscii = 13 Then
KeyAscii = 0
If Not Поле19.Text = "" Then
'sSql = sSql & " WHERE Контракт='" & Поле19.Text & "'" 'полное соответствие
sSql = sSql & " WHERE Контракт Like '*' & '" & Поле19.Text & "' & '*'" 'подобие
End If
Me.подчиненная_форма_Контракты.Form.RecordSource = sSql
End If
End Sub
Здравствуйте, Евгений.
Есть еще один практический вопрос....
===В таблицу "Картотека" вводятся данные о документах в поля: "Контракт", "Правовая база", "реквизиты документа", "сумма по документу" и "тип расчета". В поле "Тип расчета" можно подставить 3 значения "баланс", "отгрузка", "оплата", либо это поле можно оставить пустым - чтобы показать, что сумма в документе к расчету не относится, а указана справочно.
***тип расчета "баланс" - подразумевает что сумма, указанная по этому документу показывает общую стоимость контракта, такую пометку я ставлю к одному базовому документу, для расчета процента выполнения контрактных обязательств. - это будущая тема другого вопроса.***
тип расчета "оплата" - подразумевает, что документ участвует в расчете по суммированию выплат по контракту.
тип расчета "отгрузка" - подразумевает, что документ участвует в расчете по суммированию отгрузок товара по контракту.
===Для отсечения сумм, которые в расчете не участвуют, я сделал один запрос с условием отбора записей по полю "тип расчета" содержащие пометку "отгрузка" или "оплата".
===Далее формирую отчет (мастером), с группировкой по Контракту, Правовой базе (приложение к контракту), Типу расчета, далее в одном блоке дата документа, Реквизиты документа, Сумма по документу.
=== Подтверждаю расчет итогов, выбирая Sum.
Получается не плохо в том плане, что отчет уже решает одну из главнейших задач - он отсекает только участвующие в расчете бумаги, и сортирует их по Контрактам и внутри контракта по приложениям, и даже суммирует.
Но!
Можно ли решить еще одну задачу: чтобы итоговое значение по контракту он высчитывал не прибавляя сумму по "Итоги для тип_расчета=оплата" и "Итоги для тип_расчета=отгрузка" и давал итоговую сумму одного со вторым, А ВЫЧИТАЛ ОДНО ИЗ ДРУГОГО. Т.е. промежуточный итог по части контракта (Итоги для "правовая база") и по всему контракту(Итоги для "контракт") показывал как:
= (итоги для "Тип расчета" = оплата) - (итоги для "Тип расчета" = отгрузка").
При этом, можно задать условие, имеющее смысл, что ЕСЛИ "оплата" - "отгрузка" = о, ТО печаталась строка в отчете "Обязательтва выполнены".
ЕСЛИ "оплата"-"отгрузка" >0, то строка с сообщением "Оплачено больше чем отгружено".
ЕСЛИ "оплата"-"отгрузка" <0, то строка с сообщением "Отгружено больше чем оплачено".
===
Подскажите, что нужно сделать в отчете, чтобы он стал таким как описано?
Так выглядит страница с сегодняшним отчетом:

Есть еще один практический вопрос....
===В таблицу "Картотека" вводятся данные о документах в поля: "Контракт", "Правовая база", "реквизиты документа", "сумма по документу" и "тип расчета". В поле "Тип расчета" можно подставить 3 значения "баланс", "отгрузка", "оплата", либо это поле можно оставить пустым - чтобы показать, что сумма в документе к расчету не относится, а указана справочно.
***тип расчета "баланс" - подразумевает что сумма, указанная по этому документу показывает общую стоимость контракта, такую пометку я ставлю к одному базовому документу, для расчета процента выполнения контрактных обязательств. - это будущая тема другого вопроса.***
тип расчета "оплата" - подразумевает, что документ участвует в расчете по суммированию выплат по контракту.
тип расчета "отгрузка" - подразумевает, что документ участвует в расчете по суммированию отгрузок товара по контракту.
===Для отсечения сумм, которые в расчете не участвуют, я сделал один запрос с условием отбора записей по полю "тип расчета" содержащие пометку "отгрузка" или "оплата".
===Далее формирую отчет (мастером), с группировкой по Контракту, Правовой базе (приложение к контракту), Типу расчета, далее в одном блоке дата документа, Реквизиты документа, Сумма по документу.
=== Подтверждаю расчет итогов, выбирая Sum.
Получается не плохо в том плане, что отчет уже решает одну из главнейших задач - он отсекает только участвующие в расчете бумаги, и сортирует их по Контрактам и внутри контракта по приложениям, и даже суммирует.
Но!
Можно ли решить еще одну задачу: чтобы итоговое значение по контракту он высчитывал не прибавляя сумму по "Итоги для тип_расчета=оплата" и "Итоги для тип_расчета=отгрузка" и давал итоговую сумму одного со вторым, А ВЫЧИТАЛ ОДНО ИЗ ДРУГОГО. Т.е. промежуточный итог по части контракта (Итоги для "правовая база") и по всему контракту(Итоги для "контракт") показывал как:
= (итоги для "Тип расчета" = оплата) - (итоги для "Тип расчета" = отгрузка").
При этом, можно задать условие, имеющее смысл, что ЕСЛИ "оплата" - "отгрузка" = о, ТО печаталась строка в отчете "Обязательтва выполнены".
ЕСЛИ "оплата"-"отгрузка" >0, то строка с сообщением "Оплачено больше чем отгружено".
ЕСЛИ "оплата"-"отгрузка" <0, то строка с сообщением "Отгружено больше чем оплачено".
===
Подскажите, что нужно сделать в отчете, чтобы он стал таким как описано?
Так выглядит страница с сегодняшним отчетом:
