Problema en buscar datos

No puedo realizar la búsqueda me sale error el fill di me pueden ayudar

Function Buscar_registro(ByVal codigo_clave As String) As Boolean
'conexión
Dim conexión As New OleDbConnection
conexión.ConnectionString = "provider = Microsoft.ACE.OLEDB.12.0; Data Source = C:\\unidepBBDD\\unidep.accdb; Persist Security Info = false "
'cadena sql
Dim cadenaqsl As String = "SELECT * from inventario WHERE codigo_clave = " & codigo_clave
'Adaptador
Dim adaptador As New OleDbDataAdapter(cadenaqsl, conexión)
'dataset
Dim Ds As New DataSet
'llenar el dataset
conexión.Open()
adaptador.ToString()
conexión.Close()
'contar registro
If (Ds.Tables(0).Rows.Count = 0) Then
Return False
'No encontró el numero
Else
'si se encontró el registro
'cargar los texbox con la información
TXT_Nombre.Text = Ds.Tables(0).Rows(0)("nombre_libro").ToString()
TXT_Subtitulo.Text = Ds.Tables(0).Rows(0)("Subtitulo").ToString()
TXT_ISBN.Text = Ds.Tables(0).Rows(0)("ISBN").ToString()
TXT_Nombre_Autor.Text = Ds.Tables(0).Rows(0)("Nombre_autor").ToString()
TXT_Cantidad_libros.Text = Ds.Tables(0).Rows(0)("Cantidad_libros").ToString()
TXT_Edicion.Text = Ds.Tables(0).Rows(0)("Edición").ToString()
TXT_Reimprecion.Text = Ds.Tables(0).Rows(0)("Reimpresion").ToString()
Ds.Dispose()
Return True
End If
End Function

1 respuesta

Respuesta
1

Primero: La función debería devolver o un DataTable o un Objeto del Tipo Inventario y no un Valor Boolean.

Segundo: Si solo quieres devolver un DataTable, no necesitas un DataSet, un DataTable es suficiente.

Tercero: Así no se llena el DataTable:

 'llenar el dataset
Conexión. Open()
 adaptador.ToString()
Conexión. Close()

Lo Correcto sería algo así:

Dim Dt As New DataTable
'llenar el dataset (No necesitas Abrir la Conección)
Adaptador. Fill(Dt)

es que soy novato programando en visual

bueno

el programa donde agarre el código hacia una búsqueda numérica y yo la tengo con carracter ya que el campo codigo_clave un ejemplo de la búsqueda seria ppo001

ahí seria mi problema si me puede ayudar

Cuando se hacen "comparaciones" con datos tipo carácter, debes poner el valor entre comillas simples ' así:

Dim cadenaqsl As String = "SELECT * from inventario WHERE codigo_clave = '" & codigo_clave & "'"

pues así es como le he corregido pero no me sale sale error en la instrucción que me acabas de decir

 Function Buscar_registro(ByVal codigo_libro As String) As Boolean
 'conexion
 Dim conexion As New OleDbConnection
 conexion.ConnectionString = "provider = Microsoft.ACE.OLEDB.12.0; Data Source = C:\\unidepBBDD\\unidep.accdb; Persist Security Info = false "
 'cadena sql
 Dim cadenaqsl As String = "SELECT * from inventario WHERE codigo_clave = '" & codigo_clave & "'"
 'Adaptador 
 Dim adaptador As New OleDbDataAdapter(cadenaqsl, conexion)
 'dataset 
 Dim Ds As New DataSet
 'llenar el dataset
 conexion.Open()
 adaptador.Fill(Ds)
 conexion.Close()
 'contar registro
 If (Ds.Tables(0).Rows.Count = 0) Then
 Return False
 'No encontro el numero
 Else
 'si se encontro el registro
 'cargar los texbox con la informacion 
 TXT_Nombre.Text = Ds.Tables(0).Rows(0)("nombre_libro").ToString()
 TXT_Subtitulo.Text = Ds.Tables(0).Rows(0)("Subtitulo").ToString()
 TXT_ISBN.Text = Ds.Tables(0).Rows(0)("ISBN").ToString()
 TXT_Nombre_Autor.Text = Ds.Tables(0).Rows(0)("Nombre_autor").ToString()
 TXT_Cantidad_libros.Text = Ds.Tables(0).Rows(0)("Cantidad_libro").ToString()
 TXT_Edicion.Text = Ds.Tables(0).Rows(0)("Edicion").ToString()
 TXT_Reimprecion.Text = Ds.Tables(0).Rows(0)("Reimpresion").ToString()
 Ds.Dispose()
 Return True
 End If
 End Function

¿Y en cual parte sale el error? Checa paso a paso o pon un punto de interrupción y checa cual es el msg de error. Sin más información del error es Imposible saber como solucionarlo.

ese es el error ke me da en este momento
'llenar el dataset
conexión.Open()
adaptador.Fill(Ds)-------No se han especificado valores para algunos de los parámetros requeridos.
conexión.Close()
'contar registro

Si vas a usar solo una Tabla usa un DataTable y no un DataSet, un DataSet es un "contenedor" de DataTables, al usar el método Fill del DataAdapter debes indicar el DataTable que quieres llenar, adaptador. Fill(Ds. Tables(0))

Pero si el DataSet tiene solo una Tabla pues mejor usa un DataTable.

Gracias

lo puede solucionar borrando todo y comenzando de nuevo solo era que estaba equivocado en el campo de la tabla en access.

gracias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas