1
PowerShell関数でMicrosoft Access DBを開きたいとします。メインコードに接続変数を格納します。変数にメンバーがあるグローバル変数
これはコードです:
Function open_database($dbname) {
# Open the database
try
{
$global:conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=$dbname;Persist Security Info=False"
$global:conn.Open()
}
catch
{
write-host "Error connecting to the database " + $dbname
return $false
}
return $true
}
# M A I N
$conn = New-Object System.Data.OleDb.OleDbConnection
if (-Not (open_database("C:\temp\mydb.mdb"))) {exit}
私は、このエラーメッセージが出ます:
データベース+ Cへの接続エラー:\一時\のMYDB.MDB
プロパティことはできません 'のConnectionString' をこのオブジェクトに見つかります。プロパティが存在し、設定可能であることを確認します。
この問題を修正するにはどうすればよいですか?
PowerShellはglobal
をconn
に関連付けており、グローバルではないことをconn.ConnectionString
と関連付けていると思います。
しかし、あなたの質問のコードは、そのエラーを引き起こしませんか?私は便利なアクセスデータベースを持っていませんが、エラーではなく、苦情なしで実行されます。コメントにテストコードを入れることができれば - 'function test {$ global:c.x = 4}; $ c = @ {x = 2}; $ c;テスト; $ c'はグローバルのプロパティにアクセスすると動作します。 – TessellatingHeckler
デバッグのために 'Try_Catch'構造体をすべて省略しようとしています。 'Try'ブロックの裸の_inner_を使用して、' return $ false'を返すと、_full _可能なエラーが表示されます。 '$ global:conn'は期待どおりに定義されていますか? '$ main'の' $ conn = ... 'は_script_スコープで定義されています。 OLEDBプロバイダは登録されていますか? ... – JosefZ