2014-02-20 117 views
1

我是perl的新手。我被要求在ms訪問數據庫中使用perl執行一個宏。這是當我執行我發現,只有當訪問數據庫是開放代碼工作否則罰款返回以下錯誤像perl中的opencurrentdatabase一樣的方法

Can't call method "OpenCurrentDatabase" on an undefined value at auto.pl line 30 

所以我的計劃,我用

$oAccess = Win32::OLE->GetActiveObject('Access.Application'); 
$oAccess ->OpenCurrentDatabase($path); 
$oAccess ->{DoCmd}->RunMacro("DO ALL"); 

今天的代碼想知道如果我能找到任何其他的代碼,而沒有一個開放的MS訪問數據庫的服務。

+0

http://search.cpan.org/~jdb/Win32-OLE-0.1711/lib/Win32/OLE.pm#EXAMPLES –

回答

2
my $MSAccess; 
eval {$MSAccess = Win32::OLE->GetActiveObject('Access.Application')}; 
die "Access not installed" if [email protected]; 
unless (defined $MSAccess) { 
    $MSAccess = Win32::OLE->new('Access.Application','Quit') 
    or die "Unable to start Access"; 
} 
$MSAccess->{visible} = 0; 
+0

我想這將有力地開放獲取,但我想要的程序執行而不開放訪問權限(即只是一個執行宏的驅動程序)。 – Programmer

+0

@Programmer如果你的意思是你不希望Access是可視的,否則你的請求對我來說沒有什麼意義。 –

+0

是的我不希望訪問是可見的,因爲我們爲'$ dbh = DBI-> connect(「dbi:ODBC:driver = Microsoft Access Driver(* .mdb); dbq = xyz.mdb」,$ username,$ password )||死「連接錯誤:$!」;' – Programmer

相關問題