功能:实现在VB程序中 建立一TEMP表(如有此表则删除,无表则建立此表)
Public Function ISTable(conn As ADODB.Connection, strtable As String) As Boolean
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=I:\±ÏÒµÉè¼ÆÎĵµ×ÊÁÏ\temp\db.mdb;Persist Security Info=False"Dim rst As ADODB.RecordsetOn Error GoTo error_istablerst.Open "select * from " & strtable
ISTable = True
rst.Close
Exit Functionerror_istable:
ISTable = FalseEnd FunctionDim sql As String
Dim rst As ADODB.RecordsetIf ISTable(mycon, "temptable") = True Then
    Call openres("drop table temptable")
Else
  Call openres("Create Table TempTable(id varchar(20),col2 varchar(20))")
  Call openres("select * from temptable")
End If
End Sub
注:
Public mycon As New ADODB.Connection
Public myres As New ADODB.Recordset
openres 是模块中建立的过程
错误现象:
 If ISTable(mycon, "temptable") = True Then
         Call openres("drop table temptable")
这一块没有作判断,老是提示 表已经建立大家帮我看看 程序到地哪个地方错了

解决方案 »

  1.   

    你的判断表存不存的函数是根据错误处理得出的,可能是在你的rst.Open "select * from " & strtable这句之前就已经出错,比如:conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=I:\±ÏÒµÉè¼ÆÎĵµ×ÊÁÏ\temp\db.mdb;Persist Security Info=False"
    因为数据库的链接如果已经打开的话再开就会出错,所以我估计是你的函数有问题,你先把错误处理去掉,看到底是哪出错就知道这个函数好不好用了.另外,表直接删除就可以了,不用判断存不存在.
      

  2.   

    调试过程中,先不用错误处理语句,
    加一句Dim rst As new ADODB.Recordset
    和Public myres As New ADODB.Recordset不同
      

  3.   

    在这句上面conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data 加入
    if conn.state=adstateopen then conn.close