создание comobject для AccessObjects - PullRequest
0 голосов
/ 30 апреля 2018

Я пытаюсь создать комбинированный объект PowerShell AccessObject для моего приложения MS Access. По сути, я попытаюсь создать скрипт powershell, который получает запросы к базе данных и таблицам и / или запросам, от которых зависит конкретный запрос. Для этого мне понадобится экземпляр классов MS Access 'AccessObject' и 'DependencyInfo' в моем скрипте powershell. Я приложил фрагмент функции, которую я намерен использовать. Это не полная функция, обратите внимание. Все, что я хочу, это знать, как создать экземпляр DependencyInfo и AccessObjects в powershell.

function getQueries([string] $database)
{
    $dbEng = New-Object -ComObject DAO.DBEngine.120
     
    $AccessApp= New-Object -ComObject Access.Application
 
    $Dependency = $AccessApp.DependencyInfo
    $AccessObject=$AccessApp.AccessObjects

 ...
 }

Ответы [ 2 ]

0 голосов
/ 01 мая 2018

Спасибо @Lord Adam. Это было действительно полезно. В моем случае мне пришлось немного изменить логику:

$AccessApp= New-Object -ComObject 'Access.Application'
$AccessApp.OpenCurrentDatabase($database)

 $AccessApp.Application.SetOption("Track Name AutoCorrect Info", $true)
    
 $QryDependency = $AccessApp.Application.CurrentData.AllQueries.Item($query.Name).GetDependencyInfo()
 
  ForEach($di in $QryDependency.Dependencies)
      {
              $QryObjects= $QryObjects + $di.Name +","
      }
0 голосов
/ 01 мая 2018

Все, что я хочу - это знать, как создать экземпляр DependencyInfo и AccessObjects в powershell.

Следующее создает новый процесс Access, открывает локальный файл accdb и извлекает зависимости для данной формы:

$db = new-object -ComObject 'Access.Application'
$db.OpenCurrentDatabase('C:\temp\deezNutz.accdb')
$dependency_info = $db.Application.CurrentProject().AllForms('frm_person').GetDependencyInfo()
foreach ($dependency in $dependency_info.Dependencies) { $dependency.FullName }
$db.CloseCurrentDatabase()
$db.Application.DoCmd.Quit()

Если вы пытаетесь программно манипулировать объектами в базе данных Microsoft Access, например, формами, отчетами, запросами и т. Д. Лучше всего искать решения с использованием VBA, а затем преобразовывать их в Powershell. Для этого примера я сначала написал решение на VBA, а затем преобразовал его в Powershell.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...