problema con RecordSet en DTS

01/06/2007 - 14:21 por DarthSidious | Informe spam
buenos dias, estoy haciendo un DTS en sql 2000, que incluye una secuencia de
comandos Activex, con vbscript.
El problema es que siempre que habro el recordset la consulta no devuelve
nada, la propiedad RecordCount es igual a -1.
Lo raro es que cuando pruebo ese mismo codigo en un visual basic anda
perfecto no se si para vbscript requerira setear el recordset de una
forma especial, lo que yo estoy haciendo es esto:

Set cn = CreateObject("ADODB.Connection")
cn.ConnectionTimeout = 0
cn.ConnectionString = "string de conexion"
cn.Open

Set rs = CreateObject("ADODB.Recordset")
rs.Open consulta, cn, adOpenStatic

If rs.RecordCount > 0 Then
'aca hago lo que devo hacer.
End If


que es lo que estoy haciendo mal???

gracias!!!
 

Leer las respuestas

#1 Jesús López
04/06/2007 - 09:15 | Informe spam
El problema es que la constante adOpenStatic no está definida y entonces es
como si lo le pasaras el tipo de cursor a Recordset.Open. ADO abre entonces
un recordset del lado del servidor de sólo lectura y hacia delante. Este
tipo de cursores no informan del número de registros devuelto por la
consulta, por eso Recordset.RecordCount devuelve -1, eso no quiere decir que
la consulta no devuelva registros.

Para solucionar el problema usa literales en vez de constantes ADO:


Set cn = CreateObject("ADODB.Connection")
cn.ConnectionTimeout = 0
cn.ConnectionString = "Provider=SQLOLEDB;Initial
Catalog=Northwind;Integrated Security=SSPI"
cn.Open

consulta = "SELECT * FROM Customers"
Set rs = CreateObject("ADODB.Recordset")
rs.CursorLocation = 3
rs.Open consulta, cn, 3

MsgBox rs.CursorType
MsgBox rs.CursorLocation

If rs.RecordCount > 0 Then
'acá hago lo que debo hacer.
End If


Saludos:

Jesús López
www.solidq.com



"DarthSidious" escribió en el
mensaje news:
buenos dias, estoy haciendo un DTS en sql 2000, que incluye una secuencia
de
comandos Activex, con vbscript.
El problema es que siempre que habro el recordset la consulta no devuelve
nada, la propiedad RecordCount es igual a -1.
Lo raro es que cuando pruebo ese mismo codigo en un visual basic anda
perfecto no se si para vbscript requerira setear el recordset de una
forma especial, lo que yo estoy haciendo es esto:

Set cn = CreateObject("ADODB.Connection")
cn.ConnectionTimeout = 0
cn.ConnectionString = "string de conexion"
cn.Open

Set rs = CreateObject("ADODB.Recordset")
rs.Open consulta, cn, adOpenStatic

If rs.RecordCount > 0 Then
'aca hago lo que devo hacer.
End If


que es lo que estoy haciendo mal???

gracias!!!

Preguntas similares