2009-05-29 7 views
4

J'ai 3 tables qui ressemblent à ceci:Existe-t-il un moyen simple de remplir la liste déroulante dans ce schéma de base de données Access?

Location    Node     Sektor 
-----     -------    ------- 
PK: ID - Autonumber  PK: ID - Autonumber PK: ID - Autonumber 
Name     NodeName    Sektor 
Height     Aksess    Frequency 
Latitude    Tag     Coverage 
Longtitude    IP 

Chaque emplacement est connecté à plusieurs nœuds qui est relié à plusieurs sektors.

Maintenant, la partie intéressante. Dans Microsoft Access, vous pouvez créer des schémas qui permettent aux utilisateurs d'ajouter facilement des données. J'ai la table finale qui ressemble à ceci que je veux utiliser mon schéma pour insérer des données dans:

Customers 
------- 
PK: CustID 
Name 
Subscribtion 
Sektor 

C'est là où je veux la magie à faire. Je veux que l'utilisateur puisse d'abord sélectionner un emplacement, puis être présenté avec les nœuds disponibles (de préférence dans la liste déroulante) et enfin il peut choisir le sektor correct pour le client en ajoutant.

Quelqu'un sait-il un moyen assez facile de le faire? J'ai commencé à faire une macro pour cela, mais ma mémoire de macros est vraiment mauvaise atm, et je n'ai pas la littérature correcte avec moi atm pour le rechercher.

Toute aide appriciated =)

Répondre

5

Il est une très mauvaise idée en effet de nommer quoi que ce soit Nom.

Il me semble que vous avez besoin de comboboxes en cascade. Vous aurez besoin d'un petit VBA.

Deux boîtes combo appelées, par exemple, cboLocation et cboNodes, sur un forrm appelé, par exemple, frmForm

cboLocation

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 

Événements:

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 

Événements:

Private Sub cboNode_GotFocus() 
    If Trim(Me.cboLocation & "") = vbNullString Then 
     MsgBox "Please select location" 
     Me.cboLOcation.SetFocus 
    End If 
End Sub 

Vous aurez également besoin d'un événement formulaire:

Private Sub Form_Current() 
    Me.cboNode.Requery 
End Sub 
+0

Je vais essayer maintenant. Les noms des tables sont juste de la fiction. Je sais que c'est un mauvais naem: D thx tho. –

+0

Brillant! Cela marche! Je vous remercie! –

Questions connexes