0

Как в Access правильно организовать хронологическую базу данных? То есть допустим есть "Основная" таблица. В ней данные об объектах. Так же есть еще две таблицы "Заполняемая таблица 1" и "Заполняемая таблица 2".

Вот пример БД

Необходимо организовать заполнение значений таблицы из одной формы и производить потом выборку по ним. Но как лучше привязаться в таком случая к датам. Так как параметр даты в форме одолжен быть одним. Как быть? То есть я пова вижу два варианта: 1. Так и оставить две таблицы, в форме создать одну графу для записи даты, но дату с помощью VB записывать в обе таблицы. 2. Совместить обе таблицы в одну, сделать одно поле "дата", но поскольку данные второй таблицы будут пополнятся также и с других форм, то придется при выборке выбирать актуальные значения не только по таде, но и по старшему ключу...

Какой вариант лучше выбрать, с учетом того что в будущем необходимо будет строить запросы и отчеты по всем этим данным?

Примерная схема структуры БД

Попробую объяснить устно... Допустим допустим работает бригада интернет-провайдера. И у них есть фиксированное количество объектов(описано в "Основной") которые они могут посетить. При посещении они выполняют какую-то работу, а так же (иногда) выполняют обновление ПО находящегося там оборудования. Причем обновить ПО могут и не они, а администратор удаленно. Из этого всего вытекает две даты, необходимые для отражения в отчетах. Дата обновления на каждую версию ПО и дата посещения объекта. Вопрос в том: 1. Стоит завести две таблицы одна с датами обновления ПО и версиями на которые обновили. Вторая с датами посещений. Но в током случае, необходимо будет в форме(я имею ввиду форму в которой оператор будет вносить данные о посещениях), оператору необходимо будет либо заполнять две даты(что не желательно), либо объединить ячейку дат из двух таблиц в одну и производить заполнения с помощью VB (Кстати, есть ли способ по проще). 2. Второй вариант, сделать одну общую таблицу и поле "дата" тоже будет одно(получится некий лог), но в этом случае придется "шаманить" с выборкой, поскольку придется выбирать не только по дате(самую старшую), но и по ключу и заполнению ячейки. (я даже не уверен возможно ли это,..)

Подскажите пожалуйста какой из двух вариантов наиболее приемлемый?

8toni8
  • 173
  • опишите толком, что вы понимаете под заполнением и выборкой? пока что ясно, что у вас есть три таблицы. и вы вносите какие то данные. Но логика процесса что и куда надо записывать, а потом считывать не понятна. Вы расписали какие-то варианты, но сама суть проблемы не ясна. – teran Sep 11 '18 at 08:19
  • Проведите нормальный анализ. Тогда и получите ответы на все свои вопросы. Сейчас что вопрос, что база - как говорится, "ниачём", тем более для нас, в принципе не знающих, о чём речь. – Akina Sep 11 '18 at 08:36
  • 1
    Как ... правильно организовать хронологическую базу данных? Например, в каждую таблицу добавить автозаполняемое текущим штампом времени поле. И в принципе исключить операции обновления и удаления - только вставка записей и выборки. – Akina Sep 11 '18 at 08:38
  • Ну это само собой, то есть в форме и подразумевается, что бы были только поля с подстановкой, что бы исключить ошибку оператора... – 8toni8 Sep 11 '18 at 09:57
  • Немного дополнил описание вопроса:) – 8toni8 Sep 11 '18 at 10:01

1 Answers1

0

Сделал вот так

Сам код:

Option Compare Database

Private Sub Кнопка22_Click()

'Добовление записи в таблицу по нажатию кнопки_

Dim sql As String
If [Флажок12] = True Then
    sql = "insert into [Заполняемая таблица 1] ([Версия ПОТаб1], 
[ИндексТаб1],[ДатаТаб1]) values ('" & [Комбинированная25] & "','" & 
[ИндексТаб2] 
& "','" & [ДатаТаб2] & "')"
    CurrentDb.Execute sql
End If

End Sub

Private Sub Флажок12_AfterUpdate()

'Активировать поле если установлен checkbox_

If [Флажок12] = True Then
        [Комбинированная25].Enabled = True
    Else
        [Комбинированная25].Enabled = False
End If

End Sub
8toni8
  • 173