2013-02-18 12 views
1

Я хочу, чтобы получить количество записей из набора результатов при запросе SQL Server 2008 R2 с ASP VBscript:Recordset.RecordCount не допускается

Conn = "Provider=SQLNCLI10; DataTypeCompatibility=80; Data Source=Source; Initial Catalog=catalog; User ID=id; Password=pw; Network Library=dbmssocn; Encrypt=Yes;" 

Это возвращает правильное количество записей:

consulta = "select 'x' x;" 

rs.open consulta, Conexao, 3 
Response.Write(rs.RecordCount) 

Но когда я выбираю временную таблицу, она выдает ошибку:

consulta = "select 'x' x into #t; select * from #t; drop table #t;" 

rs.open consulta, Conexao, 3 
Response.Write(rs.RecordCount) 

ADODB.Recordset error '800a0e78' 

Operation is not allowed when the object is closed. 

ответ

3

Я думаю, вам нужно использовать .NextRecordSet():

strsql = "select 'x' x into #t; select * from #t; drop table #t;" 

rs.Open strsql, conn 

'Move to your 2nd recordset to return the values (in this case 'x') 
Set rs = rs.NextRecordset() 
if not rs.eof then 
    response.write rs(0) 
end if 
rs.close 

Это также работает для меня, если я отделить строки SQL и использовать EXECUTE или OPEN при необходимости:

'Create Temp Table 
strsql = "select 'x' x into #t; " 
conn.execute strsql 

'Select From Temp Table 
strsql = "select * from #t;" 
rs.open strsql, conn 
if not rs.eof then 
    response.write rs(0) 
end if 
rs.close 

'Drop Temp Table 
strsql = "drop table #t;" 
conn.execute strsql 

Надеется, что это помогает.

+0

Что вы предоставляете услуги? 'SQLOLEDB' или' SQLNCLI10'/'SQLNCLI11'? –

+0

@Clodoaldo - для моего тестирования я подключаюсь к базе данных MSSQL 2008 R2 с использованием SQLOLEDB. Строка подключения выглядит так: ConnectionString = «Provider = SQLOLEDB; Server = имя_сервера; Database = DBName; UId = UserId; Pwd = Password» - надеюсь, что это поможет. – sgeddes

Смежные вопросы