Foros del Web » Programación para mayores de 30 ;) » Programación General »

ADO y VB 6.0

Estas en el tema de ADO y VB 6.0 en el foro de Programación General en Foros del Web. Hola a todos. Tengo un programa en visual que se conecta a una base de datos SQL Server mediante ado. Mi duda es la siguiente: ...
  #1 (permalink)  
Antiguo 21/05/2004, 05:56
 
Fecha de Ingreso: mayo-2004
Ubicación: Valladolid (Spain)
Mensajes: 81
Antigüedad: 20 años
Puntos: 0
Pregunta ADO y VB 6.0

Hola a todos.
Tengo un programa en visual que se conecta a una base de datos SQL Server mediante ado.

Mi duda es la siguiente:
necesito conocer el número de registros que hay en una tabla en concreto pero no sé cómo hacerlo. Hay alguna propiedad del recordset o del command que pueda servir para esto??

En concreto, tengo una tabla de ciclistas y otra de equipos y no puedo meter más de nueve ciclistas por equipo (tampoco más de cinco equipos). Mi idea es contar el número de registros actuales antes de dar un nuevo alta, para que si el número está completo no permitir la nueva inserción, pero no sé como hacerlo.

Gracias
  #2 (permalink)  
Antiguo 21/05/2004, 09:49
Avatar de Mplus  
Fecha de Ingreso: agosto-2003
Ubicación: colgando de un trebol
Mensajes: 157
Antigüedad: 20 años, 8 meses
Puntos: 0
tienes dos opciones:

1)


tSql = "select count(*) as cant ciclistas"
Set rsv = CreateObject("ADODB.Recordset")
rsv.Open tSql, connSql
If Not rsv.EOF Then
msgbox rsv("cant")
End If

rsv.Close
Set rsv = Nothing

2)
tSql = "ciclistas"
Set rsv = CreateObject("ADODB.Recordset")
rsv.Open tSql, connSql, 1, 2, 2
If Not rsv.EOF Then
msgbox rsv.recordcount
End If

rsv.Close
Set rsv = Nothing
__________________
Daría todo lo que sé por la mitad de lo que ignoro
  #3 (permalink)  
Antiguo 21/05/2004, 10:08
 
Fecha de Ingreso: mayo-2004
Ubicación: Valladolid (Spain)
Mensajes: 81
Antigüedad: 20 años
Puntos: 0
La primera opción no la entiendo muy bien (soy casi nueva en esto), pero la segunda no me funciona. Tengo varios registros en la tabla, pero el msgbox siempre me muestra lo mismo, -1.

Estoy poniendo exactamente lo que me dices, pero no me sale. Hago algo mal??
  #4 (permalink)  
Antiguo 21/05/2004, 10:27
Avatar de Mplus  
Fecha de Ingreso: agosto-2003
Ubicación: colgando de un trebol
Mensajes: 157
Antigüedad: 20 años, 8 meses
Puntos: 0
En la primera opcion le pasas una select al recorset q cuenta el numero de registros, puedes añadirle una clausula where para filtrar mas el resultado.

Prueba asi:

tSql = "ciclistas"
Set rsv = CreateObject("ADODB.Recordset")
rsv.Open tSql, connSql
If Not rsv.EOF Then
msgbox rsv.recordcount
End If

rsv.Close
Set rsv = Nothing
__________________
Daría todo lo que sé por la mitad de lo que ignoro
  #5 (permalink)  
Antiguo 21/05/2004, 10:43
 
Fecha de Ingreso: mayo-2004
Ubicación: Valladolid (Spain)
Mensajes: 81
Antigüedad: 20 años
Puntos: 0
perdona, pero no me acaba de funcionar.

Gracias por explicármelo, ya lo entiendo, pero recordcount sigue devolviendo -1 (aunque haya registros en la tabla). No consigo que devuelva otra cosa, da igual como lo haga, siempre me devuelve -1. Puede ser que esta propiedad haya que activarla de alguna manera o algo así?? Es que no logro entender por qué no lo hace bien
  #6 (permalink)  
Antiguo 21/05/2004, 10:54
Avatar de Mplus  
Fecha de Ingreso: agosto-2003
Ubicación: colgando de un trebol
Mensajes: 157
Antigüedad: 20 años, 8 meses
Puntos: 0
es por el tipo de apertura del recordset, dependiendo de las opciones de apertura, la propiedad recordcount no esta disponible y si tus tablas estan vinculadas puede q tpco.

prueba con la primera opcion q te di es mas estable.

Hasta el lunes!
__________________
Daría todo lo que sé por la mitad de lo que ignoro
  #7 (permalink)  
Antiguo 21/05/2004, 11:12
 
Fecha de Ingreso: mayo-2004
Ubicación: Valladolid (Spain)
Mensajes: 81
Antigüedad: 20 años
Puntos: 0
al final lo he conseguido. Ya funciona el recordcount (después de casi dos horas intentándolo)

Muchas gracias por ayudarme tanto.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:36.