Mostrar registros en cuadro combinado

Espero alguien me saque de esta duda.
Resulta que utilizo acces97, tengo una tabla llamada CLIENTES con 64,000 registros. Cuando realizo consultas me muestra todos los datos, pero cuando en un cuadro combinado dentro de un formulario trato de ponerlos para que me permita seleccionar el nombre no me muestra nada. He visto en opciones que hay una parte donde dice "No mostrar más de 10,000 registros", traté de cambiar el parámetro y solo me permite hasta 30,000, no se si es eso o si alguien sabe como puedo mejorar el rendimiento de mi programa.

1 respuesta

Respuesta
1
No te lo vayas a tomar a mal, eh, que todos tenemos que empezar alguna vez...
Te falta el from y el where en algún sitio de la sql. Me supongo que te funcionaría
Me.Cuadro_combinado0.RowSource = "Select [Cliente efectivo].Id_cliente, [Cliente efectivo].Nombre_cliente from [cliente efectivo] where nombre_cliente like '" & t & "*' order by [Cliente efectivo].Nombre_cliente"
Y estaban mal las comillas. Fíjate que lo que hago es poner apostrofes (comilla simple) dentro de las comillas dobles, para que se le pasen al motor de base de datos.
Concretamente, y por poner un ejemplo, yo estaría pasando una sql como
Select [Cliente efectivo].Id_cliente, [Cliente efectivo].Nombre_cliente from [cliente efectivo] where nombre_cliente like 'GONZA*' order by [Cliente efectivo].Nombre_cliente
Venga, ya me cuentas
Pero que animaaaaal! :-D
¿¡De verdad estás buscando un registro con una lista desplegable de 30000 filas y te quejas porque son pocas!?
En fin, ver para creer. Espera que ponga la cara de serio otra vez y contesto...
Ya.
Bueno, agarra ese combo que tienes, quítale la select y ponle un evento donde dice 'al cambiar'. (Sacas las propiedades, pestaña eventos, te pones en el campo ese y le das a los puntos suspensivos)
Estarás ahora en el editor de vba, con el cursor en medio de una función por defecto que se llama micuadrocombinado_change
Le pones algo así como
Dim t$
t = Me.Cuadro_combinado0.Text
If Me.Cuadro_combinado0.SelStart > 0 Then t = Left(t, Me.Cuadro_combinado0.SelStart)
Me.Cuadro_combinado0.RowSource = "select completo_terc from terc where completo_terc like '" & t & "*' order by completo_terc"
Fíjate que le he dejado el nombre del combo que access pone por defecto, tendrás que ponerle el tuyo. Y del mismo modo, tienes que personalizar la select que se le hace a la tabla.
La idea de esto es que según vas tecleando, la select vaya siendo más concreta. En cuanto el usuario pulse las 3 o 4 primeras letras, seguro que el resultado ya cabe en el desplegable.
En fin, pruébalo a ver que tal.
Gracias por tu respuesta, no dudo que funcione, resulta que no soy muy bueno para VB, como dijiste soy algo "animal", pero bueno, he tratado de modificar el código que me diste pero no funciona, me da el error "13 - El tipo no coincide", tal vez si revisas el código me puedes corregir:
Private Sub Cuadro_combinado0_Change()
Dim t$
t = Me.Cuadro_combinado0.Text
If Me.Cuadro_combinado0.SelStart > 0 Then t = Left(t, Me.Cuadro_combinado0.SelStart)
Me.Cuadro_combinado0.RowSource = "Select [Cliente efectivo].Id_cliente, [Cliente efectivo].Nombre_cliente like "" &t&" * " order by [Cliente efectivo].Nombre_cliente"
Bueno, espero puedas corregirme, gracias por tu ayuda.
Saludos
Hola, perdón pero estuve de viaje y no había tenido tiempo de contestarte. Quiero agradecerte, me funciono muy bien la sugerencia que me enviaste. No hay ningún problema y funciona muy bien.
Gracias de nuevo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas