Visual Basic.NET - No entiendo el error

 
Vista:

No entiendo el error

Publicado por Fernando (1 intervención) el 04/01/2006 15:02:42
Hola,tengo este codigo

Dim oMaxSocios As New SqlConnection
oMaxSocios.ConnectionString = "Server=(local);Database=Socios;Trusted_Connection=True;"
Dim oCommandSocios As New SqlCommand("Select MAX(NUMREGISTRO) as NUMREGISTRO from SOCIOS", oMaxSocios)
Dim oDataMaxSocios As SqlDataReader
oMaxSocios.Open()
oDataMaxSocios = oCommandSocios.ExecuteReader
If oDataMaxSocios.HasRows() Then
MsgBox("SI")
Else
MsgBox("NO")
End If

Lo que hago es que coga el maximo registro de un tabla y luego sumar uno, pero lo que pasa es que la bd actualmente no tiene ningun registro, y cuando pregunto HasRows me salta dentro, y me sale el Msgbox SI, es decir que sin tener ningun registro cuando pregunto si hay registros lo toma porque si hay

Espero haberme explicado bien, muchas gracias por vuestra colaboracion
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:No entiendo el error

Publicado por thessen (298 intervenciones) el 04/01/2006 16:17:14
Cuando seleccionas MAX en una consulta SQL, aunque no haya registros siempre devolvera un resultado (nulo o 0, depende del gestor de bases de datos que utilices), por ese motivo siempre te indica que tiene registros. Como solucion te propongo que, a la vez que seleccionas el valor máximo, selecciones el número de registros de esa tabla (con Count (*)). De esta manera solo tendrias que preguntar por el valor del segundo campo, si es mayor de 0 es que la tabla tiene registros y si es igual a 0 no tiene.
Tu código quedaría mas o menos asi:

Dim oMaxSocios As New SqlConnection

oMaxSocios.ConnectionString = "Server=(local);Database=Socios;Trusted_Connection=True;"

Dim oCommandSocios As New SqlCommand("Select MAX(NUMREGISTRO) as NUMREGISTRO, Count(*) As NUMEROREGISTROS from SOCIOS", oMaxSocios)

Dim oDataMaxSocios As SqlDataReader

oMaxSocios.Open()

oDataMaxSocios = oCommandSocios.ExecuteReader

If oDataMaxSocios.Item("NUMEROREGISTROS") > 0 Then
MsgBox("SI")
Else
MsgBox("NO")
End If

Espero te sirva de ayuda. Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar