Error en consulta con ADO
Alguien me podría ayudar en esto: tengo un procedimiento de buscar en una base de datos pero al ejecutar la consulta me sale que la variable de tipo Object o la variable de tipo With no está establecidad. Estoy usando el ADO data control. Este es el código que estoy usando
Private Sub cmdBuscar_Click()
\'Representa por qué campo se buscará
Dim porcual As String
\'Representa el dato buscado
Dim buscado
\'texto de la consulta SQL
Dim buscar As String
Dim tli As ListItem
porcual = cbocampo.Text
\'Reemplazar los caracteres "no válidos" para ADO:
buscado = txtbuscar
\' buscado = Replace(buscado, "*", "%")
\' buscado = Replace(buscado, "?", "_")
buscado = "%" & buscado & "%"
buscar = "SELECT * FROM Datos WHERE " & porcual & " LIKE \'" & buscado & "\' ORDER BY IdFuncionario"
\'adobuscar.Recordset.MoveFirst
adobuscar.Recordset.Find buscado
With adobuscar.Recordset
If (.BOF And .EOF) Then
MsgBox "No se han encontrado los datos buscados"
Else
\' Mostrar los datos hallados
lstbusco.ListItems.Clear
.MoveFirst
Do While Not .EOF
Set tli = ListView1.ListItems.Add(, , .Fields("ID_Funcionario") & "")
tli.SubItems(1) = .Fields("Nombre") & ""
tli.SubItems(2) = .Fields("Apellido") & ""
.MoveNext
Loop
End If
End With
Le agradecería mucho a quien pudiera ilustrarme un poco acerca de qué parte la estoy haciendo mal y cómo debería hacerlo. Gracias!
Private Sub cmdBuscar_Click()
\'Representa por qué campo se buscará
Dim porcual As String
\'Representa el dato buscado
Dim buscado
\'texto de la consulta SQL
Dim buscar As String
Dim tli As ListItem
porcual = cbocampo.Text
\'Reemplazar los caracteres "no válidos" para ADO:
buscado = txtbuscar
\' buscado = Replace(buscado, "*", "%")
\' buscado = Replace(buscado, "?", "_")
buscado = "%" & buscado & "%"
buscar = "SELECT * FROM Datos WHERE " & porcual & " LIKE \'" & buscado & "\' ORDER BY IdFuncionario"
\'adobuscar.Recordset.MoveFirst
adobuscar.Recordset.Find buscado
With adobuscar.Recordset
If (.BOF And .EOF) Then
MsgBox "No se han encontrado los datos buscados"
Else
\' Mostrar los datos hallados
lstbusco.ListItems.Clear
.MoveFirst
Do While Not .EOF
Set tli = ListView1.ListItems.Add(, , .Fields("ID_Funcionario") & "")
tli.SubItems(1) = .Fields("Nombre") & ""
tli.SubItems(2) = .Fields("Apellido") & ""
.MoveNext
Loop
End If
End With
Le agradecería mucho a quien pudiera ilustrarme un poco acerca de qué parte la estoy haciendo mal y cómo debería hacerlo. Gracias!
hay un error en ese codigo, primero no deben tener en cuenta las barras invertidas que aparecen antes de cada comilla, como por ejemplo:
\' Mostrar los datos hallados
o esta otra linea
tli.SubItems(2) = .Fields("Apellido") & ""
Y ademas de que en vez de esta linea
adobuscar.Recordset.Find buscado
en vez "buscado" debe ser la variable buscar o sea
adobuscar.Recordset.Find buscar
Pero aun así sigue dándome el mismo error!
\' Mostrar los datos hallados
o esta otra linea
tli.SubItems(2) = .Fields("Apellido") & ""
Y ademas de que en vez de esta linea
adobuscar.Recordset.Find buscado
en vez "buscado" debe ser la variable buscar o sea
adobuscar.Recordset.Find buscar
Pero aun así sigue dándome el mismo error!
yo no entiendo mucho del tema pero te mando el codigo que uso para buscar talvez te sirva
Private Sub CmdBuscar_Click()
Dim Buscar As String
Dim rs As Recordset
Dim lista As ListItem
Buscar = Text1.Text
Buscar = Replace(Buscar, "*", "%")
Buscar = Replace(Buscar, "?", "_")
Text1.Text = Buscar
Buscar = "SELECT * FROM alumnos WHERE nombre LIKE \'" & Buscar & "\' ORDER BY nombre"
Set rs = base.Execute(Buscar)
With rs
If (.BOF And .EOF) Then
MsgBox "No se han encontrado los datos buscados"
Else
\' Mostrar los datos hallados
ListView1.ListItems.Clear
.MoveFirst
Do While Not .EOF
Set lista = ListView1.ListItems.Add(, , .Fields("Nº") & "")
lista.SubItems(1) = .Fields("nombre") & ""
lista.SubItems(2) = .Fields("apellido") & ""
lista.SubItems(3) = .Fields("direccion") & ""
lista.SubItems(4) = .Fields("telefono") & ""
lista.SubItems(5) = .Fields("email") & ""
lista.SubItems(6) = .Fields("fecha_inicio") & ""
lista.SubItems(3) = .Fields("cuota") & ""
.MoveNext
Loop
End If
End With
End Sub
pero me parece que si te marca ese error es porque te has olvidado de creear los objetos ....
Private Sub Form_Load()
Set base = New ADODB.Connection
end sub
private rs As Recordset
o puede que no ayas agregado las referencias
saludos
Private Sub CmdBuscar_Click()
Dim Buscar As String
Dim rs As Recordset
Dim lista As ListItem
Buscar = Text1.Text
Buscar = Replace(Buscar, "*", "%")
Buscar = Replace(Buscar, "?", "_")
Text1.Text = Buscar
Buscar = "SELECT * FROM alumnos WHERE nombre LIKE \'" & Buscar & "\' ORDER BY nombre"
Set rs = base.Execute(Buscar)
With rs
If (.BOF And .EOF) Then
MsgBox "No se han encontrado los datos buscados"
Else
\' Mostrar los datos hallados
ListView1.ListItems.Clear
.MoveFirst
Do While Not .EOF
Set lista = ListView1.ListItems.Add(, , .Fields("Nº") & "")
lista.SubItems(1) = .Fields("nombre") & ""
lista.SubItems(2) = .Fields("apellido") & ""
lista.SubItems(3) = .Fields("direccion") & ""
lista.SubItems(4) = .Fields("telefono") & ""
lista.SubItems(5) = .Fields("email") & ""
lista.SubItems(6) = .Fields("fecha_inicio") & ""
lista.SubItems(3) = .Fields("cuota") & ""
.MoveNext
Loop
End If
End With
End Sub
pero me parece que si te marca ese error es porque te has olvidado de creear los objetos ....
Private Sub Form_Load()
Set base = New ADODB.Connection
end sub
private rs As Recordset
o puede que no ayas agregado las referencias
saludos
Si, si lo hago sin incluir el control en el formulario y sólo agregando las referencias me busca perfectamente. Lo que no entiendo es porque provoca el error cuando lo hago con el control. Es que estoy empezando a programar con base de datos y me cuesta un poco (mas bien un mucho!) jeje
De todos modos muchas gracias andru
De todos modos muchas gracias andru