Principales respuestas
No se han especificado valores para algunos de los parámetros requeridos

Pregunta
-
Hola mi nombre es Oscar y recién estoy iniciando con Visual Basic 2010. He realizado un ejercicio muy simple donde se recoge un valor desde un ComboBox para pasárselo de parámetro a un procedimiento que obtiene de una base de datos access una consulta. Al ejecutar sale la excepción (0x80040E10) No se han especificado valores para algunos de los parámetros requeridos. Siempre en la linea dr = cmd.ExecuteReader(). Envío el código para ver si alguien puede ayudarme. Gracias
Public Class Form1
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
conexion()
llenar_combo()
End Sub
Public Sub llenar_combo()
Me.ComboBox1.Items.Clear()
Dim sql As String
sql = "SELECT nombre FROM personas"
cmd.CommandType = CommandType.Text
cmd.Connection = conn
cmd.CommandText = sql
dr = cmd.ExecuteReader
If dr.HasRows = True Then
While dr.Read()
Me.ComboBox1.Items.Add(dr.GetValue(0))
End While
End If
dr.Close()
End Sub
Private Sub ComboBox1_SelectedValueChanged1(sender As Object, e As System.EventArgs) Handles ComboBox1.SelectedValueChanged
Me.TextBox1.Text = Me.ComboBox1.SelectedItem.ToString
End Sub
Public Sub consultar(ByRef identifica As String)
cmd.Connection = conn
cmd.CommandType = CommandType.Text
If identifica <> "" Then
cmd.CommandText = "SELECT CIP, APELLIDO, DOCUMENTO, NUMERO_DOCUMENTO, NACIONALIDAD FROM PERSONAS WHERE NOMBRE=" & identifica
Else
cmd.CommandText = "SELECT CIP, APELLIDO, DOCUMENTO, NUMERO_DOCUMENTO, NACIONALIDAD FROM PERSONAS"
End If
Try
dr = cmd.ExecuteReader()
If dr.HasRows Then
While dr.Read()
MsgBox(dr(0).ToString + " " + dr(1).ToString + " " + dr(2).ToString + " " + dr(3).ToString + " " + dr(4).ToString)
End While
Else
MsgBox("No existen registros para la consulta")
End If
dr.Close()
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
Dim id As String
id = ComboBox1.Text
consultar(id)
End Sub
End Class
Respuestas
-
Es que aunque el parámetro dentro de la función es string, al enviarse el parámetro a la sentencia SQL no es un string, ya que estas formando la cadena de forma manual.
Si deseas hacer un parámetro para SQL debes usar:
cmd.CommandText = "SELECT CIP, APELLIDO, DOCUMENTO, NUMERO_DOCUMENTO, NACIONALIDAD FROM PERSONAS WHERE NOMBRE=@Nombre" cmd.Parameters.Clear() cmd.Parameters.AddWithValue("@Nombre", Identifica)
En este caso, no necesita las comillas simples.
Saludos.
- Propuesto como respuesta Joyce_ACModerator lunes, 10 de abril de 2017 14:57
- Marcado como respuesta Joyce_ACModerator viernes, 14 de abril de 2017 14:48
Todas las respuestas
-
Intenta con:
cmd.CommandText = "SELECT CIP, APELLIDO, DOCUMENTO, NUMERO_DOCUMENTO, NACIONALIDAD FROM PERSONAS WHERE NOMBRE='" & identifica & "'"
A ver si funciona, solo agregue ' ' para el campo.
Saludos
- Editado Horroroso Horroroso viernes, 7 de abril de 2017 19:54
-
-
Es que aunque el parámetro dentro de la función es string, al enviarse el parámetro a la sentencia SQL no es un string, ya que estas formando la cadena de forma manual.
Si deseas hacer un parámetro para SQL debes usar:
cmd.CommandText = "SELECT CIP, APELLIDO, DOCUMENTO, NUMERO_DOCUMENTO, NACIONALIDAD FROM PERSONAS WHERE NOMBRE=@Nombre" cmd.Parameters.Clear() cmd.Parameters.AddWithValue("@Nombre", Identifica)
En este caso, no necesita las comillas simples.
Saludos.
- Propuesto como respuesta Joyce_ACModerator lunes, 10 de abril de 2017 14:57
- Marcado como respuesta Joyce_ACModerator viernes, 14 de abril de 2017 14:48