Solved

will Incorrectly setting relationships between two tables for a query not result in data enter

Posted on 2014-11-07
11
156 Views
Last Modified: 2014-12-02
Hello,

I am having a hard time setting my relationship bwtween my two tables to allow me to enter data in once I create a form from my query (based off the two tables)
0
Comment
Question by:Jass Saini
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 3
  • 3
  • +1
11 Comments
 
LVL 34

Expert Comment

by:Mike Eghtebas
ID: 40429845
Mostly likely these tables have parent/child relationship. Consider making a form where you can see (edit) parent fields. And then add a subform using the other table for viewing or edit.

Above will work assuming the tables are designed correctly.

Mike
0
 
LVL 85
ID: 40432971
I'd agree with Mike - create a Mainform/Subform setup, and go from there. While it's possible to create forms based on these types of queries, Edits/Adds/Deletes can be very tricky to get right.

If you are NOT using a query that has a Parent/Child relationship, then please show the SQL of that query, and explain who the two tables in the query are intended to interact (and how they're related).
0
 
LVL 37

Assisted Solution

by:PatHartman
PatHartman earned 333 total points
ID: 40433004
Relationships are not made in queries.  They are defined in the relationships window and should be enforced with RI.  In a query you can JOIN any two columns as long as the data types are compatible whether the join makes sense or not.  Typically in a query, your join would mimic the relationship defined for the two tables.

In a 1-many relationship (the most common), the join fields will be the primary key of the one-side table to a data field in the many-side table.  The data field may be part of a multi-column PK for the many-side table.
In a 1-1 relationship (uncommon), the join fields will be the primary key of one table to the primary key of the other table.  In this case, one of the tables will probably have an autonumber as the PK and that should be designated as the "parent".  The other table will have a long integer as the PK.
0
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 

Author Comment

by:Jass Saini
ID: 40453404
Hello,

Unfortunately I was given a form to work with as well....Just cleaning up other peoples messes..

Here is my query:

SELECT Final_Table.ID, dbo_tblOrgLook_master.Analyst, dbo_tblOrgLook_master.Org, dbo_tblOrgLook_master.OrgName, dbo_tblOrgLook_master.CostCenter, dbo_tblOrgLook_master.Fund, dbo_tblOrgLook_master.PEC, dbo_tblOrgLook_master.ProgramName, Final_Table.CostCen, Final_Table.[Fund:], Final_Table.BC1_Change, Final_Table.TotalBC1, Final_Table.BC2_Change, Final_Table.TotalBC2, Final_Table.BC3_Change, Final_Table.TotalBC3, Final_Table.BC4_Change, Final_Table.TotalBC4
FROM Final_Table, dbo_tblOrgLook_master
WHERE (((dbo_tblOrgLook_master.Analyst) In ('D.Heitz')) AND ((dbo_tblOrgLook_master.Org) In ('5340')) AND ((dbo_tblOrgLook_master.CostCenter) In ('0560000000')) AND ((dbo_tblOrgLook_master.Fund) In ('15G0010000')) AND ((dbo_tblOrgLook_master.PEC) In ('2560000')));


I don't understand the "the data field may be part of a multi-column PK for the many-side table"?
0
 
LVL 85

Accepted Solution

by:
Scott McDaniel (Microsoft Access MVP - EE MVE ) earned 167 total points
ID: 40453957
Your tables are not Joined ... a query with a Join would look something like this:

SELECT Final_Table.ID, dbo_tblOrgLook_master.Analyst, dbo_tblOrgLook_master.Org, dbo_tblOrgLook_master.OrgName, dbo_tblOrgLook_master.CostCenter, dbo_tblOrgLook_master.Fund, dbo_tblOrgLook_master.PEC, dbo_tblOrgLook_master.ProgramName, Final_Table.CostCen, Final_Table.[Fund:], Final_Table.BC1_Change, Final_Table.TotalBC1, Final_Table.BC2_Change, Final_Table.TotalBC2, Final_Table.BC3_Change, Final_Table.TotalBC3, Final_Table.BC4_Change, Final_Table.TotalBC4
FROM Final_Table JOIN dbo_tblOrgLook_master AS olm ON Final_Table.SomeField=olm.SomeRelatedField
WHERE (((dbo_tblOrgLook_master.Analyst) In ('D.Heitz')) AND ((dbo_tblOrgLook_master.Org) In ('5340')) AND ((dbo_tblOrgLook_master.CostCenter) In ('0560000000')) AND ((dbo_tblOrgLook_master.Fund) In ('15G0010000')) AND ((dbo_tblOrgLook_master.PEC) In ('2560000')));

In other words, you "tell" Access which Field (or Fields) are the common links between those two tables, and Access may then allow you to update the query. Unless you can create that Join, your query won't be updateable.
0
 
LVL 85
ID: 40453960
And again - if you can explain how those two tables are intended to interact, and how they're related, we might be able to give you more guidance.
0
 
LVL 37

Assisted Solution

by:PatHartman
PatHartman earned 333 total points
ID: 40455160
An un-specified join as you had in your example creates a Cartesian Product where all rows of tblA are matched to all rows in tblB and the resulting recordset is not updateable.  Changing the join as Scott suggested to be specific will probably make the query updateable assuming he guessed correctly on how the tables should be joined.
0
 

Author Comment

by:Jass Saini
ID: 40476576
Here is my new query..and now I am getting an error.  Syntax error in FROM clause

SELECT DISTINCT Final_Table.ID, dbo_tblOrgLook_master.Analyst, dbo_tblOrgLook_master.Org, dbo_tblOrgLook_master.OrgName, dbo_tblOrgLook_master.CostCenter, dbo_tblOrgLook_master.Fund, dbo_tblOrgLook_master.PEC, dbo_tblOrgLook_master.ProgramName, Final_Table.[Org Name:], Final_Table.CostCen, Final_Table.[Fund:], Final_Table.[Line Item:], Final_Table.[Item Number:], Final_Table.[Total Initial:], Final_Table.[BC1Change], Final_Table.[TotalBC1], Final_Table.[BC2Change], Final_Table.[TotalBC2], Final_Table.[BC3Change], Final_Table.[TotalBC3], Final_Table.[BC4Change], Final_Table.[TotalBC4]
FROM Final_Table JOIN dbo_tblOrgLook_master  AS olm ON Final_Table.PEC = dbo_tblOrgLook_master.PEC
WHERE dbo_tblOrgLook_master.Analyst IN('P.Subia') AND dbo_tblOrgLook_master.Org IN('4424') AND dbo_tblOrgLook_master.CostCenter IN('1160000000') AND dbo_tblOrgLook_master.Fund IN('15G5010000') AND dbo_tblOrgLook_master.PEC IN('5020090');
0
 
LVL 37

Expert Comment

by:PatHartman
ID: 40476921
I'll take one stab at fixing the problems.  If my suggestions don't help, please start a new question.
1.  JOIN should be INNER JOIN
2. Once you assign an alias, you MUST use it so any place in the select or where clause where you have dbo_tblOrgLook_master, it MUST be changed to olm

Also, why are you using In(..) rather than =?  It may not make any difference to the query engine but if it does, the difference will be negative rather than positive so unless you have multiple values, go with the simpler expression.

And finally - use the QBE to build your queries.  It would have found both of the errors and not allowed you to save the query.
0
 

Author Comment

by:Jass Saini
ID: 40476962
Hello,

Can I use two SameRelatedFields in the FROM clause?  I am using In rather than = is because the selection is coming from my first form.  I can attach my DB if you like??
0
 
LVL 37

Expert Comment

by:PatHartman
ID: 40477064
If the two errors I pointed out didn't resolve the problem, please start a new question.

The In() suggestion was a helpful hint.  It has nothing to do with the problem.  If you are building the string on the fly, then don't make any changes if your code is set to allow multiple values.
0

Featured Post

On Demand Webinar - Networking for the Cloud Era

This webinar discusses:
-Common barriers companies experience when moving to the cloud
-How SD-WAN changes the way we look at networks
-Best practices customers should employ moving forward with cloud migration
-What happens behind the scenes of SteelConnect’s one-click button

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Phishing attempts can come in all forms, shapes and sizes. No matter how familiar you think you are with them, always remember to take extra precaution when opening an email with attachments or links.
If you need a simple but flexible process for maintaining an audit trail of who created, edited, or deleted data from a table, or multiple tables, and you can do all of your work from within a form, this simple Audit Log will work for you.
Get people started with the utilization of class modules. Class modules can be a powerful tool in Microsoft Access. They allow you to create self-contained objects that encapsulate functionality. They can easily hide the complexity of a process from…
Polish reports in Access so they look terrific. Take yourself to another level. Equations, Back Color, Alternate Back Color. Write easy VBA Code. Tighten space to use less pages. Launch report from a menu, considering criteria only when it is filled…

688 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question