Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: проблема
 
 автор: 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, пока он не завершил ввод данных, чем возвращаться к последней записи, которую он редактировал...

например не закрывать форму а только сворачивать ее или делать анвизибл

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList