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)
あなたのコードはかなり異なっているよう
出力するファイルを開き、sqlQuery3をファイルに書き出します。ファイルをsqlQuery3という文字列変数に読み込むことを意味しますか? – Fionnuala
@Remou sqlQuery3は、ファイルに書き込まれているクエリーです。すでに選択文字列が含まれています。私はsqlQuery3の代わりに作成されたファイルを使用する方法が欲しいです。なぜなら、sqlQuery3はsqlCommandを渡そうとすると切り捨てられるからです。 –
@トニー - あなたはその切り詰めについて間違っていると思います。なぜあなたのSQLは切り捨てられていると思いますか?私がこれまで実行してきた唯一の制限は、単一のOracle SQLクエリの最大サイズです。 –