Ver Mensaje Individual
  #7 (permalink)  
Antiguo 10/05/2008, 23:54
Avellaneda
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 17 años, 2 meses
Puntos: 37
Re: Coneccion ADODB

Cita:
Iniciado por korg1988 Ver Mensaje
bueno, parece ser que la alegria nos duro poco jaja


pero me tira un erro diciendo que el objecto ya esta abierto

y la segunda duda es que
como hago para saber cuantas filas resultado me devolvio la consulta SELECT porque el RecordCount me dice siempre -1, y en el primer caso de select que puse arriba los resultados son 3 y los imprime, pero recordcount sigue valiento -1 en lugar de 3

muchas gracias
Bueno, eso nos ha ocurrido a todos en algún momento.

Primero, antes de abrir el recordset es conveniente cercionarse de que esté cerrado. Lo puedes hacer de dos formas:

If Rs.State = 1 Then Rs.Close ' la propiedad State indica si está abierto (1) o cerrado (0)

o asignando un nuevo recordset:

Set Rs = New ADODB.Recordset ' aquí automáticamente cerrará el anterior

2º Para que la propiedad RecordCount dé el número de registros del recordset, le tienes que asignar (antes de abrirlo) la propiedad CursorLocation del lado cliente.

El orden debería ser así


Código:
If Rs.State = 1 Then Rs.Close
Rs.CursorLocation = adUseClient
Rs.Open sql, con, adOpenDynamic, adLockOptimistic

Por otra parte, en la consulta si el campo "legajo" es numérico, le tienes que quitar las comillas simples sino, te va a dar error de tipos. Y es conveniente utilizar como carácter de concatenación el ampersand (&) y no el signo mas (+) que podría dar valores erróneos. El punto y coma (;) al final de la sentencia no es necesario.
Si el campo es numérico, la consulta debería quedar así:

SQL = "SELECT nombre FROM legajos WHERE legajo = " & num_legajo.Text


Un saludo.