Desplegar datos en un combobox desde access

Hola estoy haciendo un programa en visual basic y tengo una base de datos en access,
trabajo con el data y puedo acceder a los datos sin problema, mi problema es que necesito desplegar una lista de datos en un combobox pero datos de una tabla en access, he revisado varios foros pero me dan códigos que no me funcionan.
Dato importante: no utilizo ADO ni DAO porque no entiendo eso, solo conecto mi base de datos a través del data y en las propiedades del data y los grabo con el recordset.fields soy novato en visual basic y no se si se pueda hacer lo que pregunto sin DAO o ADO.
Pero por lo que me acuerdo yo lo hice una vez y me resulto pero no me acuerdo como lo hice, y no utilicé DAO ni ADO.
O si no, obligado a aprender no más.
Ojala me ayuden Gracias
Marcos

1 respuesta

1
Respuesta de
Hola shokram, voy a proponerte una rutina de conexión con Access que aunque es con DAO funciona muy fácil y así podemos insertar datos a un Combobox como lo requieres:
Supongamos que existe un base de datos denominada BDPRUEBA.mdb que se encuentra localizada en D:\ y que ella contiene un tabla denominada DATOS... así las cosas necesitamos agregar una referencia (por el menú Proyecto - Referencias) a Microsoft DAO 3.6 Object Library e incluir un ComboBox llamado Combo1
Luego agregamosen en declaraciones lo siguiente:
Dim SentenciaSQL As String
Dim Base As Database
Posteriormente agregamos el siguiente código en el Load del formulario:
Dim Datos_1 As Recordset
Set Base = OpenDatabase("D:\BDPRUEBA.mdb", False, False, "")
SentenciaSQL = "Select * from DATOS"
Set Datos_1 = Base.OpenRecordset(SentenciaSQL)
Do While Datos_1.EOF = False
    Combo1.AddItem Datos_1(1).Value
    Datos_1.MoveNext
Loop
Espero te sirva
Andriu25
No me funciona, me arroja un mensaje error 3265 "no se encontró el elemento en esta colección" y me selecciona la linea comboFamiliasExistentes. AddItem Datos_1(1). Value
Tengo una duda, los datos yo los tengo en una tabla llamada familias, pero se ingresan las familias en un campo llamado nombre_familia y eso en ningún momento aparece en el código...
Gracias
El código está supuesto con e nombre de otra base de datos y de otra tabla... Regálame por favor el código completo que estás colocando y el nombre de tu base de datos y de la tabla que deseas consultar para poderte ayudar!
Gracias por tu interés!
Te explico, estoy haciendo un programa en visual basic 6 y 3 tablas en access ( ninguna relacionada entre si )esto trata de lo siguiente: Es un control de mi negocio, los productos y los proveedores, tengo un formulario Productos en donde ingreso los productos y quiero asignarles una familia a los productos el cual lo seleccionaré de un combobox, entonces tengo un botón "agregar familia" el cual abre un formulario que tiene un text donde se ingresa la familia nueva ( en un principio lo había hecho con additem("") pero después me di cuenta que ingresa datos solo en tiempo de ejecución y al cerrar la aplicación se pierden los datos) por lo que decidí crear la tabla "familias" y guardar familiias ( con recorset.fields("") en un campo "nombre_familia" y lo hace bien, lo guarda en la base de datos como yo tenia pensado. PERO no puedo hacerlo aparecer en el combobox del formulario productos.
Mi base de datos se llama bdd1.mdb
Está ubicado en el escritorio en la carpeta "2"
C:\Documents and Settings\Enter\Escritorio\2\bdd1.mdb
El código en el formulario Productos es el siguiente:
Private Sub cmdGrabar_Click()
Data1.Recordset.Fields("id_producto") = txtId.Text
Data1.Recordset.Fields("producto") = txtProducto.Text
Data1.Recordset.Fields("precio_unitario") = txtPrecioUnitario.Text
Data1.Recordset.Fields("familia") = comboFamilia.Text
Data1.Recordset.Fields("proveedor") = comboProveedor.Text
Data1.Recordset.Fields("descripcion") = txtDescripcion.Text
Data1.Recordset.Fields("cantidad") = txtCantidad.Text
Data1.Recordset.Fields("fecha_ingreso") = txtFechaIngreso.Text
Data1.Recordset.Fields("stock") = txtStock.Text
Data1.Recordset.Update
MsgBox ("Producto guardado con Éxito")
End Sub
Private Sub cmdLimpiar_Click()
txtId.Text = ""
txtProducto.Text = ""
txtPrecioUnitario.Text = ""
comboFamilia.Text = ""
comboProveedor.Text = ""
txtDescripcion.Text = ""
txtCantidad.Text = ""
txtFechaIngreso.Text = ""
txtStock.Text = ""
txtId.SetFocus
End Sub
Private Sub cmdNuevaFamilia_Click()
FormNuevaFamilia.Show
End Sub
Private Sub cmdNuevo_Click()
Data1.Recordset.AddNew
txtId.Text = ""
txtProducto.Text = ""
txtPrecioUnitario.Text = ""
comboFamilia.Text = ""
comboProveedor.Text = ""
txtDescripcion.Text = ""
txtCantidad.Text = ""
txtFechaIngreso.Text = ""
txtStock.Text = ""
txtId.Enabled = True
txtProducto.Enabled = True
txtPrecioUnitario.Enabled = True
comboFamilia.Enabled = True
comboProveedor.Enabled = True
txtDescripcion.Enabled = True
txtCantidad.Enabled = True
txtFechaIngreso.Enabled = True
txtStock.Enabled = True
cmdNuevaFamilia.Enabled = True
cmdNuevoProveedor.Enabled = True
cmdLimpiar.Enabled = True
cmdGrabar.Enabled = True
cmdNuevo.Enabled = False
txtId.SetFocus
End Sub
Private Sub cmdNuevoProveedor_Click()
FOrmProveedores.Show
End Sub
Private Sub cmsSalir_Click()
FormProductos.Hide
End Sub
Private Sub Form_Load()
txtId.Text = ""
txtProducto.Text = ""
txtPrecioUnitario.Text = ""
comboFamilia.Text = ""
comboProveedor.Text = ""
txtDescripcion.Text = ""
txtCantidad.Text = ""
txtFechaIngreso.Text = ""
txtStock.Text = ""
txtId.Enabled = False
txtProducto.Enabled = False
txtPrecioUnitario.Enabled = False
comboFamilia.Enabled = False
comboProveedor.Enabled = False
txtDescripcion.Enabled = False
txtCantidad.Enabled = False
txtFechaIngreso.Enabled = False
txtStock.Enabled = False
cmdNuevaFamilia.Enabled = False
cmdNuevoProveedor.Enabled = False
cmdLimpiar.Enabled = False
cmdGrabar.Enabled = False
End Sub
Y el del Formulario de ingreso de nueva familia este:
Private Sub cmdNuevaFamilia_Click()
DataFamilias.Recordset.Fields("nombre_familia") = txtNuevaFamilia.Text
DataFamilias.Recordset.Update
MsgBox ("Familia Agregada")
End Sub
Private Sub cmdNuevo_Click()
DataFamilias.Recordset.AddNew
End Sub
Recuerda que no uso ado ni dao solo grabo con recordset.fields y recordset. update y que me graba en la base de datos super bien, lo que no puedo hacer es desplegarlo en el combobox
espoero que te quede claro que es muy urgente que termine esto
muchas gracias
gracias por tu preocupacion
si necesitas otra informacion avisame porfa"!
gracias .
Marcos
'Ok,a pesar de que no estuvieras utilizando ADO, el código que te envío es fácil de aplicar en tu proyecto
Inserta las dos siguientes lineas en las declaraciones del formulario
Dim SentenciaSQL As String
Dim Base As Database
' Despues inserta lo demas en el load del formulario
'No olvides cambiar la ruta de la base de datos
'Lo del campo o columna lo explico mas abajo, yo trabajo 'con el numero de ca columna y no cone nombre de la misma
Dim datos_1 as recordset
'reemplaza en la siguiente linea la frase "d:\bdprueba" por la ruta de tu base de datos
set base = opendatabase("d:\bdprueba.mdb", false, false, "")
'en la siguiente linea va el nombre de la tabla familias
sentenciasql = "select * from familias"
set datos_1 = base.openrecordset(sentenciasql)
'ahora, el numero (1) entre paréntesis significa el numero de la columna que desea visualizar en el combobox
'las columnas comienzas desde cero... Así que si quisieras mostrar la información de la primera, deberías reemplazar
'el (1) por (0)
do while datos_1.eof = false
combo1.additem datos_1(1).value 'a este (1) me refiero
datos_1.movenext
loop
datos_1.close
Intentalo y miramos
Compadre muchas gracias
Has sido de gran ayuda, todo me salio perfecto ahora...
Eso si que me gustaría que me dieras tu correo electrónico
para hacerte más preguntas a ti por que veo que eres muy experto y me das confianza
mi mail es shokramshott@gmail.com
Muchas Gracias
¿O te pregunto al tiro mejor?
Si mejor
¿Cómo hago para que mis productos tengan un ID automático?...
Por favor!
Gracias
Añade un comentario a esta respuesta
Añade tu respuesta
Haz clic para o
Escribe tu mensaje
¿No es la respuesta que estabas buscando? Puedes explorar otras preguntas del tema Visual Basic o hacer tu propia pregunta: