临时表的生成语句:
StrSQL = "select * into #hwLabOrder2 from LabOrder where (enddate=20031218)"
ConData.Execute StrSQL
只能判断常用表的存在语句对临时表没用:
StrSQL = "select * from sysobjects where name='#hwLabOrder2' and xtype='U' "
查询结果是sysobjects中没有临时表的记录*************************************************************
目前的解决方案:
On Error GoTo Data_Err
StrSQL = "drop table #hwLabOrder2"
ConData.Execute StrSQL
..................................Exit Sub
Data_Err:
If Err.Number = -2147217865 Then  
Resume Next
Else
MsgBox "出错代码:" & Format(Err.Number) & Chr(13) & "提示:" & Err.Description, vbSystemModal + vbCritical, Me.Caption
End If

解决方案 »

  1.   


    临时表放在tempDB库中,你在查询时指定一下就行:StrSQL = "select * from tempDB..sysobjects where [name]='#hwLabOrder2' and xtype='U' "
      

  2.   

    IF NOT (SELECT Object_id('Tempdb..#hwLabOrder2')) IS NULL
        DROP TABLE #hwLabOrder2
      

  3.   

    搞定了!晚上结贴,加10分!
    多谢victorycyz!
    在TempDB数据库中的sysobjects表中,临时表的名称变成“#hwLabOrder2________________________________________________________________________________________________________000000000021”,只能用Like了。但删除用的名称只能是““#hwLabOrder2”
    '查临时表
    StrSQL = "select * from tempDB..sysobjects where ([name] like '%#hwLabOrder2%') and xtype='U' "
    Set HwLabTemp2 = SQLFind(StrSQL, ConData, StrMsg)  'SQLFind:自定义Recordset赋值函数If HwLabTemp2.RecordCount > 0 Then
    StrSQL = "drop table #hwLabOrder2"
    ConData.Execute StrSQL
    End If
      

  4.   

    谢谢leolan(leolan),能解释一下代码的意思吗?
      

  5.   

    根據表的ID來判斷的,我覺得這樣簡單點.
    如果這個表存在的話,那麼它的ID就不等於NULL.
      

  6.   

    To: leolan(leolan)
    我用的是临时表,在Tempdb库里看不到的,只有sysobjects里有记录。能说明思路吗?谢谢!
      

  7.   

    sysobjects存存放每個Table的資料的Table,也是Tempdb庫裡的一個Table呀.
    臨時表一定是存放在Tempdb庫裡的,只要connection還存在,在Tempdb裡就能看得到的
      

  8.   

    最好是这样判断:
    IF NOT (SELECT Object_id('Tempdb..#hwLabOrder2')) IS NULL
      

  9.   

    最好是这样判断:
    IF NOT (SELECT Object_id('Tempdb..#hwLabOrder2')) IS NULL
    这个比较简单咯~~~