При выполнении кода, прежде чем любые формы открываются в Доступе

Запись в мастер / чтение из ведомого реализована в клиенте redis салата. Это прозрачно для вашего кода приложения

8
задан shruti1810 27 May 2015 в 07:48
поделиться

5 ответов

Создайте Макрос и назовите его "автодолжностным лицом". Для макро-действия выберите "RunCode" и затем определите имя функции к названию функции, которую Вы используете для проверки связанных таблиц.

6
ответ дан 5 December 2019 в 15:28
поделиться

Как Matt сказал, создайте макрос, назовите его "автодолжностным лицом" и выберите "RunCode" как макро-действие. Аргументом Имени функции должно быть название функции, которую Вы хотите выполнить (и не sub), и если функция не имеет никаких аргументов, необходимо все еще поместить () в конец, или это не будет работать.

2
ответ дан 5 December 2019 в 15:28
поделиться

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

Me.Visible = False
'Determines if the database window is displayed
SetProp "StartupShowDBWindow", False, dbBoolean
'Hide hidden and system objects
SetOption "Show Hidden Objects", False
SetOption "Show System Objects", False

'Find back end
CheckLinkPath

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

Set RS = CurrentDb.OpenRecordset("Select TableName From sysTables " _
& "WHERE TableType = 'LINK'")

RS.MoveFirst
strConnect = db.TableDefs(RS!TableName).Connect
If Not FileExists(Mid(strConnect, InStr(strConnect, "DATABASE=") + 9)) Then
    'All is not well
    blnConnectError = True
Else
    Do Until RS.EOF()
        If db.TableDefs(RS!TableName).Connect <> strConnect Then
            blnConnectError = True
            Exit Do
        End If

        RS.MoveNext
    Loop
End If

Если все в порядке, маленькая форма называет главное меню или форму, и пользователь никогда не видит форму проверки. Я также использовал бы эту форму для открытия подсказки пароля при необходимости.

2
ответ дан 5 December 2019 в 15:28
поделиться

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

Почему Вы не добавляете диалоговое окно к своему приложению, в случае, если Ваша возможность соединения потеряна? Вы могли создать объект fileDialog в своем коде, позволив пользователю просмотреть для *mdb файл где угодно на его компьютере/сети. Затем возможно управлять этим, выбранный mdb файл содержит все требуемые таблицы, и откройте соответствующие ссылки (я предполагаю, что Вы используете команду transferDatabase).

И что относительно дополнительных инструментов/ссылок Вам будет нужно, чтобы Ваше приложение работало, когда Вы распределите его своим заключительным пользователям? По умолчанию Доступ MS записывает 3 основных:

  • Visual Basic для приложения
  • Библиотека Microsoft Access
  • Microsoft DAO Library

Если для Вашего приложения нужно что-либо еще, такое как ADO или объекты Office (ADODB.recordset или Office commandbars, например), необходимо будет добавить ссылки вручную для каждой установки, поскольку заключительный пользователь не сможет открыть окно VBA и получить доступ к меню инструментов/ссылок.

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

Править: автоисполнительный макрос является определенно правильным решением для кода вызова перед любым событием.

Править: не забывайте, что Ваши заключительные пользователи могут получить прибыль версии среды выполнения Доступа, который свободен!

1
ответ дан 5 December 2019 в 15:28
поделиться

Как и другие предлагали, в этом случае я бы использовал макрос AutoExec. Если ваш код, который проверяет связанные таблицы, в настоящее время является подпрограммой, измените его на функцию, которая возвращает TRUE в случае успеха. Затем можно использовать столбец «условия» в макросе AutoExec, чтобы выйти из приложения с удобным диалоговым окном ошибок, если код таблицы ссылок завершился неудачно. Ваш макрос AutoExec может выглядеть примерно так:

  1. Вызовите функцию LinkTables (), установите условие для прекращения запуска в случае сбоя.
  2. Вызовите форму «Главное» меню запуска.
0
ответ дан 5 December 2019 в 15:28
поделиться