2017-01-09 33 views
0

私は基本的なスクリプトの始まりを持っています。理想的には、Accessでクエリを実行し、クエリの結果を取得してCSVに入力しますが、CSVに何も書き込んでいないようです(ただし、変更日時は変更されています)。

私には何が欠けていますか?

$Acc = New-Object –Com Access.Application 

$Acc.OpenCurrentDataBase("H:\TEST.mdb") 

#Runs the query 
$Acc.DoCmd.OpenQuery("Query1") 

#Dealing with results 
$Results = $Acc.DoCmd.OpenQuery("Query1") 

$Results | Select-Object $Results | Export-Csv -Path H:\test.csv -Delimiter ";" 

私はまた、代わりにこれで終わる試してみました:

$Results | Out-File -Append H:\test2.csv -Encoding UTF8 
+1

'$ Results'は空ですか? – alroc

+0

いいえ、クエリを手動で実行すると、少なくとも少数の結果が得られます。 –

+0

@glass_kites '$ results'は文字列配列ですか、それとも1つとして表現できるものなのですか? '$ results.GetType()。Fullname'です。 '$結果| Select-Object $ Results'は私にとって奇妙に思えます。 $ resultsがオブジェクトの場合、selectをまとめて削除することはできますか? – Matt

答えて

3

OpenQuery()方法は、単にAccessでクエリを開きます。クエリ結果は返されません。 TransferText()メソッドを使用して、クエリ定義の結果セットをCSVとして保存することができます。

$acc.DoCmd.Transfertext(2, [Type]::Missing, 'Query1', 'H:\test.csv', $true) 
+0

華麗な、ありがとう。完璧に動作します! –

関連する問題