четверг, 1 марта 2012 г.

Взять таблицу по имени (VBA)

Ох уж этот странный Visual Basic!
Приведённый код проверялся на Visual Basic 6.3

Задача:
Получить указатель на таблицу по её имени.

Рабочий пример:
(Работает)
    Dim db As DAO.Database
    Dim td As DAO.TableDef
    Dim strName As String

    Set db = CurrentDb()
    Set td = db.TableDefs("имя таблицы")

    strName = td.Name



А теперь два примера, которые должны работать с точки зрения C++ программиста, но они не работают!
(нет 1)
    Dim td As DAO.TableDef
    Dim strName As String

    ' записано одним выражением
    Set td = CurrentDb().TableDefs("имя таблицы")

    ' будет ошибка!
    strName = td.Name
(нет 2)
    Dim td As DAO.TableDef
    Dim strName As String

    ' убраны скобки после CurrentDb
    Set td = CurrentDb.TableDefs("имя таблицы")

    ' будет ошибка!
    strName = td.Name