Связывание модулей vba в MS Access 2007 - PullRequest
0 голосов
/ 09 июня 2010

Я обновляю систему баз данных с Access 2000 db до Access 2007, которая взаимодействует с несколькими химическими измерительными приборами (измеритель pH, шкала и т. Д.) Через последовательный порт RS 232.Первый БД состоит из нескольких модулей, содержащих код VBA, который обеспечивает связь с портами, а также поддерживает код, стоящий за формами во втором БД.Пользователь или лаборант перемещается по формам во второй БД для взаимодействия с лабораторными устройствами, а также для генерации отчетов, отображающих информацию.от устройств.Отчеты также являются частью второго БД.Код работает в Access 2000, но как только я преобразую его в 2007, код во второй базе данных не может найти вызовы функций в первой базе данных, которые определяют переход от экрана к экрану.Я попытался импортировать модули во второй БД, и я попытался связать их, но это все еще не работает.Сообщение об ошибке # 438: «Объект не поддерживает это свойство или метод».Любые предложения будут ценны.

Вот код для первой функции, которая вызывается неправильно:

Description:
' This routine is used to return to the calling form and close the active form.
'
' Input:
' strFormCalled     ---  the active form
' strCallingForm    ---  the form that called the active form
' blnUnhideOrOpen   ---  whether to open or just unhide form

Public Sub basReturnToCallingForm(ByVal strFormCalled As String, ByVal _ 
    strCallingForm As Variant, Optional blnUnhideOrOpen As Boolean = True)

On Error GoTo err_basReturnToCaliingForm

    If Not basIsBlankString(strCallingForm) And blnUnhideOrOpen Then
        DoCmd.OpenForm strCallingForm, acNormal
    Else
        Call basUnHideForm(strCallingForm)
    End If

Call basCloseForm(strFormCalled)

exit_basReturnToCaliingForm:
    Exit Sub
err_basReturnToCaliingForm:
    Err.Raise Err.Number, "basReturnToCaliingForm", Err.Description
End Sub

Я скоро опубликую вторую функцию, но мне нужно идти на собрание ...Вторая функция, которая не работает, - это cmdStartClick, который должен вызываться, когда пользователь инициализирует насос.Тем не менее, внутри этой функции она также придерживается линии, которая должна перейти к следующей форме в БД.Другое дело, что код работает в Access 2002, но не в Access 2007 ...

Вот второй раздел кода, который программа постоянно задыхается:

Private Sub cmdClose_Click()

On Error GoTo err_cmdCloseClick

    Call basReturnToCallingForm(Me.Name, m_strCallingForm, False)

exit_cmdCloseClick:
    Exit Sub
err_cmdCloseClick:
    MsgBox basGetString(g_clngUnexpectedError, Err.Number, "cmdCloseClick", _  
    Err.Description), vbCritical, "Unexpected Error"
Resume exit_cmdCloseClick
End Sub

Iпроверил ссылки, и, насколько я могу судить, все включено, что должно быть.С тех пор, как я в последний раз писал, мы смогли заставить программу работать в Access 2002, но нам все еще не повезло с Access 2007 ...

обновление 6/14/10:

Итак ... в конструктивном виде формы, которая функционирует в качестве интерфейса для взаимодействия с электронным насосом (для выдачи химикатов в химической лаборатории), предполагается, что встроенный объект ActiveX.Это отсутствует.Однако, когда я пытаюсь установить его заново, я получаю сообщение: «Сервер OLE не зарегистрирован. Чтобы зарегистрировать сервер OLE, переустановите его».Тем не менее, я переустановил обновленные драйверы для портов RS232, и я все еще получаю то же сообщение.Короче говоря, Access не позволит мне вставить элемент управления ActiveX, который необходим форме.Так вот, где я нахожусь по состоянию на 8:30 EST в понедельник утром.Если у кого-нибудь есть предложение, я готов закончить с этим проектом!

Ответы [ 2 ]

2 голосов
/ 14 июня 2010

Оказывается, мне нужно было зарегистрировать нужный элемент управления ActiveX, что сделано немного иначе в Access 2007. Вот ссылка, если кому-то интересно.Я использовал метод 2. Спасибо за полезные комментарии.http://support.microsoft.com/kb/918574

1 голос
/ 11 июня 2010

В VBA Code Editor выберите Tools-> References и посмотрите, помечены ли какие-либо из них как MISSING.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...