Ver Mensaje Individual
  #2 (permalink)  
Antiguo 19/03/2004, 17:43
Avatar de kalijunfan
kalijunfan
 
Fecha de Ingreso: febrero-2004
Ubicación: Montevideo, Uruguay
Mensajes: 96
Antigüedad: 20 años, 2 meses
Puntos: 0
Estimado rycjesus, tu problema está en cómo estás abriendo el recordset, al hacerlo con un Execute lo estás haciendo con un cursor de solo lectura y un bloqueo adForwardOnly, el usar ese tipo de bloqueo no te permite utilizar la propiedad RecordCount ya que esta propiedad exige otro tipo de bloqueo. Para poder utilizar el RecordCount necesitás abrir el recordset explícitamente utilizando un objeto ADODB.Recordset, por ej:

<%
dim cant, Cn_miconexion,obRS, strSql
Set Cn_miconexion = Server.CreateObject("ADODB.Connection")
Cn_miconexion.Open("miconexion a SQLserver")
Set obRS = Server.CreateObject("ADODB.Recordset")
strSql = "Select * from mi_tabla"
obRS.Open strSql, Cn_miconexion, 2, 2
cant = obRS.RecordCount

if cant < 0 then
response.writhe("no hay datos")
en dif

%>

Eso debería solucionar tu problema. Ahora si querés seguir abriendo el recordset con un execute, lo cual no te lo recomiendo, tendrías que utilizar el método GetRows del recordset para recuperar todos los registros y utilizar un UBound() para obtener la cantidad de registros devueltos, por ej:

<%
dim cant, Cn_miconexion,obrs, arrReg
Set Cn_miconexion = Server.CreateObject("ADODB.Connection")
Cn_miconexion.Open("miconexion a SQLserver")
Set obRS = Cn_miconexion.execute("Select * from mi_tabla")
arrReg = obrs.GetRows
cant = UBound(arrReg, 2) + 1

if cant < 0 then
response.writhe("no hay datos")
en dif

%>

Cualquiera de esas dos opciones debería solucionar tu problema.
Probalo y después me contás.