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

No logro que me funcione el select en vb.net

Estas en el tema de No logro que me funcione el select en vb.net en el foro de .NET en Foros del Web. Hola, yo tengo un problema con el select, resulta que se supone que el ExecuteNonQuery lo que devuelve es el numero de filas encontradas. Pues ...
  #1 (permalink)  
Antiguo 16/10/2008, 14:08
 
Fecha de Ingreso: octubre-2008
Mensajes: 42
Antigüedad: 15 años, 6 meses
Puntos: 0
No logro que me funcione el select en vb.net

Hola, yo tengo un problema con el select, resulta que se supone que el ExecuteNonQuery lo que devuelve es el numero de filas encontradas. Pues bien, poniendo este código e introduciendo datos que están en la base de datos el ExecuteNonQuery me sigue dando 0. Imagino que lo que no funciona es el select pero para que pruebo todas las formas de ponerlo me sigue saliendo 0. Este es el cñodigo que tengo, aver si alguien me puede ayudar, muchas gracias

Protected Sub Aceptar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Aceptar.Click
Dim a, b, resul As String

Dim cnn As OleDbConnection

If DropDownList1.Text = "Profesor" Then


a = TextBox1.Text
b = TextBox2.Text


cnn = New OleDbConnection("Provider = Microsoft.Jet.OLEDB.4.0; Data Source = C:\Documents and Settings\Bea.BEA-095B12391FA\Mis documentos\Visual Studio 2005\WebSites\GestionAulas\App_Data\gestionaulas.m db")
cnn.Open()
Dim query As String = "SELECT Apellido " & _
"FROM Profesor " & _
"WHERE Nombre = '" & a & "'" _
& "AND DNI = '" & b & "'"

Dim objCmd As New OleDbCommand(query, cnn)
resul = objCmd.ExecuteNonQuery


Response.Write(resul)

cnn.Close()
End If

End Sub
  #2 (permalink)  
Antiguo 16/10/2008, 14:17
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 8 meses
Puntos: 87
Respuesta: No logro que me funcione el select en vb.net

ExecuteNonQuery retornara el numero de filas afectadas por un update, delete, insert no por un select porq no afecta nada.

prueba


ExecuteScalar si deseas regresar el numero de coincidencias (un count o un max o un min)
o
ExecuteReader si deseas regresar las coincidencias (y usa un datareader)
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #3 (permalink)  
Antiguo 16/10/2008, 15:23
 
Fecha de Ingreso: octubre-2008
Mensajes: 42
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: No logro que me funcione el select en vb.net

Muchas gracias Peter, use el ExecuteScalar porque si te digo la verdad el dataReader ese no se usarlo (soy nueva en esto) Si no es mucha molestia y me lo puedes explikar te lo agradecería muchísimo.

Otra preguntita, lo que intento hacer es una pagina de identificación sencilla, es decir, si los datos que introduce existen en BD pasa a la siguiente página que sería su "menú". El problema lo tengo en que poniendolo tal y como lo he puesto yo tengo que pulsar dos veces al botón para que me cambie de página. El código es el mismo que antes pero para que te situes es esto lo que yo he puesto:

resul = objCmd.ExecuteScalar
If resul > 1 Then
Response.Write("Se ha identificado correctamente")
Aceptar.PostBackUrl = "~/Profesor.aspx"
End If

Ya se que me has dicho que el Scalar te saca las coincidencias pero como lo que me saca es el DNI por eso puse >1 hasta que alquien me explique como usar el dataReader/ ExecuteReader y eso que me has dicho antes. La cosa es que pulso al botón una vez y me sale el mensaje "Se ha identificado correctamente" pero luego tengo que pulsar otra vez para que me vaya a la otra página. También he probado a quitar el mensaje pero aun así tengo que seguir pulsando 2 veces.

Gracias por tu ayuda!!
  #4 (permalink)  
Antiguo 16/10/2008, 15:40
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 8 meses
Puntos: 87
Respuesta: No logro que me funcione el select en vb.net

tomemos tu codigo

Código:
Protected Sub Aceptar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Aceptar.Click
Dim a, b As String

Dim cnn As OleDbConnection

If DropDownList1.Text = "Profesor" Then


a = TextBox1.Text
b = TextBox2.Text


cnn = New OleDbConnection("Provider = Microsoft.Jet.OLEDB.4.0; Data Source = C:\Documents and Settings\Bea.BEA-095B12391FA\Mis documentos\Visual Studio 2005\WebSites\GestionAulas\App_Data\gestionaulas.m db")
cnn.Open()
Dim query As String = "SELECT Apellido " & _
"FROM Profesor " & _
"WHERE Nombre = '" & a & "'" _
& "AND DNI = '" & b & "'"

Dim objCmd As New OleDbCommand(query, cnn)
Dim resul as OleDbDataReader = objCmd.ExecuteReader()


Dim apellido as string=string.Empty

While resul.Read()
            apellido=resul.Getstring(0) 'esto retornara el nombre
End WhileResponse.Write(resul)

cnn.Close()
End If

If apellido <> string.Empty   THEN
  'aqui pones tus acciones si encontro una coinciadencia con ese dni y con ese nombre
End IF

End Sub
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #5 (permalink)  
Antiguo 17/10/2008, 05:10
 
Fecha de Ingreso: octubre-2008
Mensajes: 42
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: No logro que me funcione el select en vb.net

Ok, muchas gracias ^^
Un saludo!!
  #6 (permalink)  
Antiguo 18/10/2008, 06:18
 
Fecha de Ingreso: octubre-2008
Mensajes: 42
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: No logro que me funcione el select en vb.net

Perdon, kuando pongo ese código, me indica que la variable resul oculta una variable en un bloque de inclusion. Que tengo que hacer para que no me de ese error?

Y alguien me podría decir como hago para que no tenga que pinchar dos veces al boton para que me vaya a la siguiente página? Se supone que si es un profesor irá al menú del profesor y si es conserje irá a su menú por eso yo puse en cada if lo siguietne:

Aceptar.PostBackUrl = "~/Conserje.aspx"

Aceptar.PostBackUrl = "~/Profesor.aspx"

Y me funciona pero tengo qur pinchar dos veces para que vaya.

¿Alguien sabe como puedo hacer para que solo tenga que pinchar una vez?

Gracias
  #7 (permalink)  
Antiguo 18/10/2008, 06:28
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 8 meses
Puntos: 87
Respuesta: No logro que me funcione el select en vb.net

en vez de cambiar el postback url solo haz un response.redirect a la respectiva pagina dependiendo el codigo.

y si declara resul al principio del sub, es por eso que te marca el error

Código:
Protected Sub Aceptar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Aceptar.Click
Dim a, b As String
Dim resul as OleDbDataReader

Dim cnn As OleDbConnection

If DropDownList1.Text = "Profesor" Then


a = TextBox1.Text
b = TextBox2.Text


cnn = New OleDbConnection("Provider = Microsoft.Jet.OLEDB.4.0; Data Source = C:\Documents and Settings\Bea.BEA-095B12391FA\Mis documentos\Visual Studio 2005\WebSites\GestionAulas\App_Data\gestionaulas.m db")
cnn.Open()
Dim query As String = "SELECT Apellido " & _
"FROM Profesor " & _
"WHERE Nombre = '" & a & "'" _
& "AND DNI = '" & b & "'"

Dim objCmd As New OleDbCommand(query, cnn)
resul = objCmd.ExecuteReader()


Dim apellido as string=string.Empty

While resul.Read()
            apellido=resul.Getstring(0) 'esto retornara el nombre
End WhileResponse.Write(resul)

cnn.Close()
End If

If apellido <> string.Empty   THEN
  'aqui pones tus acciones si encontro una coinciadencia con ese dni y con ese nombre
End IF

End Sub
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #8 (permalink)  
Antiguo 18/10/2008, 09:45
 
Fecha de Ingreso: octubre-2008
Mensajes: 42
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: No logro que me funcione el select en vb.net

Jo perdon de verdad, eh? siento ser pesada pero esk mestoy volviendo loka, me sigue sin funcionar. Me pone esto:

Detalles de la excepción: System.Data.OleDb.OleDbException: No coinciden los tipos de datos en la expresión de criterios.

El código que me queda es este pero esk no me funciona :(. Tengo puesto el Imports SYSTEM.DATA.OLEDB , no se si me faltará algo de eso o q. ya ni se. Perdón :((



Protected Sub Aceptar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Aceptar.Click
Dim a, b As String
Dim resul As OleDbDataReader

Dim cnn As OleDbConnection

If DropDownList1.Text = "Profesor" Then

a = TextBox1.Text
b = TextBox2.Text


cnn = New OleDbConnection("Provider = Microsoft.Jet.OLEDB.4.0; Data Source = C:\Documents and Settings\Bea.BEA-095B12391FA\Mis documentos\Visual Studio 2005\WebSites\GestionAulas\App_Data\gestionaulas.m db")

cnn.Open()
Dim query As String = "SELECT Nombre " & _
"FROM Profesor " & _
"WHERE DNI = '" & a & "'" _
& "AND Contraseña = '" & b & "'"

Dim objCmd As New OleDbCommand(query, cnn)
resul = objCmd.ExecuteReader()


Dim nombre As String = String.Empty

While resul.Read()
nombre = resul.GetString(0) 'esto retornara el nombre
End While
Response.Write(resul)

cnn.Close()

If nombre <> String.Empty Then
Response.Redirect("~/Profesor.aspx")
End If



End If


End Sub
  #9 (permalink)  
Antiguo 18/10/2008, 09:47
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 8 meses
Puntos: 87
Respuesta: No logro que me funcione el select en vb.net

No coinciden los tipos de datos en la expresión de criterios.
es porque o estas enviando datos q no coinciden con los de la bd , DNI es numerico o string veo q envias un string, contraseña supongo es un varchar o algo asi asi q ahi no abria problema segurament es eso.
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #10 (permalink)  
Antiguo 18/10/2008, 10:09
 
Fecha de Ingreso: octubre-2008
Mensajes: 42
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: No logro que me funcione el select en vb.net

Si, en la base de datos que uso (access) DNI lo he puesto de tipo numerico y contraseña de tipo texto. Pero ¿cómo que envío el dni komo string? por que lo dices por a = TextBox1.Text ??
Y como lo pongo entonces para que sea numérico?

Pero enviar datos no envio no? solo compruebo
  #11 (permalink)  
Antiguo 18/10/2008, 10:38
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 8 meses
Puntos: 87
Respuesta: No logro que me funcione el select en vb.net

Dim query As String = "SELECT Nombre FROM Profesor WHERE DNI = @dni AND Contraseña =@password"

y usa OdbcParameters

http://msdn.microsoft.com/es-es/libr...er(VS.80).aspx
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #12 (permalink)  
Antiguo 19/10/2008, 12:32
 
Fecha de Ingreso: octubre-2008
Mensajes: 42
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: No logro que me funcione el select en vb.net

Bueno ahora si que me salió tuve que kambiar algunos parámetros porque para identificarse puse dni y contraseña mejor que otra kosa asi que pongo el kodigo final que me kedo por si alguien lo necesita. (no ha kambiado mucho de lo que me habeis dixo aki, asi q muxisimas gracias x la ayuda)

Protected Sub Aceptar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Aceptar.Click
Dim a, b As String
Dim resul As OleDbDataReader


Dim cnn As OleDbConnection

If DropDownList1.Text = "Profesor" Then

a = TextBox1.Text
b = TextBox2.Text


cnn = New OleDbConnection("Provider = Microsoft.Jet.OLEDB.4.0; Data Source = C:\Documents and Settings\Bea.BEA-095B12391FA\Mis documentos\Visual Studio 2005\WebSites\GestionAulas\App_Data\gestionaulas.m db")
cnn.Open()
Dim query As String = "SELECT Apellido " & _
"FROM Profesor " & _
"WHERE DNI = '" & a & "'" _
& "AND Contraseña = '" & b & "'"

Dim objCmd As New OleDbCommand(query, cnn)
resul = objCmd.ExecuteReader()


Dim apellido As String = String.Empty

While resul.Read()
apellido = resul.GetString(0)
End While


cnn.Close()


If apellido <> String.Empty Then
Response.Redirect("~/Profesor.aspx")
Else : Response.Write("El usuario no existe")

End If


end if
End sub
  #13 (permalink)  
Antiguo 20/10/2008, 05:11
 
Fecha de Ingreso: octubre-2008
Mensajes: 42
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: No logro que me funcione el select en vb.net

Ahora tengo otro problemita :( Tengo que reservar un aula, entonces el usuario mete los datos q son el aula, el dni, fecha, horaInicio, horafin y el motivo y se supone que yo lo q intento es primero hacer un select y ver si en la tabla de reservas de la bd está ese aula en esa fecha y tal, y si no está en esa tabla es q el aula está libre, entonces hace la reserva insertando esos datos en la tabla reserva. Solo que he puesto este kódigo y no me da ningun error pero no me hace nada. ¿Alguien sabe kual puede ser el error y komo lo puedo arreglar? Gracias por adelantado


Protected Sub Reservar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Reservar.Click
Dim dni, mot, h, q As String
Dim fecha As Date
Dim HI, HF, aula As Integer
Dim cnn As OleDbConnection
Dim resul2 As OleDbDataReader
aula = DropDownList1.Text
dni = DropDownList1.Text
fecha = TextBox2.Text
HI = DropDownList2.Text
HF = DropDownList3.Text
mot = TextBox3.Text

cnn = New OleDbConnection("Provider = Microsoft.Jet.OLEDB.4.0; Data Source = C:\Documents and Settings\Bea.BEA-095B12391FA\Mis documentos\Visual Studio 2005\WebSites\GestionAulas\App_Data\gestionaulas.m db")
cnn.Open()
Dim query As String = "SELECT DNIUsu " & _
"FROM Reserva " & _
"WHERE NumClase = '" & aula & "', DNIUsu = '" & dni & "', Fecha = @fecha ,HoraInicio = '" & HI & "',HoraFin='" & HF & "' AND Motivo='" & mot & "' "

Dim objCmd As New OleDbCommand(query, cnn)
resul2 = objCmd.ExecuteReader()


Dim DNIUsu As String = String.Empty

While resul2.Read()
DNIUsu = resul2.GetString(0)
End While


If DNIUsu = String.Empty Then
q = "insert into Reserva(NumClase,DNIusu,Fecha,HoraInicio,HoraFin,V al,Motivo) values ('" & aula & "', '" & dni & "', '" & fecha & "', '" & HI & "', '" & HF & "', true, '" & mot & "' )"
Dim x As New OleDbCommand(q, cnn)
h = objCmd.ExecuteNonQuery
If h Then
Response.Write("Reserva hecha con éxito")
End If
Else : Response.Write("El aula ya está reservada")

End If




cnn.Close()

End Sub
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 04:41.