2012-03-12 55 views
1

をドロップするには、execスクリプト私は、マクロを実行するときに#の一時テーブルをドロップしたい、使用することが適切である:エクセルVBA - 一時テーブル

tempdb..sysobjects 

スクリプトは次のとおりです。

sScript = sScript + "IF EXISTS (SELECT * FROM tempdb..sysobjects WHERE xtype = 'U' AND name like '#vl_enrolledByDate%') " & vbCrLf 
sScript = sScript + "BEGIN " & vbCrLf 
sScript = sScript + "DROP TABLE #vl_enrolledByDate " & vbCrLf 
sScript = sScript + "End " & vbCrLf 

iVal = execute_sql_command(sServer, sDatabase, sScript) 

sServerなど。 SQLPROD01およびsDatabaseです。 scratchdbですが、#テーブルがtempdbデータベースに格納されていると読んでいますが、これがテーブルが存在しない理由ですか?

だから私は、マクロを実行するときには、次のエラーメッセージが返されます。

Run-time error '-2147217865 (80040e37)': 

Cannot drop the table '#vl_enrolledByDate', because it does not exist 
in the system cataglog. 

をしかし、私はノン#テーブルを作成し、ちょうど

(SELECT * FROM sysobjects WHERE xtype = 'U' AND name like 'vl_enrolledByDate%') 

を使用している場合、それは大丈夫です。

答えて

0

私は常に条件付きで、このように一時テーブルをドロップ:

if OBJECT_ID('tempdb..#temp') is not null 
drop table #temp