| |
автор: Aleksandra (30.11.-1 в 00:00) |
|
| | Добрый вечер!
Такая проблема:
На Главной форме General имеются две подформы - одна Ленточная ArtikulTb, а в другую подформу подключаются другие формы в зависимости от выбора в Ленточной.
Скажем выбираю в Ленточной Артикул1, то в другой подформе возникает Форма Артикул1. Затем выбираю, скажем Артикул5 в Ленточной подформе, в другой подформе возникает Форма Артикул5. и т.д.
Т.е. если я работаю с Артикул5, а затем открою другую Форму, то по возвращении я вижу вместо Артикул5 - Артикул1 и мне нужно кликнуть ещё раз на строку в ленточной подформе где написано Артикул5...
подобная задача с Главной формой у меня решена.
Открывается Главной форма у меня на последней записи, но если я затем перехожу на другую запись, а затем эта форма теряет фокус (открываю другую форму), или закрывается, то по возвращении к этой форме у меня открывается Рекорд с которым я в последний раз работала...
Сейчас же мне нужно вдобавок к этому и в Ленточной подформе также сделать...
Т.е. мне нужно не только вернуться в General на рекорд, с которым я работала в последний раз, но и в этом Рекорде к определённой позиции в ArtikulTb...
Странным образом, код, который я применяю, работает в ленточной подформе ArikulTb только на первом заказе в General, а на остальных почему-то нет... Почему так - я никак не могу сообразить...
Написала так, но что-то не работает:
В модуле:
Public Lastzapis As Integer
В ленточной форме ArtikulTb:
Private Sub Form_Current()
Lastzapis = Nz(Me!ArtikulTb_ID.Value, 0)
End Sub
Private Sub Form_Load()
Me.Recordset.FindFirst "ArtikulTb_ID=" & Lastzapis
End Sub
Спасибо!
С уважением,
Александра | |
| |
| |
| |
автор: Explorer (30.11.-1 в 00:00) |
|
| | это код - весь код который есть в форме? смысла в том коде, что вы привели, я что-то не заметил, но на всякий случай - попробуйте обрабатывать событие формы On Activate
а вообще
в принципе при потере формой фокуса с ней ничего не должно произойти т.е. перейдя на нее обратно (дав ей фокус) вы застанете ее в том виде как и покинули... если только вы как нибудь ей специально не манипулируете. | |
| |
| |
| |
автор: Aleksandra (30.11.-1 в 00:00) |
|
| | Re: это код - весь код который есть в форме? Жалко, что нельзя присоединить тут пример...
Я вычленила пример из моей базы и оставила почти только самое необходимое для этого примера:
В модуле:
Public Lastzapis As Integer
Public LastzapisArtik As Integer
В ArtikelTb:
Private Sub ArtikelName_AfterUpdate()
ArtikelName_Enter
End Sub
Private Sub ArtikelName_Enter()
If Not IsNull(ArtikelName) Then
Forms!General!SubForm.SourceObject = ArtikelName
Else
Forms!General!SubForm.SourceObject = "Formular0"
End If
End Sub
Private Sub Form_Load()
Me.Recordset.FindFirst "ArtikelTb_ID=" & LastzapisArtik
End Sub
Private Sub Form_Current()
LastzapisArtik = Nz(Me!ArtikelTb_ID.Value, 0)
End Sub
В General:
Private Sub Form_Load()
SubForm.LinkMasterFields = "txtCurrentArtikelID"
SubForm.LinkChildFields = "ArtikelID"
If Lastzapis = 0 Then
DoCmd.RunCommand acCmdRecordsGoToLast
Else
Me.Recordset.FindFirst "Order_Nr=" & Lastzapis
End If
End Sub
Private Sub Form_Current()
EnableSubForms Not NewRecord
Lastzapis = Nz(Me!Order_Nr.Value, 0)
End Sub
Private Sub Kombpole6_AfterUpdate()
EnableSubForms Not IsNull(Order_Nr.Value)
End Sub
Sub EnableSubForms(ByVal bValue As Boolean)
ArtikelSubForm.Enabled = bValue
SubForm.Enabled = bValue
End Sub
Речь идёт также не только о потере Фокуса, но и о закрытии Формы General, а затем её открытии... | |
| |
| |
| |
автор: Explorer (30.11.-1 в 00:00) |
|
| | Re: Речь идёт также не только о потере Фокуса, ув. Александра - это же с-о-о-о-о-всем другое дело :))) | |
| |
| |
| |
автор: Explorer (30.11.-1 в 00:00) |
|
| | Re: Жалко, что нельзя присоединить тут пример присылайте пример на nowhere@land.ru | |
| |
| |
| |
автор: Aleksandra (30.11.-1 в 00:00) |
|
| | Re[1]: Жалко, что нельзя присоединить тут пример Добрый день!
Спасибо большое - уже послала!
С уважением,
Александра | |
| |
| |
| |
автор: Explorer (30.11.-1 в 00:00) |
|
| | Александра, извините - почтовый сервис land.ru лежит в мертвом дауне уже больше недели не могу ни посмотреть ни отправить почту...
если не лениво отправьте ваш экземпл повторно на
ne-dam@mail.ru | |
| |
| |
| |
автор: Aleksandra (30.11.-1 в 00:00) |
|
| | Re: проблема Спасибо большое - уже послала!
С уважением,
Александра | |
| |
| |
| |
автор: Explorer (30.11.-1 в 00:00) |
|
| | получил | |
| |
| |
| |
автор: Explorer (30.11.-1 в 00:00) |
|
| | Александра, проверьте почту | |
| |
| |
| |
автор: Aleksandra (30.11.-1 в 00:00) |
|
| | Re: Александра, проверьте почту Проверила - пока ничего нет... | |
| |
| |
| |
автор: Explorer (30.11.-1 в 00:00) |
|
| | вот такой примерчик я набросал в примере использованы следующие фишки
1) список всех форм в базе данных, в имени которых есть префикс "csfm"
2) сохранение имени последней выбранной формы в свойствах БД "LastSelected"
на форме расположены два элемента
список на основе запроса к MSysObjects
и простая подформа без SourceObject
при открытии формы [u]Select в списке[/u] всегда будет на имени формы которая выбиралась последней,
соответственно в подформе будет отображаться та форма, которая отображалась последней
без разницы - закрывалась форма или нет, или закрывалась база или нет.
для того, чтобы добавить в список новую форму достаточно ее создать и назвать нужным образом...
если создать "sfrmArticle", например - она появится в списке, список отсортирован по алфавиту
http://nowhere.land.ru/alexandra.zip
[img]http://hiprog.com/forum/img/17.gif[/img] | |
| |
| |
| |
автор: Explorer (30.11.-1 в 00:00) |
|
| | Re: в имени которых есть префикс "csfm" т.е. prefix "sfrm" конечно | |
| |
| |
| |
автор: Aleksandra (30.11.-1 в 00:00) |
|
| | Re: вот такой примерчик я набросал Здорово, спасибо, пример работает !
Но как этот пример использовать в моей базе (в моём примере)...??
У меня же там всё по-другому... что-то пока не соображу... | |
| |
| |
| |
автор: Explorer (30.11.-1 в 00:00) |
|
| | основной принцип - сохранение имени последней формы в Properties базы данных | |
| |
| |
| |
автор: Aleksandra (30.11.-1 в 00:00) |
|
| | Re: основной принцип - сохранение имени последней формы в Properties базы данных ох... нет... что-то не то...
ничего не получается с этим...
Не могли бы Вы это сделать в моём примере?
Спасибо большое... | |
| |
| |
| |
автор: Explorer (30.11.-1 в 00:00) |
|
| | :))) Александра, мне не очень понятна задача, которую вы себе ставите а делать примеры наугад - слишком затратное дело :))) в приведенном примере я решил именно ту задачу, которую вы сформулировали - в подформе всегда отобразается та форма, что отображалась в последний раз, без разницы - закрывалась форма или база или нет...
я попробую еще поковырять ваш пример, но не ожидайте что получится именно то, чтол вам нужно :)))
я так понимаю, что вы пытаетесь решить проблему формирования заказов по позициям, свойства которых различны - есть разные способы решения такой задачи - например использование модели EAV или применение супертипов...
в общем еще поковыряю :))) | |
| |
| |
| |
автор: Explorer (30.11.-1 в 00:00) |
|
| | кстати... насколько я понял, в вашей задаче проще запретить пользователю закрывать форму General, пока он не завершил ввод данных, чем возвращаться к последней записи, которую он редактировал...
например не закрывать форму а только сворачивать ее или делать анвизибл | |
| |
| |