У меня есть приложение Access, которое изначально было создано в Access 2000. В нескольких текстовых полях и комбинированных списках используются пользовательские меню, вызываемые правой кнопкой мыши, для вызова процедур фильтрации.Меню RC встроено в код, а некоторые довольно обширны - сотни элементов, вложенных до четырех уровней глубиной.
Когда данные в поле меняются, мне нужно перестроить меню для этого поля, потому чтоФильтр меню по фактическому содержимому базы данных.
В 2000 году все работало хорошо, но в более новых версиях повторное перестраивание приводит к ошибке.
Соответствующая часть кода здесь:
Dim rst0 As DAO.Recordset, rst1 As DAO.Recordset, rst2 As DAO.Recordset, rst3 As DAO.Recordset, qdf0 As DAO.QueryDef, qdf1 As DAO.QueryDef, qdf2 As DAO.QueryDef, AEp As CommandBarPopup, AEp1 As CommandBarPopup, AEp2 As CommandBarPopup, aec As CommandBarButton
On Error GoTo ErrHndlr
With Application.CommandBars("RCDatum")
Do Until .Controls.count = 0
If .Controls.count Then .Controls(1).Delete
Loop
Set rst0 = CurrentDb.QueryDefs("RCDatumDekady").OpenRecordset(acReadOnly)
Set qdf0 = CurrentDb.QueryDefs("RCDatumRok")
Set qdf1 = CurrentDb.QueryDefs("RCDatumRokMesic")
Set qdf2 = CurrentDb.QueryDefs("RCDatumRokMesicDen")
Do
qdf0.Parameters("LoRok") = rst0.Fields("Dekada")
qdf0.Parameters("HiRok") = rst0.Fields("Dekada") + 9
Set rst1 = qdf0.OpenRecordset(acReadOnly)
Set AEp = .Controls.Add(msoControlPopup)
Последняя строка - это бомба с ошибкой «Невозможно добавить контроль», но не всегда.Он запускается несколько раз, но после четырех или пяти перестроек он неожиданно начинает выдавать ошибку в этой строке.Выключение, выполнение C & R и повторная попытка заставляют это работать снова, и снова несколько раз хорошо, затем начинается бомбардировка.
Я подозреваю, что злоупотребляю системой RC, что она была предназначена дляНесколько предметов, более или менее постоянно оставленных на месте, не такая интенсивная деятельность по сборке / перестройке с таким количеством предметов, но я не нашел никакой документации по этому вопросу или кого-либо, кто утверждает, что имел опыт работы с ним.
У кого-нибудь есть идеи?