Nano Hash - криптовалюты, майнинг, программирование

Как установить глобальную переменную VBA в одном проекте и использовать в другом проекте?

Фон

База данных контроля версий под названием VCS (имя проекта = VCS) используется для различных задач контроля версий.

Различные другие базы данных приложений имеют VCS, настроенные в качестве эталона.

В этих базах данных приложений устанавливается глобальная переменная, определяющая, какие таблицы в них необходимо резервировать:

Global Const APP_TABLES_TO_BACKUP = "tbl1, tbl2, tbl5"

Проблема

Вопрос в том, как сослаться на эту APP_TABLES_TO_BACKUPconstant из проекта VCS?

Поскольку каждое приложение имеет свою собственную настройку этого значения, имеет смысл установить значение в модуле приложения и вызвать это значение из проекта базы данных VCS.

Любые идеи о том, как это сделать?

Пока...

Я искал и нашел Understanding Scope Чипа Пирсона, но не совсем понял, как установить и ссылайтесь на глобальную переменную.

В непосредственном окне приложения я могу ввести ?APP_TABLES_TO_BACKUP и получить таблицы, но я не вижу, как ссылаться на ту же самую переменную из базы данных VCS, чтобы ее можно было использовать в подпрограмме.

Есть идеи?


  • Ключевое слово Global устарело более 20 лет назад. Public делает то же самое. Если у вас есть проекты A и B, и вам нужно, чтобы проект A использовал код в проекте B, то вам нужно, чтобы проект A имел ссылку на проект B. Но на самом деле рассмотрите возможность чтения/записи параметров конфигурации вместо этого в каком-то файле. 23.11.2017
  • Если это Access, не лучше ли иметь таблицу с именем APP_TABLES_TO_BACKUP в каждой отдельной базе данных для указания этой информации? 23.11.2017
  • @YowE3K, черт возьми, мне всегда не хватает тега доступа, лол 23.11.2017
  • @Mat's Mug - Да, здесь должно быть написано Public против Global... и мне, вероятно, следует использовать коллекцию TempVars.... или таблицу, например, @YowE3K metntions (хотя я бы не хотел добавлять это в приложение, поскольку оно только используется, когда я делаю версии). Хм... 23.11.2017

Ответы:


1

Вы можете добавить ссылку на внешнюю базу данных в вашу базу данных VCS.

Как? См. этот ответ.

Убедитесь, что имена модулей и функций в двух базах данных не конфликтуют. Затем вы можете просто сослаться на свою константу, используя MyModule.APP_TABLES_TO_BACKUP, или, если у вас есть несколько проектов с одним и тем же модулем и именем константы, MyProject.MyModule.APP_TABLES_TO_BACKUP

23.11.2017

2

Поскольку мой предыдущий пост, по-видимому, не пришел пару дней назад...

Немного поискав, я наткнулся на пользовательские свойства базы данных Пола Мюррея, которые прекрасно работают.

С некоторыми изменениями я создал модуль, который включает общие методы добавления и удаления свойств.

' ---------------------------------
' FUNCTION:     AddDbProperty
' Description:  add custom properties to a database application
' ---------------------------------
Public Function AddDbProperty(DbProperty As String, _
                    DbPropertyValue As String, _
                    Optional DbPropertyType As Long = DB_TEXT, _
                    Optional DbFilename As String = "Current")
On Error GoTo Err_Handler

    Dim db As DAO.Database
    Dim prop As Property

    If DbFilename = "Current" Then
        Set db = DBEngine(0)(0)
    Else
        Set db = OpenDatabase(DbFilename)
    End If

    'add the property
    Set prop = db.CreateProperty(DbProperty, DbPropertyType, DbPropertyValue)
    db.Properties.Append prop

Exit_Handler:
    db.Close
    Set db = Nothing
    Exit Function

Err_Handler:
    Select Case Err.Number
      Case Else
        MsgBox "Error #" & Err.Number & ": " & Err.description, vbCritical, _
            "Error encountered (#" & Err.Number & " - AddDbProperty[mod_Dev_Properties])"
    End Select
    Resume Exit_Handler
End Function

' ---------------------------------
' FUNCTION:     RemoveDbProperty
' Description:  remove custom properties from a database applciation
' ---------------------------------
Public Function RemoveDbProperty(DbProperty As String, _
                    Optional DbFilename As String = "Current")
On Error GoTo Err_Handler

    Dim db As DAO.Database

    If DbFilename = "Current" Then
        Set db = DBEngine(0)(0)
    Else
        Set db = OpenDatabase(DbFilename)
    End If

    'remove the property
    db.Properties.Delete DbProperty

Exit_Handler:
    db.Close
    Set db = Nothing
    Exit Function

Err_Handler:
    Select Case Err.Number
      Case Else
        MsgBox "Error #" & Err.Number & ": " & Err.description, vbCritical, _
            "Error encountered (#" & Err.Number & " - RemoveDbProperty[mod_Dev_Properties])"
    End Select
    Resume Exit_Handler
End Function

' ---------------------------------
' FUNCTION:     UpdateDbProperty
' Description:  add custom properties to a database application
' ---------------------------------
Public Function UpdateDbProperty(DbProperty As String, _
                    DbPropertyValue As String, _
                    Optional DbFilename As String = "Current")
On Error GoTo Err_Handler

    Dim db As DAO.Database

    If DbFilename = "Current" Then
        Set db = DBEngine(0)(0)
    Else
        Set db = OpenDatabase(DbFilename)
    End If

    'add the property
    db.Properties(DbProperty) = DbPropertyValue

Exit_Handler:
    db.Close
    Set db = Nothing
    Exit Function

Err_Handler:
    Select Case Err.Number
      Case Else
        MsgBox "Error #" & Err.Number & ": " & Err.description, vbCritical, _
            "Error encountered (#" & Err.Number & " - UpdateDbProperty[mod_Dev_Properties])"
    End Select
    Resume Exit_Handler
End Function

С помощью немедленных свойств окна IDE можно добавлять/обновлять/удалять.

Например:

?AddDbProperty("My Property Name","My Property value")

Получение свойства легко выполняется через vba

CurrentDb.Properties("My Property Name")

Спасибо всем за также жизнеспособные входы!

24.11.2017
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..