It is straightforward to establish a one to many relationship by linking the primary key in the one table to the foreign key in the many table. Access shows the relationship with a single arrow. How can I (in or out of VBA code) establish a one to many relationship from a table whose primary key consists of two contiguous fields (very common) to a table containing the same two fields as its foreign key?
![]() |
There are isolated problems with current patches, but they are well-known and documented on this site. |
SIGN IN | Not a member? | REGISTER | PLUS MEMBERSHIP |
-
One to many – Multiple field keys (Access 2002/SP2)
Home » Forums » AskWoody support » Productivity software by function » MS Access and database help » One to many – Multiple field keys (Access 2002/SP2)
- This topic has 6 replies, 3 voices, and was last updated 22 years, 3 months ago.
AuthorTopicJohn Littell
AskWoody PlusFebruary 14, 2003 at 5:50 pm #383399Viewing 1 reply threadAuthorReplies-
WSAlexya1
AskWoody LoungerFebruary 14, 2003 at 8:41 pm #653771Hi there…
This MAY be a waste of time since I only have Access 97 SR2 at work, but I’ll give you this answer and hope it’s close to how you do it in that version.
k… I’ve attached an example for you to see… Here’s how I do it…
1) For the One side of your relationship… from table design mode… you just select both fields (rows in the fld definitions) that will make up the key, right click and select primary key… (Make sure the indexing is as you want it…) … You should see the key next to both field names… Save the table design…
2) Then in the Many side… table design mode… Ensure that the two corresponding have indexing “Yes (Duplicated Ok)” … Save the table design…
3) Then add both tables… in order (tblOne first, then tblMany) to the relationships window… Drag the first field of the primary key in the One table over to the first foreign key in the Many table… A window should pop up where you define the relationships…. Fill in the second field of the primary key and the corresponding one in the Many table… Check the “Enforce Referential Integrity” option… Click OK… As soon as the window disappears you should see the symbols for One-To-Many relationships in both places…All done…
Hope this makes sense… and HOPE it works the same in 2002… Let me know how it goes… I don’t get the opportunity to answer questions on here often…
-
WScharlotte
AskWoody Lounger -
John Littell
AskWoody PlusFebruary 15, 2003 at 8:06 pm #653935Trudi,
Thank you very much for the information. It worked exactly as you said it would. Now the relationship window shows two one to many connection link lines one on top of the other. I proved, I think, that the two links are parts of one combined link: deleting one link (line) deleted them both. (Incidentally, while I would have liked to see from your .mdb attachment if your example looked like what I have, I was unable to open it. It seems that when Access 2002 opens an order DB for the first time it has to be able to write to it. I got an error saying that the DB was read only.)Thanks again, John
-
-
WScharlotte
AskWoody LoungerFebruary 15, 2003 at 2:05 am #653830Are you working with ADO or DAO? Here’s an ADO routine that demonstrates creating a relationship in code. If you are working with a multifield key, you add the individual fields by appending both columns.
Sub CreateRelationship(strDBPath As String, _ strForeignTbl As String, _ strRelName As String, _ strFTKey As String, _ strRelatedTbl As String, _ strRTKey As String) Dim catDB As ADOX.Catalog Dim tbl As ADOX.Table Dim key As ADOX.key ' Note that VB "enforces" the lowercasing of ' "key" in ADOX.key. Set catDB = New ADOX.Catalog ' Open the Catalog object. catDB.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source =" & strDBPath Set key = New ADOX.key ' Create the foreign key to define the relationship. With key ' Specify name for the relationship in the Keys collection. .Name = strRelName ' Specify the related table's name. .RelatedTable = strRelatedTbl .Type = adKeyForeign ' Add the foreign key field to the Columns collection. .Columns.Append strFTKey ' Specify the field the foreign key is related to. .Columns(strFTKey).RelatedColumn = strRTKey End With Set tbl = New ADOX.Table ' Open the table and add the foreign key. Set tbl = catDB.Tables(strForeignTbl) tbl.Keys.Append key Set catDB = Nothing End Sub
-
John Littell
AskWoody PlusFebruary 15, 2003 at 8:13 pm #653940 -
WScharlotte
AskWoody Lounger
-
-
Viewing 1 reply thread -

Plus Membership
Donations from Plus members keep this site going. You can identify the people who support AskWoody by the Plus badge on their avatars.
AskWoody Plus members not only get access to all of the contents of this site -- including Susan Bradley's frequently updated Patch Watch listing -- they also receive weekly AskWoody Plus Newsletters (formerly Windows Secrets Newsletter) and AskWoody Plus Alerts, emails when there are important breaking developments.
Get Plus!
Welcome to our unique respite from the madness.
It's easy to post questions about Windows 11, Windows 10, Win8.1, Win7, Surface, Office, or browse through our Forums. Post anonymously or register for greater privileges. Keep it civil, please: Decorous Lounge rules strictly enforced. Questions? Contact Customer Support.
Search Newsletters
Search Forums
View the Forum
Search for Topics
Recent Topics
-
184 MILLION Passwords on FBook, Google, MS & Netflix hacked/leaked
by
ClearThunder
5 minutes ago -
T-Mobile’s T-Life App has a “Screen Recording Tool” Turned on
by
Alex5723
20 minutes ago -
Windows 11 Insider Preview Build 26100.4202 (24H2) released to Release Preview
by
joep517
3 hours, 7 minutes ago -
Windows Update orchestration platform to update all software
by
Alex5723
7 hours, 40 minutes ago -
May preview updates
by
Susan Bradley
9 hours, 18 minutes ago -
Microsoft releases KB5061977 Windows 11 24H2, Server 2025 emergency out of band
by
Alex5723
9 hours, 25 minutes ago -
Just got this pop-up page while browsing
by
Alex5723
7 hours, 20 minutes ago -
KB5058379 / KB 5061768 Failures
by
crown
1 hour, 18 minutes ago -
Windows 10 23H2 Good to Update to ?
by
jkitc
50 minutes ago -
At last – installation of 24H2
by
Botswana12
23 hours, 11 minutes ago -
MS-DEFCON 4: As good as it gets
by
Susan Bradley
4 hours, 3 minutes ago -
RyTuneX optimize Windows 10/11 tool
by
Alex5723
1 day, 11 hours ago -
Can I just update from Win11 22H2 to 23H2?
by
Dave Easley
1 day, 4 hours ago -
Limited account permission error related to Windows Update
by
gtd12345
2 days ago -
Another test post
by
gtd12345
2 days, 1 hour ago -
Connect to someone else computer
by
wadeer
1 day, 19 hours ago -
Limit on User names?
by
CWBillow
1 day, 22 hours ago -
Choose the right apps for traveling
by
Peter Deegan
1 day, 12 hours ago -
BitLocker rears its head
by
Susan Bradley
20 hours, 24 minutes ago -
Who are you? (2025 edition)
by
Will Fastie
19 hours, 21 minutes ago -
AskWoody at the computer museum, round two
by
Will Fastie
1 day, 14 hours ago -
A smarter, simpler Firefox address bar
by
Alex5723
2 days, 11 hours ago -
Woody
by
Scott
2 days, 20 hours ago -
24H2 has suppressed my favoured spider
by
Davidhs
20 hours, 1 minute ago -
GeForce RTX 5060 in certain motherboards could experience blank screens
by
Alex5723
3 days, 10 hours ago -
MS Office 365 Home on MAC
by
MickIver
3 days, 4 hours ago -
Google’s Veo3 video generator. Before you ask: yes, everything is AI here
by
Alex5723
4 days ago -
Flash Drive Eject Error for Still In Use
by
J9438
19 hours, 45 minutes ago -
Windows 11 Insider Preview build 27863 released to Canary
by
joep517
4 days, 19 hours ago -
Windows 11 Insider Preview build 26120.4161 (24H2) released to BETA
by
joep517
4 days, 19 hours ago
Recent blog posts
Key Links
Want to Advertise in the free newsletter? How about a gift subscription in honor of a birthday? Send an email to sb@askwoody.com to ask how.
Mastodon profile for DefConPatch
Mastodon profile for AskWoody
Home • About • FAQ • Posts & Privacy • Forums • My Account
Register • Free Newsletter • Plus Membership • Gift Certificates • MS-DEFCON Alerts
Copyright ©2004-2025 by AskWoody Tech LLC. All Rights Reserved.