ms-access - una - lista de valores en access 2010
¿Hay una forma simple de rellenar el menú desplegable en este esquema de base de datos de Access? (1)
Tengo 3 tablas que se ven así:
Location Node Sektor
----- ------- -------
PK: ID - Autonumber PK: ID - Autonumber PK: ID - Autonumber
Name NodeName Sektor
Height Aksess Frequency
Latitude Tag Coverage
Longtitude IP
Cada ubicación está conectada con múltiples nodos que están conectados con múltiples sektors.
Ahora la parte interesante. En Microsoft Access, puede crear esquemas que permitan a los usuarios agregar datos fácilmente. Tengo la mesa final como esta, y quiero usar mi esquema para insertar datos en:
Customers
-------
PK: CustID
Name
Subscribtion
Sektor
Aquí es donde quiero que se haga la magia. Quiero que el usuario pueda seleccionar primero una ubicación, luego se le presentan los nodos disponibles (preferiblemente en el menú desplegable) y finalmente puede elegir el servidor correcto para el cliente que está agregando.
Alguien sabe una manera bastante fácil de hacer esto? Empecé a hacer una macro para esto, pero mi memoria de macros es realmente mala atm, y no tengo la literatura correcta conmigo atm para buscarla.
Cualquier ayuda appriciated =)
De hecho, es una muy mala idea nombrar cualquier nombre.
Me parece que necesitas cuadros combinados en cascada. Necesitarás un poco de VBA.
Dos cuadros combinados llamados, por ejemplo, cboLocation y cboNodes, en un formulario llamado, por ejemplo, frmForm
cboUbicación
RowSource: SELECT ID, [Name]
FROM Locations
ORDER BY [Name]
ColumnCount: 2
ColumnWidths: 0;2.00cm ''''The second column can be any suitable width
LimitToList: Yes
Eventos:
Private Sub cboLocation_AfterUpdate()
Me.cboNode.Requery
End Sub
CboNode
RowSource: SELECT ID, NodeName
FROM Nodes
WHERE IP=[Forms]![frmForm]![cboLocation]
ORDER BY NodeName
ColumnCount: 2
ColumnWidths: 0;2.00 ''''Ditto
LimitToList: Yes
Eventos:
Private Sub cboNode_GotFocus()
If Trim(Me.cboLocation & "") = vbNullString Then
MsgBox "Please select location"
Me.cboLOcation.SetFocus
End If
End Sub
También necesitarás un evento de formulario:
Private Sub Form_Current()
Me.cboNode.Requery
End Sub