2010-09-08 129 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 

我试过的和真正的方法,我已经在生产了一年多。