I am presently converting an access file to a filemaker solution and very new to filemaker.
In Microsoft access, I have a report that displays the output of a query which in turns queries information from a table. How should I build that in filemaker?
FileMaker is different in that views (called layouts in FileMaker), which display query results, are defined prior to use. For example, if you had a Customer table, and you wanted to find out which customers are in a specific city, you would would first create a new layout that displayed the fields you would want to see in the result, perhaps company name, city, contact person and phone.
Once you have the layout ready, you can either manually query the table directly in the layout using query-by-example. The specific steps would be:
From the View menu, choose Find Mode.
Click in the city field and type in the city you're searching for, ex. San Francisco.
Use the Requests menu and choose Perform Find, or just click the perform Find button in the status area at the top of the window.
A couple of points:
You can enter search criteria in as many fields as you like, result in an 'AND' search. For example, you could search for customers in San Francisco and that have a contact named Jorge.
To do an OR search, you need to add additional 'find requests' by using the Requests menu and choosing Add New Request.
In text fields, searches are by default 'begins with' searches. For example if you had a contact named Jorge, that contact would come up in a search for Jorge, Jor, or even J. If you need a whole word match, preface your criteria with =, ex =Jorge
Take a look at the search operators at the top of the screen where it says Insert: Operators. This option is only available in Find Mode. You'll find you can search for date ranges or wildcard characters, pretty much anything you need.
If this is a query you need frequently, such as a monthly aging report, the search can be encoded into a script and tied to a button, so that next time you need the report, you just push the button.
This is not really a programming question. Go To Layout mode and select Layout/New Layout Report from the menu. The wizard will guide you through generating the report. You will need to add a script to search for you data.
The best way to learn this is to create one of the starter solutions and see how reports work there
You can find a set of records using any layout that has the field(s) you want to search, regardless of its primary purpose. The found records will be displayed using that layout or you can switch to another layout, say a report layout.
After you have created ( or duplicated an existing Access layout ) the user can simply type Command+F and enter the city name in the city field. You can make this field a popup field in find mode to make it easier. Select or enter the city name and press enter.
Filemaker is so flexible that there are a great many ways to accomplish the Find but your users are probably familiar with entering the name in the report layout.
Always test your ideas with a number of users so as to keep them happy.
Related
Hello helpful internet strangers. I have created a fairly simple database for a client that has one main entry form and a search form that uses unbound text boxes for searching around 15 fields.
Details are below, but here is my problem: When I add new records and use the search form all the fields work as expected and return the correct results in the datasheet. When I sent the database to the client and they add new records, they are not returned in the search. I had them save the database with their records and send it back to me, and I confirmed that when I search for the records they added (I can see the records in the table) they are not returned in the search. If I add new records to the copy they sent me back, my records do appear in the search.
I created the database in Access 2013 on a Windows 8 machine. The client is using Access 2010 on Windows Vista.
The field types are text, dropdown and date. The dropdowns are all based on lookup queries so they store the id number in the main info table and pull the name value from the query. All of the fields in the search query are written to allow nulls, including the date range searches. And again, all fields test out correctly on my machine when I enter the records.
I went on site and compared settings and nothing jumped out at me except the different versions. I also watched the client enter new records and she didn't do anything 'wrong' or unusual. When I try to do a save as 2007-2010 it says I am using features that won't allow for that, but for the life of me I can't think of anything like that since this is really a very straightforward design.
I'm going to do a package as executable, but am highly doubtful that will help. Any insights?
Thanks in advance.
A few things. Most important - always, always develop in the earliest version of Access that the system will be used with. So, you need to rebuild, using Access 2010, period. Try creating a new blank database (in 2010) and importing the objects one (or a few) at a time. Make sure the system is split. One file for the FE (forms, queries, reports, code, etc.) and one for the BE (tables only). Make sure that the Filter On Load property of all forms is set to No. If the recordsource for the form contains a where clause, make sure that the newly entered records meet the criteria for the where clause.
I have an Access Web App and I am currently trying to make an OnClick macro for a field on one of my views so that when it is clicked, it will pop up another view to a specific record. Currently, my Where clause reads Where: [DistrictID]=[Districts].[DistrictID]
When I go into the App and click on the field with the macro, I get a pop up stating "Invalid field name 'Districts.DistrictID'."
The one and only site I could find that mentioned this error is: http://blogs.technet.com/b/the_microsoft_access_support_team_blog/archive/2014/08/04/access-app-invalid-field-name-lt-tablename-gt-lt-fieldname-gt-error-when-using-where-clause.aspx
This site says that it is due to case-sensitivity of the Where clause. My case matches my table/field exactly (I program in other languages, so I always match case just out of habit). I have quadruple-checked my spelling anyway, and even went so far as to copy-paste the field name into my Where clause. Still I get the error.
I have another view that does something similar with a different table/view that works perfectly (Where: [ContactID]=[Contacts].[ContactID]).
Does anyone have any idea why my Where clause is not working, or what I could be doing wrong?
Extra info if needed:
I would include photos, but the information in my database is sensitive, so I will do my best to describe the information in question:
I have 10 tables in the database. "Districts" is the one I am trying to work with. The Districts table has... quite a few fields, including DistrictID, DistrictName, EmailService, SpecialComment, and more. These four however are the fields being queried for the datasheet view which contains the macro. The OnClick macro is triggered for the SpecialComment field - when clicked, I want my District List view to pop up to the same district whose SpecialComment was clicked on (the Special Comment can run long sometimes, so if it is cut off by the size limit of the datasheet, I want people to be able to read the rest of the info without having to switch to another view and then find the district in the list). The District List view and the queried view both have the DistrictID field in the view, although it is hidden. I have tried unhiding the field in both views and it did not solve the problem - I had other Where clauses that used the DistrictID field before this that worked fine, so I doubted it would change anything anyway. Those Where clauses from before were substituted for other functions, so I don't have them to refer to to see why that one worked and this one does not.
If the view you are trying to open using OpenPopup macro action has a saved query as it's record source, then you must use the query name like this:
[FieldNameHere]=[NameOfQueryHere].[FieldNameInThatQuery]
If you are using a table name, then substitute the actual table name in the appropriate spot.
One thing to note which sometimes trips people up is that this technique won't work if the view you are trying to open uses an Embedded Query as its record source. The reason for this is you have no way of knowing what the embedded query name is that Access creates behind the scenes for the Access 2013 web app view. (It's actually a GUID name behind the scenes.)
I even had to add a special troubleshooting note in my book on this since I knew people would get tripped up on this (Page 584):
TROUBLESHOOTING
Why do I get an error trying to use a Where clause with an OpenPopup or ChangeView action when the view is based on an embedded query?
Access Services requires the Where clause to include the table or query name on which the view is based. When you define an embedded query as the record source for a view, Access Services creates a hidden system query that is not visible in the Navigation pane. Therefore, you cannot use a Where clause with the OpenPopup action or ChangeView action to open a view based on an embedded query. To work around this limitation, you can base your view on a saved query object. Note that Access Services creates a hidden system query as the record source also for Summary views. This means that you cannot use the Where clause argument to open a Summary view to a specific record or set of records. However, the workaround mentioned above won't work for Summary views.
I'm working with this table and want to offer the user a Lookup list in one column. I can do this easy if I want to use a whole table.
But I want to show in this lookup just a subset of data.
Like this: SELECT ID, Name FROM Items WHERE Type = 'SomeType'
I have a query, but when I go into Lookup Wizard, I cannot select Queries. Why is this?
This is Sharepoint 2010, editing the Web Database in Access.
If you build a continues form then you would simply drop in a combo box control for one of the columns and then you can build your SQL as you have using the query builder.
For most access applications it really never was very practical to allow users to open and edit data by using tables directly anyway.
And for published web applications you not even allowed to do as such on the web side (so you can edit tables client side, but not web side in a browser).
Using a continues form here should work just fine. So drop in a combo box, build your query as you have. Set number of columns to 2 and bind this combo box to whatever the underlying column is that this first ID value is to be saved to, and you off to the races.
I've been researching around a lot and I just can't find something I think should be very easy to someone with very little experience with Access 2007.
I am trying to create a report. The db has two tables. One with account, name and address. The other has account and product Id. The tables are joined on account. One customer/acct can have several product Ids.
I need to create a mailing that will have rich text in the body and list per account/customer the products they have.
I keep running into having the rich text(body of letter) showing each time the product Id is listed. Do I need to create something in code first? Like an array with the product Id so I can have it as one variable per account/customer? If so, where should I create this? In code, macro or expression builder?
Getting kind of frustrated I guess. I'm tempted to write something in C# as I have enough knowledge I think to make this happen, but I prefer to keep it all in Access. I might also be asked to keep it in access and c# is not what is used currently where this project is being built.
Rogue:
You should use a page header on your report containing the formatted customer/account info, probably: "Dear Account:... " You're treating each id as a separate form letter. What you want is each customer to get the letter via treating the customer as a page header and group footer, while the id's go into the details.
Then, the one or more products would be in the detail section.
The closing of the letter would be in the group (customer info) footer: "We look forward blah., blah sincerely.....
Then, set the property of the group footer to "force new page after section", meaning when you get to a new customer, eject to a blank page and start printing another letter.
Hope this helps.
I'm trying to make access conditionally only show rows that meet a certain condition, allow me to give you some background info before I proceed :
I've created an Access form and linked it to a test DB on my machine. The particular table I am interested in contains the following (important) rows :
ID , Office, Name, SecurityNumber
The thing is, ID is not unique. There are two Office locations, and each Office has it's own set of unique ID numbers. This means that ID 10 here and there may or may not be the same person. (this data comes out of a legacy security system we're not looking to change yet, so I cannot change it)
But ID -is- unique to each Office.
SO! I created an Access form with TABS! Two tabs, one for each office. What I am trying to achieve now is :
Have the ID/Name/SecurityNumber fields for each tab populate with only rows that match it's particular 'Office' value.
Thank you for reading and thank you for helping! :D
If you want the data for the office locations presented in separate tab page controls, you could use subforms on the pages which differ only in the WHERE clause of the queries used as their record sources. So for the Office1 subform, the query could be:
SELECT ID, Office, [Name], SecurityNumber
FROM YourTable
WHERE Office = 'Office1'
ORDER BY [Name];
Then for Office2, the query would be the same except for the WHERE clause:
WHERE Office = 'Office2'
As I understand your question, that approach would do what you're asking for.
However, that's not really the easy "Access way" to do it. Instead consider a combo box control to allow your users to choose which office they want to view. In the code for the combo's after update event, either modify the SELECT statement used as the form's record source or create a filter expression an apply it.
Also, since you're pulling the form's data from SQL Server, consider whether you want your form to load every record for the selected office location. It may not be much concern if you have only a few to moderate number of rows for each location, but if you'll be dealing with multiple thousands of rows it could be. In general, you should try to avoid pulling copious amounts of data across the wire; pull sparingly instead ... only what you need for the immediate task at hand.