Con excel y access a combobox.

06/06/2005 - 08:14 por dargento | Informe spam
Hola!
Repito mi duda, a ver si me puedo explicar un poco mejor.
Tengo una aplicación, la cual la interfaz gráfica debe ser creada e
Excel a traves de Visual Baasic, y debe recoger e introducir datos e
una base de datos de acces,es decir, desde excel a traves de visua
basic tengo que interactuar con la base de datos.
Yo realizo desde excel una consulta a la base de datos, de un registro
por ejemplo.Y el resultado de esa consulta, es decir un valor de tip
texto por ejemplo, necesito que lo introduzca en un combobox que teng
dibujado en la hoja de trabajo de excel, pero desde un modulo de visua
basic.
Yo lo de poner el resultado en una celda o varias, lo voy consiguiendo
pero no puedo pasarlo al combobox o lista.
Si alguien me puede decir como hacerlo , le estaria muy agradecido.
Utilizao tecnologia ADO para la conexion con la base de datos y e
recordset.
Desiree.
Desiree.Argento@indexing.e

dargent
dargento's Profile: http://www.msusenet.com/member.php?userid4
View this thread: http://www.msusenet.com/t-187051381

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
08/06/2005 - 04:16 | Informe spam
hola, Desiree !

... quiero... a traves de un formulario de recogida de datos... unos calculos en excel... realizar una consulta
... el resultado de esa consulta exponerla en un combobox en un formualrio en excel
... que el usuario eliga una opcion del resultado de la consulta. Todo esto en ADO
... tambien... no se como decirle en la consulta que quiero pasar un argumento por variable
... cogo el dato que necesito para el where y lo meto en la variable midato
... como pongo el where para que me coga midato bien?



sigue sin quedarme claro si el combo lo 'pintaste' [directamente] en la hoja de excel
y si por 'formulario' te refieres a una hoja 'diseñada' como 'pantalla de captura' o a un userform [vba] -?-
seria conveniente si ademas de aclarar lo anterior expones el codigo que estas usando actualmente ;)

suponiendo que la cadena de la clausula where la construyes +/-...
"no se como pero aqui construyes la cadena con la clausula where para tu consulta"
para 'pasar' variables a una cadena puedes 'romper' su construccion [p.e.]
"aqui inicias la construccion de la cadena " & midato & " y continuas DESPUES de intercalar tu variable"
[dependiendo de que 'tipo' de variable sea 'midato' es posible que se necesite agregar comillas 'extras'] -?-

[disculpa la insistencia... pero]... podrias proporcionar datos mas 'concretos' ?
saludos,
hector.
Respuesta Responder a este mensaje
#2 dargento
09/06/2005 - 08:10 | Informe spam
Muchas gracias por tu interes en poder ayudarme.
Bueno, haber si me explico.
Yo tengo un userform de vb que se ejecuta en una hoja de calculo excel
en el cual tengo un combobox.
Yo he efectuado una consulta desde excel a una base de datos access, y
lo que necesito es que el resultado de esa consulta se presente en es
combobox, pero no consigo hacer referencia a el en el userform de vb.
El caso contrario, es decir, recoger datos a traves del userform
pasarlos a la base de datos, lo hago perfectamente, pero ese caso m
esta volivendo loca.Una vez con los datos en el combobox, el usuari
elegira uno de ellos, y con ese dato deberé hacer otra consulta a l
base de datos, con lo cual ese dato va a ser una variable, la cua
tampoco se como ponerla en la consulta a la base de datos.
Espero haberme explicado mejor.
Yo sigo intentandolo de todas las maneras de un monton de formas.
Muchas gracias de nuevo.




Héctor Miguel Wrote:
hola, Desiree !

> ... quiero... a traves de un formulario de recogida de datos... uno
calculos en excel... realizar una consulta
> ... el resultado de esa consulta exponerla en un combobox en u
formualrio en excel
> ... que el usuario eliga una opcion del resultado de la consulta
Todo esto en ADO
> ... tambien... no se como decirle en la consulta que quiero pasar u
argumento por variable
> ... cogo el dato que necesito para el where y lo meto en la variabl
midato
> ... como pongo el where para que me coga midato bien?

sigue sin quedarme claro si el combo lo 'pintaste' [directamente] en l
hoja de excel
y si por 'formulario' te refieres a una hoja 'diseñada' como 'pantall
de captura' o a un userform [vba] -?-
seria conveniente si ademas de aclarar lo anterior expones el codig
que estas usando actualmente ;)

suponiendo que la cadena de la clausula where la construyes +/-...
"no se como pero aqui construyes la cadena con la clausula where par
tu consulta"
para 'pasar' variables a una cadena puedes 'romper' su construccio
[p.e.]
"aqui inicias la construccion de la cadena " & midato & " y continua
DESPUES de intercalar tu variable"
[dependiendo de que 'tipo' de variable sea 'midato' es posible que s
necesite agregar comillas 'extras'] -?-

[disculpa la insistencia... pero]... podrias proporcionar datos ma
'concretos' ?
saludos,
hector



dargent
dargento's Profile: http://www.msusenet.com/member.php?userid4
View this thread: http://www.msusenet.com/t-187051381
Respuesta Responder a este mensaje
#3 Héctor Miguel
09/06/2005 - 09:24 | Informe spam
hola, Desiree !

... tengo un userform... un combobox... una consulta... a una base de datos access
... necesito... el resultado de esa consulta... en ese combobox, pero no consigo hacer referencia
... recoger datos... del userform y pasarlos a la base de datos, lo hago perfectamente
... con los datos en el combobox, el usuario elegira uno de ellos, y... debere hacer otra consulta a la base de datos
... ese dato va a ser una variable, la cual tampoco se como ponerla en la consulta a la base de datos.



1) con relacion a como 'pasar' una variable a la 'cadena de la consulta' a la base de datos...
-> en el mensaje anterior 'trate' de darte un ejemplo [a falta de los datos 'reales' que no has comentado] :-(
2) como 'sigues sin comentar' la forma/codigo/detalles/... que estas usando actualmente :-(
-> te pongo un ejemplo del 'llenado' de un objeto =>combo/lista<= tomando datos de una consulta
[obviamente habra 'pocas cosas' que 'coincidan' con tu situacion 'real'... pero... es solo 'un comienzo'] :))

si cualquier duda [o 'te animas' a exponer informacion adicional]... comentas?
saludos,
hector.
== de una 'propuesta' a una consulta 'similar' a la presente =existe una manera 'express' de cargar datos a listboxes/comboboxes usando variables de matriz
aunque el procedimiento ['engañosamente'] pareciera NO 'tener' NADA de 'express' :))
1.- 'asignar' a una variable de matriz ['tipo' Variant] los valores de un rango de celdas
2.- 'cargar' la listbox usando la propiedad 'List' y 'llenandola' CON la variable de matriz
- esto REQUIRE 'bajar' -primero- a un rango la consulta antes de llenar la listbox
- usando la propiedad CopyFromRecordSet de un objeto 'Range' => XL2000 o 'superior' < - una vez EN la listbox, el rango se puede borrar [inclusive puede 'estar' en una hoja 'oculta']
- lo que 'da la apariencia' de TRIPLE labor: 'escribir' en el rango + 'escribir' en la listbox + borrar :((
- todo el proceso [consulta, rango, lista, presentar el formulario, etc.] en las pruebas que efectue...
- le tomo ... 1 segundo con 4,000 registros y 3 campos [columnas] =>P-3 @800 10/100< - obviamente la red NO 'internivo' y la consulta fue a un archivo de texto con formato csv :))
3.- de hecho, use una hoja oculta [que se llama 'Oculta'] y le 'puse' los tiempos a la hoja 'activa'
4.- sera mejor 'recortar' la consulta a SOLO los campos 'necesarios' :))
_______ el codigo 'probado' _______
Sub ConsultaEnArchivoDeTexto()
Range("a1") = Now
Dim Conexion As ADODB.Connection, Registros As ADODB.Recordset, _
Directorio As String, Archivo As String, Consulta As String, Listado As Variant
Directorio = "C:\Mis documentos"
Archivo = "ConsultaSQL.csv"
Consulta = "SELECT * FROM " & Archivo
Set Conexion = New ADODB.Connection
Conexion.Open _
"Driver={Microsoft Text Driver (*.txt; *.csv)};" & _
"DBQ=" & Directorio & ";Extensions=asc,csv,tab,txt;"
Set Registros = New ADODB.Recordset
Registros.Open Consulta, Conexion, adOpenForwardOnly, adLockReadOnly, adCmdText
With Worksheets("Oculta")
.Range("a1").CopyFromRecordset Registros
With Range(.Range("a1"), .Range("a1").End(xlToRight).End(xlDown))
Listado = .Value
.ClearContents
End With
End With
With UserForm1
.ListBox1.ColumnCount = Registros.Fields.Count
.ListBox1.List = Listado
.Show vbModeless
End With
Registros.Close: Set Registros = Nothing
Conexion.Close: Set Conexion = Nothing
Range("a2") = Now
End Sub
Respuesta Responder a este mensaje
#4 dargento
09/06/2005 - 09:50 | Informe spam
Muchas gracias Héctor.
Voy a probar esto, y cuando tenga algo en concreto, te comento como m
ha ido.Gracias de nuevo.




Héctor Miguel Wrote:
hola, Desiree !

> ... tengo un userform... un combobox... una consulta... a una base d
datos access
> ... necesito... el resultado de esa consulta... en ese combobox, per
no consigo hacer referencia
> ... recoger datos... del userform y pasarlos a la base de datos, l
hago perfectamente
> ... con los datos en el combobox, el usuario elegira uno de ellos
y... debere hacer otra consulta a la base de datos
> ... ese dato va a ser una variable, la cual tampoco se como ponerl
en la consulta a la base de datos.

1) con relacion a como 'pasar' una variable a la 'cadena de l
consulta' a la base de datos...
-> en el mensaje anterior 'trate' de darte un ejemplo [a falta de lo
datos 'reales' que no has comentado] :-(
2) como 'sigues sin comentar' la forma/codigo/detalles/... que esta
usando actualmente :-(
-> te pongo un ejemplo del 'llenado' de un objeto =>combo/lista<
tomando datos de una consulta
[obviamente habra 'pocas cosas' que 'coincidan' con tu situacio
'real'... pero... es solo 'un comienzo'] :))

si cualquier duda [o 'te animas' a exponer informacion adicional]..
comentas?
saludos,
hector.
== de una 'propuesta' a una consulta 'similar' a la presente => existe una manera 'express' de cargar datos a listboxes/comboboxe
usando variables de matriz
aunque el procedimiento ['engañosamente'] pareciera NO 'tener' NADA d
'express' :))
1.- 'asignar' a una variable de matriz ['tipo' Variant] los valores d
un rango de celdas
2.- 'cargar' la listbox usando la propiedad 'List' y 'llenandola' CO
la variable de matriz
- esto REQUIRE 'bajar' -primero- a un rango la consulta antes de llena
la listbox
- usando la propiedad CopyFromRecordSet de un objeto 'Range' => XL200
o 'superior' <> - una vez EN la listbox, el rango se puede borrar [inclusive pued
'estar' en una hoja 'oculta']
- lo que 'da la apariencia' de TRIPLE labor: 'escribir' en el rango
'escribir' en la listbox + borrar :((
- todo el proceso [consulta, rango, lista, presentar el formulario
etc.] en las pruebas que efectue...
- le tomo ... 1 segundo con 4,000 registros y 3 campos [columnas] =>P-
@800 10/100<> - obviamente la red NO 'internivo' y la consulta fue a un archivo d
texto con formato csv :))
3.- de hecho, use una hoja oculta [que se llama 'Oculta'] y le 'puse
los tiempos a la hoja 'activa'
4.- sera mejor 'recortar' la consulta a SOLO los campos 'necesarios'
:))
_______ el codigo 'probado' _______
Sub ConsultaEnArchivoDeTexto()
Range("a1") = Now
Dim Conexion As ADODB.Connection, Registros As ADODB.Recordset, _
Directorio As String, Archivo As String, Consulta As String, Listado A
Variant
Directorio = "C:\Mis documentos"
Archivo = "ConsultaSQL.csv"
Consulta = "SELECT * FROM " & Archivo
Set Conexion = New ADODB.Connection
Conexion.Open _
"Driver={Microsoft Text Driver (*.txt; *.csv)};" & _
"DBQ=" & Directorio & ";Extensions=asc,csv,tab,txt;"
Set Registros = New ADODB.Recordset
Registros.Open Consulta, Conexion, adOpenForwardOnly, adLockReadOnly
adCmdText
With Worksheets("Oculta")
.Range("a1").CopyFromRecordset Registros
With Range(.Range("a1"), .Range("a1").End(xlToRight).End(xlDown))
Listado = .Value
.ClearContents
End With
End With
With UserForm1
.ListBox1.ColumnCount = Registros.Fields.Count
.ListBox1.List = Listado
.Show vbModeless
End With
Registros.Close: Set Registros = Nothing
Conexion.Close: Set Conexion = Nothing
Range("a2") = Now
End Su



dargent
dargento's Profile: http://www.msusenet.com/member.php?userid4
View this thread: http://www.msusenet.com/t-187051381
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida