Access - Datos de selección multiple,lista dinámica

 
Vista:

Datos de selección multiple,lista dinámica

Publicado por Juan Carlos (26 intervenciones) el 03/06/2003 11:08:09
Para entender un poco el formulario y la duda que tengo, explico brevemente la estructura de la bbdd.
Tengo cuatro tablas:

· T_CLIENTES (relacionada con T_CONTACTOS relación 1 a varios)
· T_CONTACTOS
· T_BOLETÍN (relacionada con T_CONTACTOS relación de varios a varios, por lo que he creado la tabla T_ENVIO_B_CLIENTES_CONTC)
· T_ENVIO_B_CLIENTES_CONTC

Tengo un formulario con:
1 Un combo donde elegimos el nº del boletín
2 Un combo donde elegimos el cliente
3 Una lista de contactos, que dependiendo qué cliente hemos elegido en el combo clientes muestra unos contactos u otros.

Cómo puedo hacer para que en la tabla T_ENVIO_B_CLIENTES_CONTC (tabla donde se producen las relaciones de contacto con boletín, que tiene los campos IDContacto y IDBoletin) se introduzcan
automáticamente o cuando pulsamos un botón todas las relaciones hechas por una selección multiple en la lista de contactos.
Un ejemplo:
Elegimos en el combo boletín el nº: 3 (IDBoletin = 4)
Elegimos en el combo cliente: Telefónica
Elegimos en el combo contacto: Todos los contactos de telefónica a los que les envíamos el boletín.

El resultado tiene que ser que en la tabla T_ENVIO_B_CLIENTES_CONTC:
IDBoletin IDContacto
4 3
4 7
4 11
Habríamos seleccionado tres contactos de telefónica en la lista contactos.

Espero que me entiendas, si no es así no dudes en pedirme más información,

Muchas gracias por tu atención.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Datos de selección multiple,lista dinámica

Publicado por Alejandro (4142 intervenciones) el 28/04/2023 22:43:49
Para agregar automáticamente las relaciones hechas por una selección múltiple en la lista de contactos a la tabla T_ENVIO_B_CLIENTES_CONTC, puedes seguir los siguientes pasos:

1. Agrega un botón en el formulario para realizar la acción de agregar las relaciones de contacto con boletín a la tabla T_ENVIO_B_CLIENTES_CONTC.

2. En el evento "Al hacer clic" del botón, agrega el siguiente código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim varItem As Variant
 
Set db = CurrentDb()
Set rs = db.OpenRecordset("T_ENVIO_B_CLIENTES_CONTC")
 
'Eliminar las relaciones anteriores para el cliente y boletín seleccionados
rs.FindFirst "IDBoletin = " & Me.cboBoletin.Value & " AND IDContacto IN (SELECT IDContacto FROM T_CONTACTOS WHERE IDCliente = " & Me.cboCliente.Value & ")"
If Not rs.NoMatch Then
    rs.Delete
End If
 
'Agregar las relaciones seleccionadas
For Each varItem In Me.lstContactos.ItemsSelected
    rs.AddNew
    rs!IDBoletin = Me.cboBoletin.Value
    rs!IDContacto = Me.lstContactos.ItemData(varItem)
    rs.Update
Next varItem
 
rs.Close
Set rs = Nothing
Set db = Nothing
Este código elimina las relaciones anteriores para el cliente y boletín seleccionados en la tabla T_ENVIO_B_CLIENTES_CONTC, y luego agrega las nuevas relaciones seleccionadas en la lista de contactos.

3. Actualiza el origen de datos de la lista de contactos en el evento "Al cambiar" del combo cliente para mostrar solo los contactos correspondientes al cliente seleccionado. Puedes usar una consulta de selección para filtrar los contactos:

1
2
3
SELECT T_CONTACTOS.IDContacto, T_CONTACTOS.NombreContacto
FROM T_CONTACTOS
WHERE T_CONTACTOS.IDCliente = Forms!NombreDeTuFormulario!cboCliente;

Reemplaza "NombreDeTuFormulario" con el nombre real de tu formulario.

Espero que esto te ayude a solucionar tu problema.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar