Microsoft Access - Creating a single search function for multiple queries - sql

I have a form where I would like to include a search function. Optimally this would include a combo box where the user can select their Search Field, i.e. Name, SSN, etc. and a text box to retrieve input.
There will be two tables I'd like the information to pulled from. So I assume I'll need two subforms, each with a query for that table. Is there a way to tie in the combo and text boxes to both of these queries at once?
My ultimate goal is to allow users to search for a record (an address), which may be in one of two tables, then select that record and have it appended to a third table which will be a separate subform.
This is basically my solution to relating addresses with people to reduce the amount of typing necessary.

Related

Show a name instead of an id

I currently have these options set in a combo box:
This box will show the projectIDs that a current company has which is set with the criteria. I just want to show the name of the project as people will not know just by the id. If I remove the check box for the projectID it will just remove that field completly and not show anything. I have debugged what companyBox.Value is and it is indeed a number for a company and if taken this id and replaced it with the following query which is built from the picture and it returns the results I want. I just cant get the values to show in the combo box.
SELECT projects.projectName
FROM companys INNER JOIN projects ON companys.companyID = projects.companyID
WHERE (((companys.companyID)=7));
Gives me all the projectNames where the companyID is 7
And as seen below that same query just gives me blank spaces instead of the names:
Ok, if you have say a query, then as noted, then you can use a "join" to pull in the other table (based on that "projectID").
So, for a general report etc., then your approach of using the query you have is correct.
HOWEVER!!!
For a combo box? They have this feature and ability built in. In other words you do NOT in general need a join.
The combo box has two parts:
A sql query that "drives" or "fills" the combo box. This can (and will be) of course based on the Projects table.
VERY important:
Our combo box is to save, store, put, use the project ID into a column in our CURRENT form. That form of course is based on a differnt table (the forms current table). So, keep in mind the two concpets:
Combo box can be driven by any table to display data.
Combo box will/can use a column from that "other" table to SAVE into a current column on the current form.
Now of course the Project "id" is the VALUE we want, but we sure as don't want to display that "project id" value, since as you note, humans want the nice looking text.
First Rule:
ALWAYS, but ALWAYS make sure the FIRST column of the combo box "sql query" is the column we WANT to save into the current form, but ALSO the column we are going to HIDE AND NOT show to the user.
So, a combo box can with great ease HIDE the first column. You can hide other columns, but as a general rule a VERY HIGH number of my combo boxs will have two columns. So, you might need company "id", but would want to display company name as nice text to the user, but store/save/use the "id" of company for this purpose.
So, in your case? Change the order of your columns.
You want:
ProjectID, ProjectName, and you ALSO can continue to have a filter based on company.
So, once you get above setup, and you WILL NOT need a sql join. Remember, the combo box has it own "whole sql statement" based on table projects.
So, the combo box will:
Save/store/use the ProjectID when you select a project.
And it will display the project name, but behind the scenes it will use + save ProjectID.
So, just make sure that you set the length of the first column in the combo box to 0 (to hide that projectID from display).
Next, make sure you set WHICH column value from the query the combo box is to save.
That column will be the FIRST column, so you want to set that to 1
Your combo settings will look something like this:
In above, the CONTROL source is your CURRENT form and table.
So, I want to get a Hotel "ID" from the table hotels, but I am going to save the results of the combo box selection INTO a column called Hotel_ID
And note VERY careful - I set the bound column = 1 (that is the FIRST value from the query that drives the combo box.
Next up:
We want to hide the first column value, so you need this setting in format tab of the property sheet for the combo box:
NOTE VERY close in above. I set the FIRST column width = 0. this is HOW you hide the "ID" of hotels - I only want the user to see the nice hotel name. (or in your case Project name).
But, the 2nd column, I have a width for the Hotel name (or in your case project name).
So, make your first column in the query for the combo box the "id" of project id. Set the width of the first column = 0.
So, the query that drives the combo box? It is based on the ONE table, but you need to ensure that the "id" that you going to use is the first column, and simple hide it from display.
So, a combo box has a sql query that drives the combo box, and that query in most cases will NOT be the current table.
So, you have to set BOTH settings (the column the combo sql query will use - but to avoid confusing, then just adopt the habit of making the 1st column the "id" or value you want from that sql.
But, after setting above, you STILL have to set what column to shove/put that column into on the current form. (that setting is the control source).
In effect, a combo box is a kind of look-up into the other table, and it can display nice user friendly text columns, but still use + store the ID.
So, your query should look more like this:
SELECT ID, projectName
FROM projects
WHERE (((companys.companyID)=7));
I don't know if your first column of Projects table is "ID" (or is it ProjectID), but as you can see, the combo box ONLY needs to be based on the one table, and with our new rule - we always use the first column of the query the "id" value we want.
Now, of course the above is "hard coded" for company, and your original query that drives the combo box was fine - just that the order of the columns display was incorrect.

Excel VBA multiple column combo box

I was wondering if it is possible to pull through data from SQL covering multiple columns but displaying only one column in a Combo box?
So to explain:
I have a table in SQL call Portfolio and from an Excel Combo box I need users to select the required portfolio. Ideally I'd like to display just the portfolio name, however I am able to create multiple portfolios with the same name. The thing that makes these portfolios unique is the Portfolio ID.
So what I'm trying to do is pass into SQL the portfolio ID while the user selects the portfolio name from the combo box.
Does anyone know if this is possible?
Thanks

Loop/Iterate through a SQL query in Access (without VBA)

I have a rather unique problem that sits between the solution sets I've been able to find. I have a database containing tables that need iterative select queries with updating input parameters. As an example, I have an equipment table that contains a pairing of a technology with a sister tech, and the mechanisms through which they communicate:
Table Fields:
TechID1
TechID1Port
TechID2
TechID2Port
Example: Radio communicates (through its low/high band antenna) with Basestation (through its antenna port)
I have working SQL code that runs when users select TechID1 from a Combobox and the Combobox value filters the WHERE statement. However, I need to add levels of interaction based on a just added Combobox (values:1-n). The end goal is to iterate the query as done here, but without VBA, as this solution needs to be replicated for many Access tables and seamlessly transferred to Oracle/SQL Server in the medium-term.
Example of desired nth level results based on Radio selection: List of all techs that directly interact with Radio (plus associated info), with an appended list of all techs that interact with Basestation and other 1st level results (no duplicates or trackbacks to Radio), etc to the nth level.
For the above to work without VBA, I realize there is likely a series of similar/identical queries that need to run, with the ability to analyze only the row entries for the interaction level below the current run. One simple potential solution I've looked at is nested subforms that allow users to expand higher interactions as they wish, but I can't find a way to subform and filter a table onto itself.
Big thanks in advance!
J
Have you tried to use temporary tables.
You would be able to filter with different (sub)query's

Populate combo box with distinct values from one table based on values existing in another?

I am trying to populate a combo box with distinct values pulled from a clients table, but only if those clients exist in the mfgOrders table. I have set the Row Source to the following query:
SELECT DISTINCT Client.ClientName FROM Client
INNER JOIN mfgOrders ON Client.id=mfgOrders.client;
When I switch to Datasheet view, I can see all the distinct clients that are also in the mfgOrders table. The problem is that this does not populate in the combo box.
I originally thought that this may be due to the data size, but oddly enough when I select ClientName from Client, it will populate the box successfully but with ALL clients.
Unfortunately, I don't want all clients in the combo box. Just the clients which also appear in the mfgOrders table.
I'm stumped on this one. Is my logic incorrect?
It appears that when linking a drop-down list to a query, the list will be populated based on how many fields are queried.
In this case, despite the first field being used simply to create the union, Access created a combo box with 2 columns, the first of which had a width of 0".
This appears to have been done because the "show" box for the first field in the query was unchecked. The result was a blank list.
To fix the error I simply re-arranged the query.

How can I create multiple field sets in a list item in SharePoint 2010

Spawnable Field sets, bunches of them - all on a single list item. Can it be done?
In our particular instance, we're creating a look-up field and a couple of text fields that relate to the item.
The user needs to be able to generate those field sets multiple times in the same item, to look up a distinct value, and also enter information about that look-up in the other text fields.