|
26 Кб. |
|
| Обстоятельства сложились таким образом что пришлось создавать базу данных по учету аварийности на предприятии. Все бы ничего если бы не два минуса: 1. Я Полный чайник в ACCESS, 2. Предприятие с большим парком автомобилей и своеобразной спецификой их эксплуатации.
от сюда возникло несколько проблемм:
1.)База заполняется сейчас как обычно из формы, вот только необходимо сделать одну особенность Занесение в базу должно происходить не постепенно (по мере заполнения полей) а за 1 раз только после того как заполнится форма целиком
Видится тут нужно писать макрос для добавления значений из формы в соответствующие графы таблицы БД. Вот тут у меня не хватает познаний.
2.) Как реализовать функцию автоподстановки при которой из одной таблицы будут автоматически подставляться данные в другую, сввязанную с ней по ключ полю?. | |
|
| |
|
|
|
| для общего понимания
1) данные в базу вносятся как раз не по мере заполнения полей, а при возникновении определенных событий - таких как сохранить запись, перейти на другую запись, закрыть форму ну и некоторых других, что бы юзеры заполняли все поля делают следующее:
либо ставят все поля обязательными к заполнению (есть такое свойство у поля), но мне такой подход не нравится,
либо делают проверку полей на заполненность и вызывают проверку при возникновении события предполагающего сохранение записи
2) вам поможет поле со списком (комбобокс kombobox) у него есть возможность показывать одно а в таблу заносить другое | |
|
| |
|
|
|
| дело в том что делать поля обязательными а так же проверку на заполнение не получится так как на момент первичного заполнения некоторые поля могут оставаться пустыми. Сохранение должно происходить именно по нажатию кнопки сохранить запись. Сохранение по закрытию формы не желательно, так как появляются не нужные записи.
А вот на счет поля со списком я наверное не правильно выразился. Основная и справочная таблицы связаны между собой, при введении одного поля в основную таблицу, несколько других автоматически подставляются из справочной! | |
|
| |
|
|
|
| Определитесь
или
Занесение в базу должно происходить не постепенно (по мере заполнения полей) а за 1 раз только после того как заполнится форма целиком
|
или
так как на момент первичного заполнения некоторые поля могут оставаться пустыми
|
| |
|
| |
|
|
|
| Сорри, не корректно выразился. Занесение должно происходить только при нажатии кнопки "сохранить" (когда оператор сочтет то что заполнять больше нечего) занесение в базу по закрытию формы не подходит. | |
|
| |
|
|
|
| 1) вариант вижу такой
две формы
одна для просмотра и поиска внесенной информации - вид табличный, количество информации столько что бы можно было однозначно идентифицировать запись, запрет на внесение и редактирование инфы
вторая форма для внесения и редактирования данных, в момент ввода новой записи с таблицой не связанная, в момент редактирования - связанная, отображать должна только ту запись которая выбрана в форме1(если это редактирование)
2)не есть хорошо хранить одни и те же данные в нескольких местах (в разных таблицах)
Основная и справочная таблицы связаны между собой, при введении одного поля в основную таблицу, несколько других автоматически подставляются из справочной!
|
выход - тут можно предложить несколько вариантов
поле со списком (или список) с отображением нескольких столбцов во время выбора и отображением столбца позволяющего визуально однозначно идентифицировать запись (например номер машины) (уникальный номер записи не в счет - пока говорим о визуальном восприятии юзером формы)
появляюшаяся по определенному событию форма для того что бы юзер выбрал информацию из справочника, а связи проставились автоматом
все зависит от того как вы себе представляете интерфейс всего процесса | |
|
| |
|
|
|
| создаете переменную на уровне модуля формы
dim blnClose as boolean
Делаете две кнопки
Кнопка "Сохранить"
Код на нажание
if me.dirty then me.dirty = false
blnClose = true
docmd.close acform, me.name
|
Кнопка "Отменить"
Код на нажание
if me.dirty then me.undo
blnClose = true
docmd.close acform, me.name
|
на событие "выгрузка формы" (Unload)
пишите
На событие текущая запись пишите
Писал по памяти, возможны ошибки | |
|
| |
|
|
|
| а не лутше запросом добавить ? | |
|
| |
|
|
|
| в этом случае придется делать или свободную форму или временную таблицу. Надо как следует по условиям задачи смотреть | |
|
| |
|
|
|
|
создаете переменную на уровне модуля формы
dim blnClose as boolean
Делаете две кнопки
Кнопка "Сохранить"
Код на нажание
if me.dirty then me.dirty = false
blnClose = true
docmd.close acform, me.name
Кнопка "Отменить"
Код на нажание
if me.dirty then me.undo
blnClose = true
docmd.close acform, me.name
на событие "выгрузка формы" (Unload)
пишите
cancel = not blnClose
На событие текущая запись пишите
blnClose = false
Писал по памяти, возможны ошибки
|
однажди я попался
по этому всегда исползую через запрос
кнопка нажата добавить данные в таблицу и всё | |
|
| |
|
|
|
| как попался? На чем? Данные в таблицу из полей формы или из промежуточной таблицы? | |
|
| |
|
|
|
| Начал добавлять запросом на добавление. Поля формы добавились сразу, а вот поля подчиненной формы как бы добавить не подскажите? Ну не как не хотят туда попадать, причем что интересно два поля из трех всетаки добавилось, пока описывал третье все пропало, даже те два которые сначала получились | |
|
| |
|
|
|
| на этом
if me.dirty then me.dirty = false
blnClose = true
docmd.close acform, me.name
Кнопка "Отменить"
Код на нажание
if me.dirty then me.undo
blnClose = true
docmd.close acform, me.name
на событие "выгрузка формы" (Unload)
пишите
cancel = not blnClose
На событие текущая запись пишите
blnClose = false | |
|
| |
|