2010-09-08 3 views
0

У меня есть таблица доступа в 2007 году, которая связана с списком sharepoint. Когда новая запись добавляется в список sharepoint, это изменение автоматически не отображается в таблице доступа. Если вы щелкните правой кнопкой мыши на связанной таблице, есть опция «Обновить список», которая будет точно так, как вы ожидали.Обновить ссылку, привязанную к Sharepoint, в Access?

Мой вопрос заключается в том, как выполнить эту опцию программно с помощью powershell или что-то подобное? (.netish)

Сложение:

Я обнаружил, что acCmdRefreshSharePointList существует как способ выполнить опцию «Обновить список». Я пытаюсь использовать его с помощью PowerShell:

$app = New-Object -ComObject access.application 
$app.OpenCurrentDatabase("C:\foo.accdb") 

$acCmd = "acCmdRefreshSharePointList" 
$app.DoCmd.RunCommand($accCmd) 

Я хотел бы надеяться, что эта последняя строка будет вызывать SharePoint-связанную таблицу для обновления. Тем не менее, я получаю следующее сообщение об ошибке:

Exception calling "RunCommand" with "1" argument(s): "Type mismatch. (Exception from HRESULT: 0x80020005 (DISP_E_TYPEMISMATCH))" At line:1 char:22 + $app.DoCmd.RunCommand <<<< ($acCmd) + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : ComMethodTargetInvocation

Кто-нибудь может пролить свет на то, что я мог бы делать неправильно, или альтернативные методы обновить этот список?

+1

Невероятно, что новые записи не отображаются автоматически в связанной таблице; на самом деле, это своего рода точка связанных таблиц в первую очередь. Единственный раз, когда мне приходилось обновлять ссылку, - это когда были внесены изменения в структуру списка (схему), например добавление нового столбца. – CBono

+0

Можете ли вы объяснить роль Powershell и Access здесь? Вы программируете в Access или в Powershell? Если первое, что делает доступ к нему? –

+0

@CBono: в Access вам не редко нужно запрашивать форму для отображения всех записей, но это не так, если вы использовали форму для добавления записи. Вопрос очень неясен в отношении того, какая платформа используется и как добавляется запись, и где новые записи не отображаются. –

ответ

1

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

$acCmd = 626 
$app.DoCmd.RunCommand($accCmd) 
+0

$ app.DoCmd.SelectObject (0, "sharepoint_table", 1) также необходимо было. – MattUebel

0
'Refresh Sharepoint table. 
'Open recordset, requery and close recordset 
On Error Resume Next 
Debug.Print Now(), "Refreshing Sharepoint Main Menu" 
Dim rs As Recordset 
Set rs = CurrentDb.OpenRecordset("Select * from 
    yourtablename") 
DoCmd.Requery 
DoEvents 
rs.Close 

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

Смежные вопросы