2009-07-29 10 views
1

Access 2000データベースファイル(* .mdb)に接続しようとしていますが、いくつかの問題があります。これまでの脚本はPowerShellを使用してAccess MDBファイルに接続する際の問題

1)ソースコードのベースラインとして以下をもたらしたpowershellを使用してデータベースに接続する方法を尋ねました。

$adOpenStatic = 3 
$adLockOptimistic = 3 

$objConnection = New-Object -comobject ADODB.Connection 
$objRecordset = New-Object -comobject ADODB.Recordset 

$objConnection.Open("Provider = Microsoft.Jet.OLEDB.4.0; Data Source = c:\scripts\sample.mdb") 
$objRecordset.Open("Select * from TotalSales", $objConnection,$adOpenStatic,$adLockOptimistic) 

$objRecordset.MoveFirst() 

do 
{ $objRecordset.Fields.Item("EmployeeName").Value; $objRecordset.MoveNext() } 
until ($objRecordset.EOF -eq $True) 

$objRecordset.Close() 
$objConnection.Close() 

2)データベースの完全修飾パスのデータソースを置換し、次に示すようにしました。これは私が直接データベースを編集し、私たちは、データベースが、我々は上のリンクとして次のコマンドを発行する必要が直接編集する必要があるかどうかを調べるに来る必要はほとんどない合理的RequisiteProのデータベースがあるので

Exception calling "Open" with "5" argument(s): "Record(s) cannot be read; no read permission on 'RqRequirements'." 
At :line:23 char:18 
+ $objRecordset.Open <<<< ("Select * from RqRequirements", $objConnectionCsdscDB,$adOpenStatic,$adLockOptimistic) 

3) Windowsデスクトップ:

"C:\Program Files\Microsoft Office\OFFICE11\MSACCESS.EXE" /wrkgrp C:\Program Files\Rational\RequisitePro\bin\rqprodb.mda" /user "xxxxxxx" /pwd "yyyyy" 

4)上記のスクリプトを取り、少し私は、次のしている、それを変更する:

$adOpenStatic  = 3 
$adLockOptimistic = 3 

$objConnectionRqProDB = New-Object -comobject ADODB.Connection 
$objConnectionCsdscDB = New-Object -comobject ADODB.Connection 
$objRecordset   = New-Object -comobject ADODB.Recordset 

$cnnStringRqProDB = "Provider = Microsoft.Jet.OLEDB.4.0;" + 
        "Data Source = C:\\Program Files\\Rational\\RequisitePro\\bin\\rqprodb.mda;" + 
        "UID=requisite admin;" + 
        "PWD=multiuser" 

$cnnStringCsdscDB = "Provider = Microsoft.Jet.OLEDB.4.0;" + 
        "Data Source = J:\\TestPowerShell\\Rational.MDB" 

$objConnectionRqProDB.Connectionstring = $cnnStringRqProDB 
$objConnectionRqProDB.Open() 

$objConnectionCsdscDB.Connectionstring = $cnnStringCsdscDB 
$objConnectionCsdscDB.Open() 

$objRecordset.Open("Select * from RqRequirements", $objConnectionCsdscDB,$adOpenStatic,$adLockOptimistic) 

$objRecordset.Close() 
$objConnection.Close() 

5)私はこのスクリプトを実行すると、私はfolloを取得翼のエラー:

Exception calling "Open" with "4" argument(s): "Could not find installable ISAM." 
At :line:17 char:26 
+ $objConnectionRqProDB.Open <<<<() 

6)私はいくつかの検索を行なったし、次のリンク、http://support.microsoft.com/kb/209805を発見した、と私は、レジストリをチェックし、エントリには、Microsoft \ジェット\ 4.0 \エンジン\

HKEY_LOCAL_MACHINE \ソフトウェアのために存在しています\パラドックス のwin32 = C:\ WINDOWS \ SYSTEM32 \ mspbde40.dll

このファイルは、私はアクセスが私のシステムにインストールされていない%のSYSTEM32の%\

ノートに位置しています(これは根本的な問題になる可能性?私は、スクリプト内の接続文字列に「/ WRKGRP」オプションを含めるにはどうすればよい

1):

質問)私はわからないが、私はADOを使用していますので、私はそうは思わないでしょうか?

2)接続文字列に "/ wrkgrp"オプションがないと仮定すると、何が問題になるのでしょうか?

3)これを動作させるには、システムにAccessをインストールする必要がありますか?

ありがとう、マーク

答えて

2

アクセスがインストールされている必要はありません。

あなたはワークグループデータベース(mdw)を別々に開こうとしていますが、そうしないでください。あなたは以下を使用し、あなたのケースでそう、接続文字列に

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\mydatabase.mdb; 
Jet OLEDB:System Database=system.mdw;User ID=myUsername;Password=myPassword; 

をワークグループデータベースを指定する必要が

$cnnStringRqProDB = "Provider = Microsoft.Jet.OLEDB.4.0;" + 
        "Data Source = J:\\TestPowerShell\\Rational.MDB;" + 
        "Jet OLEDB:System Database = C:\\Program Files\\Rational\\RequisitePro\\bin\\rqprodb.mda;" + 
        "User ID=requisite admin;" + 
        "Password=multiuser" 

$objConnectionCsdscDB.Connectionstring = $cnnStringCsdscDB 
$objConnectionCsdscDB.Open() 
+0

は、接続文字列にシステムデータベースを働い置き、DJをありがとうございます。メモとして、 'データソース'行に '+'がありません。 – lordhog

関連する問題