powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / БД Приемная, делопроизводство
16 сообщений из 16, страница 1 из 1
БД Приемная, делопроизводство
    #39280729
kabzistov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Писал еще на диплом базу данных для секретаря в приемной, для регистрации корреспонденции, а сейчас сижу ее привожу в божеский вид.

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


БД https://yadi.sk/d/ubR-Bn8Gtf2TM


по вопросам пишите либо тут, либо почта leninne@mail.ru
...
Рейтинг: 0 / 0
БД Приемная, делопроизводство
    #39280731
kabzistov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Руководство пользователя.doc
https://yadi.sk/i/8n2x7KWJtf2Wr
...
Рейтинг: 0 / 0
БД Приемная, делопроизводство
    #39280764
Agapov_stas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kabzistov , доброго времени суток. Не глядя на функционал, просто открыл первую форму "Входящая корреспонденция" и в глаза сразу же бросились куски кода:

Код: vbnet
1.
If DCount("[Tip]", "[Tip]", "[Tip]=Forms![VHOD]![Tip]") = 0 And Forms![VHOD]![Tip] <> "" Then


- обрабатывать событие NotInList нужно.

Код: vbnet
1.
2.
3.
4.
DoCmd.SetWarnings False
DoCmd.RunSQL "INSERT INTO Tip (Tip)SELECT [Forms]![VHOD]![Tip] AS Tip"
[Forms]![VHOD]![Tip].Requery
DoCmd.SetWarnings True


- обрабатывать событие NotInList нужно. Да и вообще, я бы не использовал такие "штуки" как "DoCmd.SetWarnings False"

Код: vbnet
1.
If [Дата1] <> "" Then


Дату проверять как IsDate(Дата1).

Код: vbnet
1.
If [Индекс_документа] <> ""


А если " "? Хотя бы уже так: LEN(Индекс_документа & "")>0

Код: vbnet
1.
If Me![Korrespondent] <> "1" Then DoCmd.OpenForm "Korrespondenti1", , , "[Korrespondent]= '" & Me![Korrespondent] & "'"


Тут вообще не понятно. Вначале сравниваете как число потом как строку. К тому же, если открываете форму с условием, может все таки уникальный идентификатор есть, и его нужно использовать а не текстовое значение?

На главной:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Private Sub Кнопка253_Click()
On Error GoTo Err_Кнопка253_Click
    Dim stDocName As String
    Dim stLinkCriteria As String
    stDocName = "ISHOD"
    DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_Кнопка253_Click:
    Exit Sub
Err_Кнопка253_Click:
    MsgBox Err.Description
    Resume Exit_Кнопка253_Click
    DoCmd.OpenForm "ISHOD", acNormal, , , acFormAdd
End Sub


Вывод формы после вывода ошибки? Или я чего то не понял?

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

С Уважением.
...
Рейтинг: 0 / 0
БД Приемная, делопроизводство
    #39280769
Agapov_stas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Форма командировка:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
If Me.NewRecord Then
  Me![Кнопка25].Enabled = False
 Else
  Me![Кнопка25].Enabled = True
  End If
  If Me.NewRecord Then
  Me![Кнопка42].Enabled = False
 Else
  Me![Кнопка42].Enabled = True
  End If
  If Me.NewRecord Then
  Me![Кнопка64].Enabled = False
 Else
  Me![Кнопка64].Enabled = True
  End If
  If Me.NewRecord Then
  Me![Кнопка65].Enabled = False
 Else
  Me![Кнопка65].Enabled = True
  End If
  If Me![ФИО] = "-" Then
  Me![Должность].Enabled = False
 Else
   Me![Должность].Enabled = True
  End If


-аддд...
...
Рейтинг: 0 / 0
БД Приемная, делопроизводство
    #39280772
Agapov_stas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Журнал "Входящая корреспонденция":
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Dim s1, s2
Me.Refresh
s1 = "true "
s2 = "" & Me.wФАМ106
If Len(s2) > 0 Then
s1 = s1 & " and  format([Дата регистрации],'dd.mm.yyyy') like '*" & s2 & "*'"
End If


3. Использование дат
...
Рейтинг: 0 / 0
БД Приемная, делопроизводство
    #39280800
NewRecord,
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Agapov_stasФорма командировка:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
If Me.NewRecord Then
  Me![Кнопка25].Enabled = False
 Else
  Me![Кнопка25].Enabled = True
  End If
  If Me.NewRecord Then
  Me![Кнопка42].Enabled = False
 Else
  Me![Кнопка42].Enabled = True
  End If
  If Me.NewRecord Then
  Me![Кнопка64].Enabled = False
 Else
  Me![Кнопка64].Enabled = True
  End If
  If Me.NewRecord Then
  Me![Кнопка65].Enabled = False
 Else
  Me![Кнопка65].Enabled = True
  End If
  If Me![ФИО] = "-" Then
  Me![Должность].Enabled = False
 Else
   Me![Должность].Enabled = True
  End If


-аддд...+1
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Private Sub Form_Current()
    Static IsNewRecord As Boolean
    Dim arrControls
    Dim v
    '
    If IsNewRecord <> Me.NewRecord Then
        IsNewRecord = Me.NewRecord
        arrControls = Array("Флажок4", "Кнопка6", "Кнопка7", "Поле8", "ПолеСоСписком10")
        For Each v In arrControls
            Me.Controls(v).Enabled = Not IsNewRecord
        Next
    End If
End Sub
...
Рейтинг: 0 / 0
БД Приемная, делопроизводство
    #39280814
kabzistov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: vbnet
1.
If Me![Korrespondent] <> "1" Then DoCmd.OpenForm "Korrespondenti1", , , "[Korrespondent]= '" & Me![Korrespondent] & "'"


Тут вообще не понятно. Вначале сравниваете как число потом как строку. К тому же, если открываете форму с условием, может все таки уникальный идентификатор есть, и его нужно использовать а не текстовое значение?



Не помню почему, но нельзя было поставить проверку на заполненности либо не заполненность поля и поэтому поставил "если значение поля любое, но не "1", тогда открывать на редактирование именно эту строку из справочника"
...
Рейтинг: 0 / 0
БД Приемная, делопроизводство
    #39281018
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kabzistov,

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

этот же код я применяю в поиске довольно часто (если не известна точная дата ), хотя связь даты и фам весьма натянута

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Dim s1, s2
Me.Refresh
s1 = "true "
s2 = "" & Me.wДатаРегистрации   ''''ФАМ106
If Len(s2) > 0 Then
s1 = s1 & " and  format([Дата регистрации],'dd.mm.yyyy') like '*" & s2 & "*'"
End If
...
Рейтинг: 0 / 0
БД Приемная, делопроизводство
    #39281026
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПЕНСИОНЕРКА
Код: vbnet
1.
2.
3.
.......
s1 = s1 & " and  format([Дата регистрации],'dd.mm.yyyy') like '*" & s2 & "*'"
.......

Часто у Вас вижу, но никак не пойму, зачем Like для дат?
Что это дает?
...
Рейтинг: 0 / 0
БД Приемная, делопроизводство
    #39281057
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__MichelleЧасто у Вас вижу, но никак не пойму, зачем Like для дат?

я с этим очень часто сталкивалась -- исполнитель помнит ТОЛЬКО примерную дату
поэтому если проверять по периоду -- слишком избыточная выборка
причем часто надо именно историю по договору

например
клиент --рога и копыта
договор--100 от декабря 2014 года или начала 2015

но переписка по нему идет уже 3 года(договор не закрыт)
надо получить всю переписку по нему
вх от ,,,,,текст сообщения
исх от ......текст ответа
вх от ,,,,,текст сообщения
исх от ......текст ответа
вх от ,,,,,текст сообщения
исх от ......текст ответа
вх от ,,,,,текст сообщения
исх от ......текст ответа
исх от ......текст ответа
исх от ......текст ответа
вх от ,,,,,текст сообщения
вх от ,,,,,текст сообщения

сначала тоже было по интервалу дат , но затем по просьбе трудящихся переделала на лике
...
Рейтинг: 0 / 0
БД Приемная, делопроизводство
    #39281081
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПЕНСИОНЕРКА,

Нет.
Речь не про разницу выборки по периоду или по крайним точкам.
А про способ сравнения
Код: vbnet
1.
<Дата_из_базы> Like "*" & <Заданная_дата> & "*"

Требующееся форматирование опускаю, для вопроса не существенно.
Почему не
Код: vbnet
1.
<Дата_из_базы> = <Заданная_дата>

?
...
Рейтинг: 0 / 0
БД Приемная, делопроизводство
    #39281088
__Michelle,

<Заданная_дата> пользователи вводят. например, так - *.07.2016
...
Рейтинг: 0 / 0
БД Приемная, делопроизводство
    #39281093
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Заданная_дата,__Michelle,

<Заданная_дата> пользователи вводят. например, так - *.07.2016 Вот это другое дело.
Так бы сразу и сказали.
А то про периоды и непериоды.)))
...
Рейтинг: 0 / 0
БД Приемная, делопроизводство
    #39281097
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот только почему тогда просто год и месяц не брать за основу,
или не вводить 01.07.2016?
Но это, видимо, дело хозяйское...
...
Рейтинг: 0 / 0
БД Приемная, делопроизводство
    #39281104
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__Michelle,

2016 ПОИСК ГОДА201[456]поиск 2014-201607.2016июль 2016.07.201*июль 2010-2019
...
Рейтинг: 0 / 0
БД Приемная, делопроизводство
    #39281124
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПЕНСИОНЕРКА__Michelle,

2016 ПОИСК ГОДА201[456]поиск 2014-201607.2016июль 2016.07.201*июль 2010-2019Я уже поняла. Спасибо.
Все это у меня через граничные значения дат.
В критериях для них сразу выставляются реальные минимальное и максимальное значения из базы,
для каждого "конца" есть также поле со списком реально присутствующих годов,
при выборе определенного года критерии тоже "сами" подстраиваются,
Как-то человеку, по-моему, в таком виде понятнее и очевиднее, что он задал.
И очень быстро получается.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / БД Приемная, делопроизводство
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]