Я обновляю систему баз данных с 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 в понедельник утром.Если у кого-нибудь есть предложение, я готов закончить с этим проектом!