What would be a good way to join on topmost record in acumatica report designer. I'm thinking in terms of DAC views but it is not helping much. So we have two tables and I would like to join on SELECT TOP 1 * from Table.
Create an View in sql ("select top 1 ..."), create a DAC for that view, then join in report designer on that sql view.
Related
We want to have a sales order dashboard where we only show orders for certain sales people based on the logged in user. For example, we have sales people BB and CR who share an assistant TP. BB can see his orders on the dashboard. CR can see his orders on the dashboard. TP can see orders for both of them on his dashboard. We also have people outside of sales who need to see all orders. We want to do all of this without having to create a bunch of custom dashboards. We wanted to maintain 2 dashboards - one filtered one for sales people and one unfiltered one for everyone else.
We have gotten close to solution by using a generic inquiry. We created custom fields on the salesperson that point back to a logged in user (UserID1 and UserID2). Multiple custom fields were used because a single sales person could be visible to 2 people. We then joined SOOrder to SalesPerson inside our GI. We then wanted to join the Users table on (SalesPerson.UserID1 = Users.PKID AND SalesPerson.UserID1 = #me) OR (SalesPerson.UserID2 = Users.PKID AND SalesPerson.UserID2 = #me). That would allow us to create a filter where Users.PKID is not null to limit the view for sales people and then not use any filter on the non-sales dashboard.
The problem is that #me is not available on the Relations section. It is only available on the conditions section. We tried to just have the join of SalesPerson.UserID1 = Users.PKID or SalesPerson.UserID2 = Users.PKID and then creating the condition for the #me portion. The issue there is that it only shows records with a match. That won't work for non-sales people.
Is there some way to include #me or an equivalent on the relations tab? Any better way to accomplish this?
Built-in variables like '#me' aren't well documented which raises questions about support of this feature.
Try this instead:
In generic inquiry TABLES tab, add table 'PX.Data.AccessInfo'.
In PARAMETERS tab, add a new parameter (ex: 'P1') and set the Schema Field value to 'Accessinfo.UserID' (use 'Accessinfo' or the alias for that table declared in TABLES tab).
In the RELATIONS tab in the join condition Child Field you can reference the '[P1]' variable.
Accessinfo DAC contains current record of the logged in user and reflects the information you see when you click your profile in the top right of Acumatica pages. If the solution doesn't work right away you can debug it with the Request Profiler page to look up the generated SQL query for the GI.
I have a table called order which have columns called Region and OrderNumber. My client want region as slicer in page and OrderNumber as a page level filter. I have a grid visuals which displays details of orders. Grid includes OrderNumber column as well. So a sales person click on region in slicer and trying to go to select orderNumber in page level filter, OrderNumber is filtering data based on slicer. Is it something that slicers do not interact with page level filter. If yes, help me in providing workaround to make slicer interact with page level filters.
In your case the easy way to have another slicer, which contains the OrderNumber so that when Region selected you'r second slicer would be filtered:
You can also, manage interactive filters upon your requirement as mentioned in screenshots:
Is there a way in Acumatica report designer to union two tables? I find that you have to link table to use them in reports. For example can you get data based on a date range from AP Invoice and AR Invoice without having a third table to link them together?
Thanks
A DAC created over a SQL VIEW with UNION ALL and added to ReportDesigner is likely the best approach, but perhaps a FULL JOIN will work for your purpose.
This link describes Full Join or Union All:
https://www.tutorialspoint.com/sql/sql-full-joins.htm
For your example in ReportDesigner, APInvoice could be FULL JOIN to ARInvoice on FinPeriod and Vendor/Customer on relationships tab, offer From/To date range parameters on parameters tab with defaults such as #monthStart and #monthEnd. Conditions tab could limit results to WHERE DocBal NotEqual 0. Display textboxes could use an IsNull such as:
=IsNull([APInvoice.DocBal],[ARInvoice.DocBal])
Here is my query. I am new to Cognos and using Cognos 10. And I am having a bit difficulty in developing a report which uses a Sub Query and an Inner Join Query.
1.
SELECT ID, BATCH_DT, LOCIT FROM AOI.TEMP_BRICK
WHERE BATCH_DT < (SELECT MAX(DATE) FROM CALENDAR)
2.
SELECT A.ID, B.SAL FROM TABLE as A LEFT OUTER JOIN TABLE as B
WHERE A.ID=B.ID
First, you must understand that Cognos generates its own SQL. In order for it to do that, you must define relationships between tables in Cognos Framework Manager. Once that is done your report has 3 major parts, The Report Page(s), the Prompt Page(s) and the Query(s).
a.) Setup the CALENDAR and AOI.TEMP_BRICK tables in Cognos. You may want to define a relationship between TEMP_BRICK.BATCH_DT and CALENDAR.DATE (assuming your calendar has date records for every date that may be present in TEMP_BRICK).
b.) Next you would create a new List Report. You would grab your ID, BATCH_DT and DATE fields into the list. (Date would come from the calendar if you decided to link the two tables in step A, otherwise you use the BATCH_DT field in TEMP_BRICK.)
c.) You would open the Query pages and see that Cognos has already created one query, called Query1. You need to create a new query (we will call it qryMaxDate). That query would have one element, 'DATE' from CALENDAR. On the properties of the 'DATE' field in Data Items, you would chagne the 'Agregate Function' from None to 'Maximum'.
d.) Now edit your Query1, add a Filter on the Date from that query. In the Expression Definition, select the Queries tab and drag the 'DATE' field from your qryMaxDate. Should look something like this [Batch Date] = [qryMaxDate].[Date]
e.) You are done! Run the report. in this case, the user running the report is giving no input, so no Prompt page is necessary.
a.) Setup Table A and B in the Framework Manager. You need to define a relationship between Table A and B in Framework Manager via a Star Schema (define A.ID = B.ID and specify 1 to n, or n to 1).
b.) Create a new report and simply drag in elements from table a and table b. Their relationship is already defined in Framework manager, so there is no need to re-define it while writing reports.
Your second example is a great demonstration of the power of BI programs like Cognos. Report Authors dont need to fully understand the ways that two tables are joined... they simply pull out elements from each table and they work, as the relationships are already defined in the Framework.
I have a list within SharePoint 2007 and I've created a View that filters based on time ([Today]-30). I also have the View set to Group By a People or Group column. The end result is a View that displays all entries in the past 30 days grouped by individual.
So, what I'd like to do is only include those individuals that have 2 or more entries to display within the view. Is there a way to do this?
Thanks,
Brian
Views built through the UI are based on CAML queries, which only allow filters to be applied to items. As you can see from the schema, filters cannot be applied to group bys.
http://msdn.microsoft.com/en-us/library/ms415157.aspx
Your options are:
Filter it with some combination of sharepoint designer and jquery. This filtering would be done after the results are retrieved from the database, so it wont be ideal.
Write a custom web part.