|
|
|
| Как вызывать одну форму из другой? Но не просто, а для того, чтобы вызываемая форма открылась на новой записи и при этом, чтобы в эту запись была внесена информация о создании записи (дата, время и пользователь).
Открыть форму с новой записи - не проблема. Но вот в этой новой записи никак не хочет записывваться информация о ее создании.
Вызываю я Форму2 из Формы1 кнопкой с кодом:
DoCmd.OpenForm "fsys_BDStructure_TABLES"
DoCmd.GoToRecord , , acNewRec
With CodeContextObject
.ДОбавлено= Now()
.[Кем добавлено] = Members
End With
Даже если код кнопки я делаю Public, все равно не помогает.
Как сделать, чтобы заработало?
Спасибо | |
|
| |
|
|
|
| я бы запросом insert into добавлял сразу в таблицу... зачем эти танцы с бубнами лишние? :) | |
|
| |
|
|
|
| Ну так и записывайте создателя и время на событие Форма2_Open.
ЗЫ: ИМХО эти данные не нужно выводить в форму, а заносить в таблицу при сохранении записи на форме2 | |
|
| |
|
|
|
| Что касается запроса INSERT и записывать пользователя при ОТКРЫТИИ формы, то это не катит по нескольким причинам.
1. Ленточная форма не предназначена для изменений и удалений, соответственно я не совсем поняла, откуда пойдет запрос INSERt и куда. Скорее, это не для моей ситуации.
2. Форма редактирования из разных мест открывается по-разному. Где-то на определенной записи, а иногда и на новой. Если я повешу на событие Открытия формы код внесения записи о времени добавления записи, то он будет менять время добавления уже имеющихся записей,а это недопустимо.
3. может просто я не совсем вникла в Ваши советы, но я объяснила свою точку зрения.
В любом случае, за советы огромное спасибо. Всегда хорошо видеть разные варианты решения проблемы. | |
|
| |
|
|
|
| docmd.OpenForm "fsys_BDStructure_TABLES",acNormal,,,acFormAdd
with forms("fsys_BDStructure_TABLES")
.ДОбавлено= Now()
.[Кем добавлено] = Members
End With
для "Добавлено" можно стразу в таблице сделать значение по умолчанию now() | |
|
| |
|
|
|
| а если вы это делаете на SQL сервере, то и вообще имеет смысл все вычисляемые поля делать сразу в таблице | |
|
| |
|
|
|
|
| Я слышала, что так можно. Просто я пока плаваю в этих триггерах и т.п. Сижу, много читаю, но нужно время, чтобы я разобралась и поняла. Поэтому пока делаю как могу. | |
|
| |
|
|
|
| ЧестнО, первым делом сделала значением по умолчанию. Но почему-то потом это оказалось неудобным. Точно не помню, почему. Вспомню, напишу | |
|
| |
|
|
|
| Const strForm = "fsys_BDStructure_TABLES"
DoCmd.OpenForm strForm
DoCmd.GoToRecord acDataForm, strForm, acNewRec
With Forms(strForm)
...
End With
Кроме того открыть форму можно сразу на новой записи:
DoCmd.OpenForm strForm, , , , acFormAdd
А еще вносить текущее время и юзера лучше по событию Form_BeforeUpdate "fsys_BDStructure_TABLES", при сохранении новой записи если Me.NewRecord=True или поля пусты).
ЗЫ. Я знаю, как должно работать, но никогда не использую CodeContextObject, а у вас всё наоборот. | |
|
| |
|