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

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)
Jass SainiAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Mike EghtebasDatabase and Application DeveloperCommented:
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
Scott McDaniel (Microsoft Access MVP - EE MVE )Infotrakker SoftwareCommented:
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
PatHartmanCommented:
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
Ultimate Tool Kit for Technology Solution Provider

Broken down into practical pointers and step-by-step instructions, the IT Service Excellence Tool Kit delivers expert advice for technology solution providers. Get your free copy now.

Jass SainiAuthor Commented:
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
Scott McDaniel (Microsoft Access MVP - EE MVE )Infotrakker SoftwareCommented:
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

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
Scott McDaniel (Microsoft Access MVP - EE MVE )Infotrakker SoftwareCommented:
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
PatHartmanCommented:
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
Jass SainiAuthor Commented:
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
PatHartmanCommented:
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
Jass SainiAuthor Commented:
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
PatHartmanCommented:
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
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Microsoft Access

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.