elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Error Accesando a Base de Datos mediante Listview
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Error Accesando a Base de Datos mediante Listview  (Leído 2,596 veces)
kicking people

Desconectado Desconectado

Mensajes: 211


Ver Perfil
Error Accesando a Base de Datos mediante Listview
« en: 17 Junio 2006, 20:09 pm »

Hola, tengo una inquietud al tratar de modificar un archivo para acceder a una base de datos. Yo había creado una agenda con el manual de la revista de HxC (Revista Número 10) en el cual tenía los teléfonos  que necesitaba, y a este programa le había agregado la opción de buscar en la base de datos una entrada.

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
lo reemplace por esto:
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


« Última modificación: 17 Junio 2006, 20:12 pm por kicking people » En línea

Gangrel

Desconectado Desconectado

Mensajes: 237


Ver Perfil WWW
Re: Error Accesando a Base de Datos mediante Listview
« Respuesta #1 en: 17 Junio 2006, 22:46 pm »

No pues esta dificil, y el proyecto es grande, ya estuve un rato buscando asimple vista si encontraba el error y no doy con el y la verdad no creo que alguien lo adivine, si no puedes dar con el y quieres que te allude; zipea todo el proyectol, subelo a un server y pones el link y entonces si que es mas facil alludarte.


En línea

La educacion no es un privilegio, es un derecho.

http://www.usuarios.lycos.es/protg
kicking people

Desconectado Desconectado

Mensajes: 211


Ver Perfil
Re: Error Accesando a Base de Datos mediante Listview
« Respuesta #2 en: 18 Junio 2006, 01:05 am »

No pues esta dificil, y el proyecto es grande, ya estuve un rato buscando asimple vista si encontraba el error y no doy con el y la verdad no creo que alguien lo adivine, si no puedes dar con el y quieres que te allude; zipea todo el proyectol, subelo a un server y pones el link y entonces si que es mas facil alludarte.

Muchas gracias. Estoy preparando todo en unos segunditos lo subo
En línea

kicking people

Desconectado Desconectado

Mensajes: 211


Ver Perfil
Re: Error Accesando a Base de Datos mediante Listview
« Respuesta #3 en: 18 Junio 2006, 01:23 am »

El link es este... http://www.megaupload.com/?d=J71DU1QG
En línea

karmany
Colaborador
***
Desconectado Desconectado

Mensajes: 1.615


Sueñas que sueñas


Ver Perfil WWW
Re: Error Accesando a Base de Datos mediante Listview
« Respuesta #4 en: 18 Junio 2006, 10:51 am »

Creo que el error lo tienes en cómo haces el RsRecordSet.Find

Prueba de esta forma:
Código:
RsRecordSet.Find ("Login ='" & Nodo2 & "'")

De todos modos te da errores cuando tienes registros vacíos, intenta cuando pongas un nuevo usuario o lo que sea que el registro vacío te lo ponga en 0 por ej.
Es un consejo porque cuando luego tengas por ej. 800 usuarios te va a ser más difícil poner todo a cero..
Espero te funcione bien.
En línea

kicking people

Desconectado Desconectado

Mensajes: 211


Ver Perfil
Re: Error Accesando a Base de Datos mediante Listview
« Respuesta #5 en: 18 Junio 2006, 23:14 pm »

Creo que el error lo tienes en cómo haces el RsRecordSet.Find

Prueba de esta forma:
Código:
RsRecordSet.Find ("Login ='" & Nodo2 & "'")

De todos modos te da errores cuando tienes registros vacíos, intenta cuando pongas un nuevo usuario o lo que sea que el registro vacío te lo ponga en 0 por ej.
Es un consejo porque cuando luego tengas por ej. 800 usuarios te va a ser más difícil poner todo a cero..
Espero te funcione bien.

Impecable... funciona perfecto.. Voy a fijarme lo de los usuarios vacios... Muchas gracias Gangrel y karmany por su ayuda!!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Recuperar Datos Server COD4 y poner en ListView (Source)
Programación Visual Basic
enterariel 5 4,613 Último mensaje 10 Enero 2011, 08:47 am
por Sancho.Mazorka
Error al consultar mediante un DataGridView
.NET (C#, VB.NET, ASP)
Diana.Net 2 2,997 Último mensaje 30 Diciembre 2011, 16:01 pm
por Diana.Net
ListView - Winsock - Datos VB 6
Análisis y Diseño de Malware
Enemy 0 1,863 Último mensaje 28 Julio 2014, 03:26 am
por Enemy
Error en Listview
.NET (C#, VB.NET, ASP)
okik 4 2,787 Último mensaje 20 Enero 2019, 14:29 pm
por okik
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines