2012-05-10 17 views
0

動的選択ステートメントを作成するには、現在、クエリを保持する一時ファイルを作成しています(使用する結合およびデコードの数により30k +文字)。私は、データをExcelに戻すために完全なselectステートメントを持つこの一時ファイルを使用したいと思います。ExcelでVBAを使用して.sqlファイルからSQL Selectクエリを実行する

私の現在のコードを使用すると、私は短い選択文しか実行できません。私が作成する文字列は、何らかの理由で切り捨てられているようです。

私はファイルを作成し、現在同じ文字列を実行しようとしているコードのスニペットです。

' Set file details 
fileDir = "C:\temp\" 
filePath = "C:\temp\" & node & "_SRO_TCs.sql" 

'check if directory exists, if not create it 
If Dir(fileDir, cbDirectory) = "" Then 
MkDir fileDir 
End If 

' open the file 
Open filePath For Output As #1 

'Write to file 
outputText = sqlQuery3 
Print #1, outputText 

'open connection 
sqlCon.ConnectionString = Conn 
    'Cn.CursorLocation = adUseClient 
sqlCon.Open 

'set and execute sql command 
Set sqlCommand.ActiveConnection = sqlCon 
sqlCommand.CommandText = sqlQuery3 
sqlCommand.CommandType = adCmdText 
sqlCommand.Execute 

'open recordset 
Set sqlRecordSet.ActiveConnection = sqlCon 
sqlRecordSet.Open sqlCommand 


'copy data to excel 
ActiveSheet.Range("A1").CopyFromRecordset (sqlRecordSet) <<<< This is where i get an error returned when stepping through the code - "Run-time error '91': Object variable or With block variable not set" 

'close connections 
sqlRecordSet.Close 
sqlCon.Close 

'Close file 
Close #1 

作成したファイルをチェックすると、動作するSQL SELECT文があります。私はこのファイルまたは文字列を実行できるようにしたいと思います。助けてください!この

Set recordset = command.Execute(RecordsAffected, Parameters, Options) 

あなたのコードはかなり異なっているよう

+0

出力するファイルを開き、sqlQuery3をファイルに書き出します。ファイルをsqlQuery3という文字列変数に読み込むことを意味しますか? – Fionnuala

+0

@Remou sqlQuery3は、ファイルに書き込まれているクエリーです。すでに選択文字列が含まれています。私はsqlQuery3の代わりに作成されたファイルを使用する方法が欲しいです。なぜなら、sqlQuery3はsqlCommandを渡そうとすると切り捨てられるからです。 –

+0

@トニー - あなたはその切り詰めについて間違っていると思います。なぜあなたのSQLは切り捨てられていると思いますか?私がこれまで実行してきた唯一の制限は、単一のOracle SQLクエリの最大サイズです。 –

答えて

0

コマンドは、Executeメソッドが見えます。以前はあなたのコードをあまりにも熱心に見ていませんでした。

関連する問題