2010-09-08 130 views
0

我有一個鏈接到SharePoint列表的2007年訪問表。將新記錄添加到共享點列表時,更改不會自動反映到訪問表中。如果右鍵單擊鏈接的表格,則可以選擇「刷新列表」,這與您所期望的完全一致。在Access中刷新Sharepoint鏈接表?

我的問題是如何用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 2010-09-08 20:42:01

+0

您可以在這裏解釋Powershell和Access的角色嗎?你是在Access還是在Powershell中編程?如果前者,Access與它有什麼關係? – 2010-09-08 21:10:59

+0

@CBono:在Access中,需要Requery一個表單來顯示所有記錄的情況並不少見,但如果使用表單來添加記錄,情況並非如此。這個問題很不清楚哪些平臺正在使用以及如何添加記錄以及新記錄無法顯示的位置。 – 2010-09-08 21:12:14

回答

1

您正在使用文本字符串加載Powershell變量,該字符串是不知道的Access常量的名稱。嘗試使用常量的值代替:

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

$ app.DoCmd.SelectObject(0,「sharepoint_table」,1)也是很好的飼料。 – MattUebel 2010-09-09 12:38:53

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 

我試過的和真正的方法,我已經在生產了一年多。