请参阅以下代码:
rsTitle.Open "CREATE TABLE #TestTable (testtitle varchar(10)) INSERT INTO #TestTable values ('TestTitle') select * from #testtable", objCon.ActiveCon, adOpenStatic, adLockReadOnly
在执行上面的行后,rsTitle始终关闭。为什么是这样?它应该返回一行。
答案 0 :(得分:1)
尝试使用SET NOCOUNT ON
。将SET NOCOUNT ON
放在与ADO一起使用的SQL语句中,如下所示:
Dim adoCn As adoDb.Connection
Dim adoCm As adoDb.Command
Dim rsTitle As adoDb.Recordset
Set adoCn = New adoDb.Connection
...
Set adoCm = New adoDb.Command
With adoCm
Set .ActiveConnection = adoCn
.CommandType = adCmdText
.CommandText = "CREATE TABLE #TestTable (testtitle varchar(10)) " & _
"INSERT INTO #TestTable(testtitle) values ('TestTitle') " & _
"SELECT * FROM #TestTable go"
.Execute
End With
Set rsTitle = New adoDb.Recordset
With rsTitle
Set .ActiveConnection = adoCn
.Open "SET NOCOUNT ON"
End With
rsTitle.Open adoCm, , , ,
答案 1 :(得分:0)
对于那种混合DDL + SELECT语句,你最好:
Set rstitle = objCon.ActiveCon.Execute("SET NOCOUNT ON; CREATE TABLE #TestTable (testtitle varchar(10)); INSERT #TestTable values ('TestTitle'); select * from #testtable", adCmdText)