Dejo parte del código del programa, solo lo más importante (si a alguien le interesa todo el código, postear que lo pongo entonces) :
Código:
Option Explicit
Dim Conn As ADODB.Connection
Dim RsRecordSet As ADODB.Recordset
Dim Opcion As String
Private Sub cmdBuscar_Click()
Dim tItem As ListItem
Dim lvwFind As ListFindItemHowConstants
Dim lvwWhere As ListFindItemWhereConstants
Dim i As Long
Dim s As String
lvwFind = lvwPartial
Set tItem = List.FindItem(Text1, lvwWhere, 1, lvwFind)
If Not tItem Is Nothing Then
ListView1.SelectedItem.Selected = False
For i = 1 To List.ListItems.Count
If List.ListItems(i).Selected Then
List.ListItems(i).Selected = True
End If
Next
tItem.Selected = True
Text1 = tItem.Text
s = ""
For i = 2 To List.ColumnHeaders.Count
s = s & tItem.SubItems(i - 1) & vbCrLf
Next
Text4 = s
tItem.EnsureVisible
Else
Text4 = "No se ha hallado el elemento buscado"
End If
Call Pintar
End Sub
Private Sub Form_Load()
Set Conn = New ADODB.Connection
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\bd.mdb;Persist Security Info=False"
Set RsRecordSet = New ADODB.Recordset
RsRecordSet.Open "Telefonos", Conn, adOpenDynamic, adLockOptimistic
Call LlenarList
End Sub
Sub LlenarList()
Dim Nodo As ListItem
List.ListItems.Clear
RsRecordSet.Requery
RsRecordSet.MoveFirst
While Not RsRecordSet.EOF
Set Nodo = List.ListItems.Add(, , RsRecordSet("Id"))
Nodo.SubItems(1) = RsRecordSet("Nombre")
Nodo.SubItems(2) = RsRecordSet("Telefono")
Nodo.SubItems(3) = RsRecordSet("Direccion")
RsRecordSet.MoveNext
Wend
List.Refresh
End Sub
Sub Pintar()
Dim Nodo2 As ListItem
Set Nodo2 = List.SelectedItem
RsRecordSet.MoveFirst
RsRecordSet.Find "Id=" & Nodo2
If Not RsRecordSet.EOF Then
TxtId.Text = RsRecordSet("Id")
TxtNombre.Text = RsRecordSet("Nombre")
TxtTelefono.Text = RsRecordSet("Telefono")
TxtDireccion.Text = RsRecordSet("Direccion")
End If
End Sub
Private Sub List_Click()
Call Pintar
End Sub
Private Sub Limpiar()
TxtId = ""
TxtNombre = ""
TxtTelefono = ""
TxtDireccion = ""
End Sub
Private Sub Salir2_Click()
Call Salir_Click
End Sub
Y El Form es este:
Ahora lo que estaba haciendo era tratar de modificar esa base de datos para que en vez de abrir una agenda telefónica, y ahora como ejercicio me propuse que pueda abrir una base de datos de un programa (Cibercontrol), lo poco que cambiaría es que en vez de abrir la tabla "Teléfonos" abra la tabla "Cuentas" (sería la que yo necesito de esa base de datos), entonces reemplace en el Form_Load:
Código:
RsRecordSet.Open "Telefonos", Conn, adOpenDynamic, adLockOptimistic
Código:
RsRecordSet.Open "Cuentas", Conn, adOpenDynamic, adLockOptimistic
Después hice algunos cambios para que en vez de que me muestre en la base de datos los campos: Id, Nombre, Teléfono, Dirección; solo me muestre los campos: "Login", "Pass", "Bonotiempo".
Entonces reemplace esto:
Código:
Sub LlenarList()
Dim Nodo As ListItem
List.ListItems.Clear
RsRecordSet.Requery
RsRecordSet.MoveFirst
While Not RsRecordSet.EOF
Set Nodo = List.ListItems.Add(, , RsRecordSet("Id"))
Nodo.SubItems(1) = RsRecordSet("Nombre")
Nodo.SubItems(2) = RsRecordSet("Telefono")
Nodo.SubItems(3) = RsRecordSet("Direccion")
RsRecordSet.MoveNext
Wend
List.Refresh
End Sub
Por esto:
Código:
Sub LlenarList()
On Error Resume Next
Dim Nodo As ListItem
List.ListItems.Clear
RsRecordSet.Requery
RsRecordSet.MoveFirst
While Not RsRecordSet.EOF
Set Nodo = List.ListItems.Add(, , RsRecordSet("Login"))
Nodo.SubItems(1) = RsRecordSet("Pass")
Nodo.SubItems(2) = RsRecordSet("Bonotiempo")
RsRecordSet.MoveNext
Wend
List.Refresh
End Sub
La función On Error Resume Next, la puse porque en algunas bases de datos algunos de esos campos están vacios y me dan error.
Al hacer esos cambios cuando ejecuto el programa, se carga todo correctamente, con los login los pass y el bonotiempo, pero cuando hago click en un casillero del listview me devuelve este error:
Error 3001 en tiempo de ejecución:
Argumentos incorrectos fuera del intervalo permitido o en conflicto con otros.
Y me señala esta parte del código:
Código:
RsRecordSet.Find "Login=" & Nodo2
No encuentro el error y ya llevo un tiempo tratando de solucionarlo pero nada.
Quisiera saber si me pueden echar una mano de como solucionarlo. Gracias de antemano