Cuadro combinado problema

Tengo un problema con un cuadro combinado y sus asignaciones, trato de que mediante un cuadro combinado seleccione un cliente de la lista y al presionar un botón (Generar), llame al informe y que muestre las compras de ese cliente. Mi dudas son las siguientes: 1- ¿Tengo qué generar una consulta/informe para cada cliente? Son más de 100 y 2- en caso contrario como hacer para imprimir también el cliente seleccionado en la vista de informe... Espero ser claro y desde ya muchas gracias por la ayuda...
Respuesta

Eso es la mar de sencillo, adapta el siguiente código en tu botón Generar:

DoCmd.OpenReport "Transacciones de inventario", acPreview, , "[CLIENTE]=" & Me.TuComboCliente

El nombre del informe no le pongas el nombre de ningún cliente (observa que he elimnado la palabra HECTOR) para que evites crear innecesariamente informes por cada cliente. Imagina que en tu familia hay 10 integrantes y necesitan un medio de transporte, ¿comprarías diez vehículos? Con uno solo basta y se lo compartirían.

Igualmente en la consultas. Solo deja una y no filtres por ningún cliente (elimina cualquier dato en el renglón criterio del campo CLIENTE)

Ya nos cuentas.

1 respuesta más de otro experto

Respuesta
1
La instrucción para llamar a una informe, vista previa, que te gerera el asistente, es la siguiente:
DoCmd. OpenReport Nombre_de_reporte, acPreview
para que se puedas ver solo de un cliente debes añadir
....acPreview, , "id_Cliente = " & me.Lista_de_Clientes
Se presupone que Id_Cliente es un campo que esta en el informe y la Lista contiene el código del cliente
Estimado experto, muchas gracias por la pronta respuesta, ahora el problema es que no entiendo como aplicar esto que me respondiste, e intentado muchas veces y no consigo nada, ¿el botón tiene que tener este código? ¿O el botón ejecuta una macro? Y en el informe, como hacer para que imprima la selección... estos son los datos que manejo:
Tabla: productos
Tabla: transacciones de inventario
De estas 2 tablas genero la consulta (LISTA CRÉDITO HECTOR) con estos campos:
Fecha transacción (Tabla:Transacciones de Inventario)
CLIENTE (Tabla:Transacciones de Inventario)
Código Producto (Tabla:Productos)
Nombre Producto (Tabla:Productos)
UnidadesVendidas (Tabla:Transacciones de Inventario)
PrecioUnidad (Tabla:Transacciones de Inventario)
PAGADOS Si/nO (Tabla:Transacciones de Inventario)
fECHA pAGO (Tabla:Transacciones de Inventario)
PAGO ADELANTO (Tabla:Transacciones de Inventario)
Fact Enzo (Tabla:Transacciones de Inventario)
Fact CRIS (Tabla:Transacciones de Inventario)
Que mediante un intervalo de fechas me devuelve el movimiento de un cliente especifico, el informe se llama "Transacciones de inventario Hector" y esta asociado a la consulta.
Espero no ser muy cargoso con esto, pero necesito de tu ayuda por favor...
Saludos
Primero que supongo es que ya tienes un reporte creado que te genera la información tal como necesitas, con la salvedad de que te muestra todos los registros, de todos los clientes, y que esta asociado a una consulta la cual contiene un campo CLIENTE.
Luego, el código va en un evento de un botón, "Al hacer click" por ejemplo, dentro del formulario donde tienes la un cuadro combinado con la lista de clientes, que lo llamare CboClientes; si gereras el botón con el asistente veras que te genera la primera parte de la instrucción que escribí,
en tu caso la instrucción sera +/- así:
DoCmd.OpenReport [Transanciones de inventario Hector], acPreview
Si ejecutas tal cual el botón te mostrara tu reporte con todos los registrso, y todos los clientes.
Entes de esta instrucción instrucción añade estas instrucciones
Dim xWhere as string
xWhere = " CLIENTE=" & CboCliente
Donde: CLIENTE es el campo de tu reporte y CboCliente tiene el valor del Cliente en tu formulario (suponiendo que este valor es numérico, de lo contrario tiene que estar entre comillas (')
Luego la inscruccion la modifica, de esta manera
DoCmd.OpenReport [Transancion de inventario Hector], acPreview,,xWhere
Ojo que son 2 comas antes del xWhere
1- Acerca de tu primera apreciación, hay más de cien consultas, una para cada cliente así como la misma cantidad de informes,
por ejemplo para el informe de Hector en campo clave es su código, es decir Hector=1
2- Hice todo los pasos que me dijiste y cuando ejecuto al hacer click me aparece este mensaje de error:
DoCmd.OpenReport [Transacciones de inventario HECTOR], acPreview, , xWhere
3-Cambie en nombre del cuadro combinado por CboClientes
4- Asigne al botón en código que me dijiste:
Private Sub Comando94_Click()
Dim xWhere As String
xWhere = " CLIENTE=" & CboCliente
DoCmd.OpenReport [Transacciones de inventario HECTOR], acPreview, , xWhere
End Sub
5-No se que hice mal... ojala sepas disculpar las molestias...
Saludos...
Para poder ayudarte necesito saber en que momento deja de funcionar, y cual es error
Para ayudarte a determinar esto, podrías verificar lo siguiente:
1.- Si al reporte que tienes, en la consulta, le adicionas: ... where cliente =1
y te muestra el reporte que necesitas (es decir de sale la información de Hector) entonces no es problema del reporte ( Ojo que este where es solo de prueba si funciona debes borrarlo)
2.- Si al comando DoCmd... le quitas el Where y queda:
DoCmd.OpenReport [nombre de tu reporte], acPreview
Debe mostrarte tu reporte con todos los registros, si es así la llamada al reporte esta correcta.
3.- si adicionas una instruccion antes del dim xwhere ...
MsgBox CboCliente
Te debe mostrar el valor 1 al seleccionar a Hector
Si el valor que te muestra es hector debes revisar la consulta del CboCliente y si te muestra 1 esto debería funcionar.
(Te sugiero que revises la opción de debuger, para saber donde realmente esta ocurriendo el error)
Lo siento, no me sale, cada cosa que escribo o cambio me da error, veré como lo resuelvo, de todas maneras muchas gracias por tu tiempo... creo que tendré que ver la manera de acomodar los más de cien botones para cada cliente...
Estimado experto, creo que esta es la solución a mi problema ya que tengo más de cien informes y no puedo hallarle la vuelta mediante cuadros combinados, buscando encontré este comentario:
Algunas bases de datos pueden contener centenares de informes, por lo cual existe la posibilidad de simplificar la elección seleccionando los que se imprimen más a menudo de una ventana de diálogo personalizada (del tipo pop-up condicionado o propiedad emergente condicionada).
El usuario puede seleccionar un informe de la ventana de diálogo y hacer clic sobre un botón de comando para imprimirlo.
La ventana de diálogo podrá disponer de:
-Un grupo de opciones, un cuadro de resumen o un cuadro combinado donde se encuentra la lista de los informes.
-Una serie de botones de comando, cada uno de los cuales lleva por titulo el nombre de un informe.
Todos mis informes empiezan con la palabra "CRÉDITO...", y creo que es lo que me hace falta ya que al llamar al informe este automáticamente me pide ingresar el rango de fechas.
Podrías por favor ayudarme con esto, es decir... como hago...
Saludos
Para que un informr o una consulta te pida un parámetro antes de ejecutar, en el origen de la consulta debes adicionar algo en el where:
....where cliente = [Ingrese_Codigo_Cliente]
Donde Cliente es tu campo en la consulta y el dato de pedita en la otra variable definida
espero que sea lo que necesitas...!
No entendí esto de en la consulta adicionar algo en el where, me podrías decir en que parte porque no encuentro nada en el modo de diseño de la consulta algo que diga "where", solo dice:
Campo:
Table:
Orden:
Mostrar:
Criterios:
o:
Saludos
CRITERIO, Ahi de la columna CLIENTE  debe estar : [Ingrese_codigo_de_Cliente]
... si ves el la vista SQL veras que se escribe en el Where que decía
ahhh. Entendí... gracias, pero si pongo eso me pedirá el código del cliente y son más de cienn códigos, lo que yo pretendo ahora es hacer un cuadro de dialogo personalizado donde me de la opción de seleccionar de un listado de informes el que necesite.
El usuario puede seleccionar un informe de la ventana de diálogo y hacer clic sobre un botón de comando para imprimirlo.
La ventana de diálogo podrá disponer de:
-Un grupo de opciones, un cuadro de resumen o un cuadro combinado donde se encuentra la lista de los informes.
-Una serie de botones de comando, cada uno de los cuales lleva por titulo el nombre de un informe.
Todos mis informes empiezan con la palabra "CRÉDITO...", y creo que es lo que me hace falta ya que al llamar al informe este automáticamente me pide ingresar el rango de fechas.
Podrías por favor ayudarme con esto, es decir... como hago para hacer un cuadro de lista donde muestre todos los informes que empiecen por CRÉDITO.
Saludos cordiales
En el origen de la lista ingresa esta consulta
SELECT Name
FROM MSysObjects
WHERE Name Like "credito*" and Type=-32764
Estimado amigo... gracias por tratar de ayudarme pero realmente no tengo idea de esto que me escribiste...
1- ¿Origen de la lista? a que hace referencia esto... ¿qué lista? ¿Un cuadro de lista?
2- ¿Ingresa esta consulta? ¿Cuál consulta uso?
Saludos y espero sepas disculpar mi ignorancia...
1 si es un cuadro de lista, (sobre eso era la pregunta...)
2. El cuadro de lista dentro sus propiedades, en la pestaña datos, tiene una opción tipo de origen de fila ahí debes elegir Tabla/Consulta
y finalmente ingresas en la propiedad origen de la fila la consulta (select... etc)
Hola amigo, por fin pude hacer el cuadro combinado con todos los informes que tiene la base de datos, pero no se como hacer para que ejecute la selección.
Cree el cuadro combinado (Cuadro combinado10) y en el campo Origen de la fila escribi esto: SELECT DISTINCTROW MSysObjects.Name FROM MSysObjects WHERE (((MSysObjects.Type)=-32764));
Ahora no se como hacer que en el botón, al hacer click ejecute el informe que seleccione y podrías también decirme como hacer para que me liste solamente los informes que empiecen con "LISTA DE CRÉDITO..."
Saludos cordiales
SELECT DISTINCTROW MSysObjects.Name FROM MSysObjects WHERE Name Like "Listado de credito*" and  (((MSysObjects.Type)=-32764));
en el botón debes incluir esta instrucción
DoCmd.OpenReport [Cuadro combinado10], acPreview

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas