Я обновляю Access 97 DB с кодом VBA для Access 2007. Код VBA использует объекты DAO, на которые ссылается Access 2007, когда я преобразовывал файлы db (сначала с 97 по 2002, а затем в 2007).В частности, моя проблема связана с двумя ссылками: «Библиотека объектов Microsoft DAO 3.6» и «Библиотека объектов ядра базы данных Microsoft Office 12.0 Access».В материалах, которые я читал в Интернете, говорится, что ADE 12.0 должен заменить ссылку на DAO 3.6, и что, просто установив флажок ADE 12.0, все должно работать.Поскольку оба они предоставляют ссылки на объекты с одинаковыми именами, эти две ссылки не могут быть проверены одновременно.Однако, если установить флажок DAO 3.6 и оставить флажок ADE 12.0 не установленным, Access не сможет найти существующую форму "frmLogin".Если снять флажок DAO 3.6 и установить флажок ADE 12.0, я получу ошибку времени выполнения 13: «несоответствие типов» для объекта «Err» в Visual Basic:
Public Function basGetString(ByVal lngStringID As Long, ParamArray varStringArgs() _
As Variant) As String
Dim intTokenCount As Integer
Dim strResString As String
On Error GoTo err_basGetString
strResString = basLoadString(lngStringID)
If Not IsMissing(varStringArgs) Then
intTokenCount = 0
Do While intTokenCount <= UBound(varStringArgs)
strResString = basReplaceToken(strResString, _
m_cstrArgToken, varStringArgs (LBound(varStringArgs) + intTokenCount),_
1, 1)
intTokenCount = intTokenCount + 1
Loop
End If
strResString = basReplaceToken(strResString, m_cstrVBCRLFToken, vbCrLf, -1, 1)
basGetString = strResString
exit_basGetString:
Exit Function
err_basGetString:
Err.Raise Err.Number, "basGetString", Err.Description
End Function
Отладчик указывает наот второй до последней строки:
Err.Raise Err.Number, "basGetString", Err.Description
Я успешно устранял неоднозначность объектов набора записей, что разрешило многие другие конфликты ссылок в коде: Dim rs As DAO.Recordset or Dim rs As ADODB.Recordset
, но это не сработало с объектом Err,То есть я пытался переписать объект Err как объект DAO Error.Я также не смог найти другую ссылку в редакторе VB, которая устраняет эту ошибку ссылки, но также не конфликтует с другой ссылкой ADE 12.0.Итак, я не понимаю, почему установка флажка ADE 12.0 не решает все мои проблемы.И мне трудно понять, как переписать код, чтобы он ссылался на библиотеку ADE 12.0.Наконец, ссылка ADE 12.0 действительно указывает на ACEDAO.DLL в следующей папке: C: \ Program Files \ Common Files \ Microsoft Shared \ OFFICE12.Буду очень признателен за любые предложения.