Coger datos para formulario desde tabla mediante vba

Soy principiante en el vba, he empezado a usar access hace bien poco y me preguntaba si podríais ayudarme.

Tengo una pequeña base de datos para mi empresa, tengo un formulario de cuadros combinados para hacer los pedidos. En el cuadro combinado donde añado los pedidos, quiero que el el precio del producto se corresponda con el precio asignado según el tipo de cliente.

He estado investigando mucho pero soy incapaz de hacerlo, sé que tengo que hacer algo con el "select" pero la información que encuentro dan por hecho muchas cosas que no sé.

Lo que quiero es hacer que después de actualizar un campo de producto, se ejecute un código que lea el id del cliente, según su id que detecte el tipo de cliente que es, y cuando sepa que tipo de cliente es que muestre el precio del producto para ese tipo de clientes en concreto, sé encadenarlo con "if", lo único que necesito (creo) es que me ayuden a saber como coger los datos de las tablas.

1 respuesta

Respuesta
2

Raul: Si partimos de la base de que cuando eliges el Producto ya tienes de donde sacar el Tipo de Cliente, has de buscar en la Tabla de Productos, el Precio tomando esos dos parámetros en la Función DLookUp. Poco más te puedo decir sin conocer más detalladamente como tienes montados los datos

https://msdn.microsoft.com/es-es/library/office/ff834404.aspx 

Mis saludos >> Jacinto

Perfecto, es justo lo que necesitaba, he estado haciendo varias pruebas y funciona perfectamente con los datos que tengo que meter a mano (correo, nombre etc) Pero el campo en concreto al que estoy intentando acceder es una selección de otra tabla y no me muestra nada en esa clase de campo, sabes cómo podría solucionar eso? si no pues meteré esos campos a mano pero es por optimizar al máximo dentro de mis escasas habilidades, muchas gracias!

Raul: Veo muy dificil que acierte sin saber tu estructura de datos, pero voy a hacer unas suposiciones y luego tú modificas la Función.

Suposiciones: Tabla >> PreciosSegunCliente, Campo a buscar PrecioProducto.

En la tabla citada debe haber >> IdTipoCliente y también IDProducto y supongo que ambos son numéricos.

El IdTipoCliente lo tienes en el Formulario Principal y el IDProducto en un SubFormulario, que es donde vas poniendo las líneas de pedido. En ese SubForm se llama Precio

Programa el Evento AfterUpdate (Después de Actualizar) del IDProducto así.

Private Sub IDProducto_AfterUpdate()
Me.Precio = DLookup("PrecioProducto","PreciosSegunCliente","IdTipoCliente = " & Me.Parent.IdTipoCliente & " AND " & "IDProducto = " & Me.IDProducto)
End Sub  

Sería mucha casualidad dar en la diana, pero esa es la idea.

Si por ejemplo el dato de IdTipo Cliente (o el otro), fuera de tipo texto el parámetro tomaría la forma de >> "IdTipoCliente = '" & Me.Parent:IdTipoCliente & "'"

Mis saludos >> Jacinto

Madre mía!! Casi aciertas de lleno! Los id de clientes son numéricos y los de los tipos de clientes son string, agrego unas imágenes para que veas como lo tengo estructurado pero vamos, lo tengo casi casi, muchísimas gracias

 

esa es justo como dijiste

y eso es la disposición de mi base (no se si servirá de ayuda)

De nuevo muchísimas gracias :D

Raul: Creo que sería más simple, si en el Formulario principal, añades un cuadro de Texto que puede llamarse TxtTipoCliente, y llenarlo cuando elijas el IdCliente. Ese cuadro de Texto puede estar oculto. Debería aparecerte >> Amazón o ... lo que sea. Entonces el Código te quedaría aproximadamente así.

Dim ElCampo As Sring
ElCampo = Me.Parent.TxtTipoCliente
Me.[Precio Unidad]= DLookup(ElCampo,"Precios","[Id Producto] = " & Me.[Id Producto])

No lo he probado, pero por ahí va el tema. Comentame si no sales.Un saludo >> Jacinto

¡Gracias! No me ha funcionado así tal cual, al final he puesto el TxtTipoCliente como me dijiste en invisible, y otros en el subformulario, después con el código me ha funcionado perfectamente, de nuevo muchas gracias :D

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas