Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.06.2014, 09:18   #1
Swatch
Форумчанин
 
Регистрация: 05.07.2009
Сообщений: 209
Печаль Проблема с переводом БД из Access 2003 в 2007

Здравствуйте! Помогите решить проблему, у меня уже нет никаких мыслей. Есть БД в 2003 Access. В ней все модули абсолютно рабочие, проверенные годами. Сейчас возникла необходимость перехода на Access 2007. Насколько я поняла, никаких преобразований делать не нужно, я просто сохранила существующую БД в формате 2007, и все. В центре управления безопасностью включила все макросы. Но БД не работает.
При открытии БД открывается форма "Регистрация пользователя", в которой при нажатии кнопки "ОК" по учетной записи определяется доступ к различным пунктам пользовательского меню и происходит формирование самого этого меню. Процедура очень длинная, в ней вызывается множество различных функций. Собственно, все работает, если идти по коду пошагово (зайти в БД с шифтом, открыть форму регистрации и выполнить код до точки останова). Итак, когда я стою на данной строке (DoCmd.Close), я вижу вполне нормальную картину (см. вложение). У меня сверху в "Надстройках" сформировалось привычное меню с активными пунктами, которые разворачиваются по щелчку мыши. То есть все ок. Но как только я продолжаю выполнение кода и дохожу до конца процедуры, окно Access блокируется намертво, не реагирует на нажатия мыши НИКУДА, его даже закрыть невозможно никак, кроме как снять задачу в диспетчере процессов. Причем форма не закрывается, так и остается висеть на экране. Ума не приложу, в чем проблема. Код рабочий на 100 процентов, и что может вызвать такую реакцию приложения, я не понимаю.
Код:
Private Sub КнOK_Click()
....
здесь идет много-много строчек рабочего кода
...
DoCmd.Hourglass False
DoCmd.Close
Выход:
DoCmd.Hourglass False
    Exit Sub
Ошибка:
    MsgBox err.Description
    Resume Выход
End Sub
Помогите, пожалуйста!
Изображения
Тип файла: jpg Новый рисунок (4).jpg (84.0 Кб, 158 просмотров)
Swatch вне форума Ответить с цитированием
Старый 05.06.2014, 18:06   #2
Myhaylo
Форумчанин
 
Регистрация: 19.07.2012
Сообщений: 520
По умолчанию

Попробуйте в MS Access 2010: если проблема останется - нужно будет разбираться.
Окупант, руки прочь от Украины!!! Слава Героям!
Myhaylo вне форума Ответить с цитированием
Старый 09.06.2014, 08:47   #3
Swatch
Форумчанин
 
Регистрация: 05.07.2009
Сообщений: 209
По умолчанию

К сожалению, попробовать в 2010 возможности нет. Нашла вариант с отключением изолированного режима в реестре, думала, может дело в каких-то блокировках, - не помогло. Проблема не решена, есть какие-то еще соображения???? с шифтом базу открывает, запросы выполняет. Но полный функционал так и не удается запустить.
Swatch вне форума Ответить с цитированием
Старый 09.06.2014, 10:05   #4
Swatch
Форумчанин
 
Регистрация: 05.07.2009
Сообщений: 209
По умолчанию

Проблема, насколько я понимаю, в процедуре формирования пользовательского меню.
Код:
Public Sub CreateMenu()
Dim strSQL As String
Dim dbs As DAO.Database
Dim rstBar As DAO.Recordset
Dim rstConfig As DAO.Recordset

Dim Separated As Boolean
Dim UserMenu As String

Dim MenuBar As CommandBar
Dim BarCtrl As CommandBarControl

'''''
Dim qdfTemp As DAO.QueryDef
Dim dbsCur As DAO.Database

Set dbs = CurrentDb
Set dbsCur = CurrentDb
'''''

'DelBar

strSQL = "select top 1 * from admConfig"
strSQL = strSQL & " where default=True"

Set rstConfig = dbs.OpenRecordset(strSQL)

 
If rstConfig.BOF Then
    Separated = True
    UserMenu = "UserMenu"
Else
    Separated = rstConfig("SeparatedUserMenu")
    UserMenu = rstConfig("UserMenuName")
End If

SeparatedUserMenu = Separated
UserMenuName = UserMenu

strSQL = "select * from admInterfaceCtrl"
strSQL = strSQL & " where IdParent Is Null"
 
If Separated Then
    Separated = True
    Set MenuBar = CommandBars.Add(UserMenu, msoBarTop, , True)
    MenuBar.Visible = True
    strSQL = strSQL & " order by Nom"
       
Else
    Separated = False
    Set MenuBar = CommandBars.ActiveMenuBar
    strSQL = strSQL & " order by Nom desc"
    
   End If

InInterface 0, True 'определить доступные элементы
         


Set rstBar = dbs.OpenRecordset(strSQL)

          
Do Until rstBar.EOF

    If InInterface(rstBar!id) Then 'если входит в интерфейс пользователя
        If Separated Then
            Set BarCtrl = MenuBar.Controls.Add(Type:=rstBar("Type"), id:=1, Temporary:=True)
               
        Else
            Set BarCtrl = MenuBar.Controls.Add(Type:=rstBar("Type"), id:=1, Before:=2, Temporary:=True)
            'BarCtrl.Enabled = False
        End If
        'msoControlPopup
        
        BarCtrl.Caption = rstBar!Caption
        BarCtrl.Tag = rstBar!Caption
        DefineControl BarCtrl, rstBar!id
        
    Else
     If Separated Then
            Set BarCtrl = MenuBar.Controls.Add(Type:=rstBar("Type"), id:=1, Temporary:=True)
               
        Else
            Set BarCtrl = MenuBar.Controls.Add(Type:=rstBar("Type"), id:=1, Before:=2, Temporary:=True)
            'BarCtrl.Enabled = False
        End If
        'msoControlPopup
        
        BarCtrl.Caption = rstBar!Caption
        BarCtrl.Tag = rstBar!Caption
        DefineControl BarCtrl, rstBar!id
        BarCtrl.Enabled = False
    End If
    rstBar.MoveNext
Loop

End Sub
здесь определяются доступные для пользователя меню в соответствии с прописанными для него правами. В 2007 ввиду того, что появилась лента, эта функция уже не будет работать корректно?
Swatch вне форума Ответить с цитированием
Старый 10.06.2014, 10:42   #5
Myhaylo
Форумчанин
 
Регистрация: 19.07.2012
Сообщений: 520
По умолчанию

А Вы не пробовали закомментировать все строки, а потом их по одной раскомментировать, открывать базу и, таким образом, найти или локализовать проблему?
Окупант, руки прочь от Украины!!! Слава Героям!
Myhaylo вне форума Ответить с цитированием
Старый 10.06.2014, 10:45   #6
Swatch
Форумчанин
 
Регистрация: 05.07.2009
Сообщений: 209
По умолчанию

Пробовала. К коде проблем не найдено. Проблема появляется уже после его выполнения.
Swatch вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Конвертировать формулы из [2007 Word 2007] в [2003 Word 2003] mswmd Microsoft Office Word 8 10.07.2017 17:06
Проблема с переводом Zalex Microsoft Office Word 1 14.07.2011 18:23
Проблема с MS Access 2003 namburol Microsoft Office Access 5 03.06.2011 15:24
Как подключить бд MS Access 2003 без установки MS Access 2003. ShaevMV БД в Delphi 1 15.09.2010 14:19