Bienvenido: ( Identificarse | Registrarse )      
Foros de Trucos Windows
 
Closed TopicStart new topicStart Poll

Outline · [ Estándar ] · Lineal+

> Problema con visual basic y Access

Caito
post Jun 10 2007, 11:37 PM
Publicado: #1


No Spiware
Group Icon

Grupo: Supervisor Global
Mensajes: 17.436
Registrado: 15-August 04
Desde: Argentina
Miembro nº: 13.043



Tengo el siguiente problema para acceder a una base de datos con el VB.

Tengo una tabla en Excel:

NOMBRE | DIRECCION | TELEFONO | DOCUMENTO |
-----------------------------------------------------------
nom 1 | dir 1 | tel 1 | DNI 1 |
-----------------------------------------------------------
nom 2 | dir 2 | tel 2 | DNI 1 |
-----------------------------------------------------------
nom 3 | dir 3 | tel 3 | DNI 3 |

El objetivo del planteo es que medianante un List, en el VB, me aparezcan los nombres de dicha tabla ( con eso sí pude), pero lo que debo hacer también, es que cuando haga doble click en cualquier nombre que aparezca en el List, me aparezcan los respectivos datos de aquel nombre (Ejemplo: Doble click en nom 1, me deben aparecer en labels diferentes dir 1, tel 1, y DNI 1.) Todo esto utilizando el Access junto con el VB.

Esprero que me haya expresado bien y que alguien por favor pueda ayudarme.
Desda ya muchas gracias,

Caito




User is online!Profile CardPM
Go to the top of the page
+Quote Post
rob1104
post Jun 11 2007, 05:30 AM
Publicado: #2


Xbox Live... The best thing ever happened around videogames
Group Icon

Grupo: Moderadores
Mensajes: 1.665
Registrado: 7-March 05
Desde: Matamoros, Tamaulipas, Mexico
Miembro nº: 93.342



Hola, un placer ayudarlo clap.gif clap.gif ... Bueno, no menciona la version de Visual Basic, pero supongo que es la 6.0 (en dado caso que sea otra corregiré) Para conectar a VB con access hay una infinidad de formas (bueno en realidad como 6 o 7 aprox biggrin20jy.gif ), no menciona cual usó, pero le voy a dar una de las mas sencillas.. usando ADO (ActiveX Data Object) sin DataControl. Primero que nada hay que agregar la referencia para poder usar los metodos ADO, eso se logra dando click al menu proyecto/referencias y palomear: Microsoft ActiveX Data Object 2.8 como lo muestro en las imagenes:
imagen externa
imagen externa
Ahora, en el ejemplo que utilizé agregue un combobox, tres labels y tres textbox, y no les cambié ninguna propiedad, ahora solo agregar el siguiente codigo:

Option Explicit
Dim conexion As ADODB.Connection 'Conexion
Dim WithEvents rs As ADODB.Recordset 'Recordset

Private Sub Form_Load()
    Dim i As Integer 'Contador
    Const ruta = "base.mdb" 'Ruta de la base
    'Creamos los "objetos"
    Set conexion = New ADODB.Connection
    Set rs = New ADODB.Recordset
    'Creamos la conexion a la base
    'Si es access 97 cambiar el 4.0 por 3.51

    conexion.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                                "Data Source=" & ruta & ";"
    conexion.Open 'Abrimos la conexion
    'Abrimos el recordSet (tabla, es el nombre de la tabla :D
    rs.Open "SELECT * FROM tabla", conexion, adOpenDynamic, adLockOptimistic
    rs.MoveFirst 'Posicionamos el RecordSet en el primer registro
    
    '/*Cargamos el nombre al combobox"
    'Mientras no sea Fin de archivo
    While Not rs.EOF
        'Añadir un nombre al combo
        Combo1.AddItem rs.Fields("nombre")
        rs.MoveNext 'Pasar al siguiente registro
    Wend
    rs.Close 'Cerramos el RecordSet
End Sub


'/*Aqui esta lo que pides Caito*/
Private Sub Combo1_click()
    'Cada vez que se le de click al combo
    'Éste tomara los campos con el filtro nombre=texto del combo1
    'Y despues asigna los demás campos de la tabla al combobox

    rs.Open "SELECT * FROM tabla WHERE nombre like '" & Combo1.Text & "'", conexion, adOpenDynamic, adLockOptimistic
    Text1.Text = rs.Fields("direccion")
    Text2.Text = rs.Fields("telefono")
    Text3.Text = rs.Fields("documento")
    rs.Close
End Sub


Es algo dificil de comprender la primera vez, pero agarrandole el hilo es muy facil :D, te adjunto el proyecto por si quedan dudas:
BASE DE DATOS ADO SIN DC
bye1.gif


User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Caito
post Jun 11 2007, 09:46 PM
Publicado: #3


No Spiware
Group Icon

Grupo: Supervisor Global
Mensajes: 17.436
Registrado: 15-August 04
Desde: Argentina
Miembro nº: 13.043



Muchas gracias por la ayuda robbie110487, me funcionó correctamente. Pero hay un problema. Lo debo hacer con otra forma de código, le mando un ejemplo a continuación de cómo se realizó la primera parte. (el ver los nombres de una tabla de access en un List de Visual). Debo hacer lo que le pedí en el primer mensaje, pero utilizando la misma forma de código que se usó en la primera parte:

Microsoft DAO 2.5/3.5 Compatibility Activado.
Código FGM

Dim datas as database
Dim reg as recordset
Dm cons as string

Set datas = Opendatabase("C:\tabla.mdb")
Cons = "select Nombre from Hoja1 where Nombre like ' "
Cons = Cons + Text1 + " * ' "
Set reg = datas.openrecordset(cons)
Do while not reg.EOF
If re.nomatch then
Print " no se encontró"
Else
list1.additem reg!Nombre
reg.movenext
End if
Loop
End sub
---------------------
(si me explique mal, o falta algo de información, no dude en hacermelo saber)

Ese fue el código que utilizé para hacer la 1ra parte, usando un List, un Text...
Si es posible hacer la úlitma parte (hacer click en cualquier nombre del List y que te aparezcan los datos de esa persona) usando un código similar se lo agradecería mucho. De lo contrario, muchas gracias igual, robbie110487.
thumbsup.gif

Salu2

Caito



User is online!Profile CardPM
Go to the top of the page
+Quote Post
RadicalEd
post Jun 12 2007, 02:59 PM
Publicado: #4


Desocupado Programando
Group Icon

Grupo: Moderadores
Mensajes: 637
Registrado: 7-February 05
Desde: SoloCodigo
Miembro nº: 76.900



QUOTE(Caito @ Jun 11 2007, 10:46 PM)
Muchas gracias por la ayuda robbie110487, me funcionó correctamente. Pero hay un problema. Lo debo hacer con otra forma de código, le mando un ejemplo a continuación de cómo se realizó la primera parte. (el ver los nombres de una tabla de access en un List de Visual). Debo hacer lo que le pedí en el primer mensaje, pero utilizando la misma forma de código que se usó en la primera parte:

Microsoft DAO 2.5/3.5 Compatibility Activado.
Código FGM

Dim datas as database
Dim reg as recordset
Dm cons as string

Set datas = Opendatabase("C:\tabla.mdb")
Cons = "select Nombre from Hoja1 where Nombre like ' "
Cons = Cons + Text1 + " * ' "
Set reg = datas.openrecordset(cons)
Do while not reg.EOF
If re.nomatch then
Print " no se encontró"
Else
list1.additem reg!Nombre
reg.movenext
End if
Loop
End sub

De hecho, lo que necesitas ya lo tienes hecho solo es acomodar el evento que debes utilizar.
Cuando selecciones el Nombre del usuario, deberas decir en otra consulta:

Private Sub List1_Click()
On Error Resume Next
'ESTA PRIMERA PARTE DEBERIAS DEJARLA AL COMIENZO DEL FORMULARIO PARA NO HACERLO EN CADA EVENTO, O EN UN MODULO PARA HACERLO GLOBAL EN LA APLICACION.
Dim datas as database
Dim reg as recordset
Dm cons as string

Set datas = Opendatabase("C:\tabla.mdb")
Cons = "SELECT * from Hoja1 where Nombre like '" & List1.Text & "'"
End Sub

Y el resto es imprimir los datos.

Ojala te sirva.
Chao
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

 
Closed TopicTopic OptionsStart new topic

Collapse

> Topicos similares

Problema terrible en mi pc... rusocdu 64 9 Hoy, 12:28 PM
By: Caito
problema con un tdt con disco duro el_guaje 75 2 Hoy, 11:17 AM
By: el_guaje
Problema terrible en mi pc... rusocdu 0 0 Ayer, 09:27 PM
By: fabio_mar
Problema con controles del JMF LordSauron 27 0 Ayer, 04:23 PM
By: LordSauron