Händelser
Power BI DataViz World Championships
14 feb. 16 - 31 mars 16
Med 4 chanser att komma in kan du vinna ett konferenspaket och ta dig till LIVE Grand Finale i Las Vegas
Läs merDen här webbläsaren stöds inte längre.
Uppgradera till Microsoft Edge och dra nytta av de senaste funktionerna och säkerhetsuppdateringarna, samt teknisk support.
Model-driven apps provide experiences to quickly find records using quick find search or Grid search. With these experiences, users have a single text input that can be applied to multiple columns in a single table.
Model-driven apps also provide a search box that uses the Dataverse search APIs when Dataverse search is enabled. With Dataverse search, the results can include results from multiple tables for a more relevant search capability. When Dataverse search isn't enabled, model-driven apps provide a multiple-table quick find (categorized search) experience that combines results of up to 10 quick find queries. Learn more about search options available for model-driven apps.
Anteckning
Quick find queries might not provide usable experiences for for every situation. See Limitations
Consider using the Dataverse search APIs instead of quick find queries for the following scenarios:
Quick find queries use the following pattern:
They include a single filter using an 'OR' filter operator.
type
attribute is set to 'or'
.You can add more filters, but they are evaluated only after the quick find filter results are processed.
The 'OR' filter is marked as a quick find filter:
isquickfindfields
attribute is set to '1'
.true
.The filter has more than one condition. When only one condition is evaluated, the query has better performance when it's processed as an ordinary query.
All of the conditions within the filter use the 'Like' operator:
operator
attribute is set to 'like'
.The 'like' operator requires a search string that ends with %
.
Anteckning
The 'Like' operator is the only supported operator for quick find queries. It is the only operator necessary for the application scenarios quick find queries are designed to support. Other operators have not been tested.
How you write a quick find query depends on whether you're using QueryExpression or FetchXml.
Each of the examples in the following tabs do the same thing:
Accept a single search string parameter. This value could be a partial name, telephone number, email address, or account number.
Create a quick find query that tests the search string against the following account table columns:
telephone2
telephone1
emailaddress1
accountnumber
name
Filters out accounts that aren't active.
Orders the results by account name.
You can use QueryExpression with the Dataverse SDK for .NET.
/// <summary>
/// Returns active accounts using quick find filter
/// </summary>
/// <param name="service">The authenticated IOrganizationService instance to use.</param>
/// <param name="searchString">The string to search for</param>
/// <returns>Collection of matching account records</returns>
static EntityCollection QuickFindActiveAccountsQueryExpression(
IOrganizationService service,
string searchString)
{
// Wildcard required for ConditionOperator.Like
if (!searchString.EndsWith('%'))
{
searchString += '%';
}
QueryExpression query = new("account")
{
ColumnSet = new("accountid",
"name",
"accountnumber",
"primarycontactid",
"address1_city",
"telephone1",
"emailaddress1"),
Criteria = new()
{
Filters =
{
new (LogicalOperator.Or)
{
// Specify Quick find filter
IsQuickFindFilter = true,
Conditions =
{
{ new (attributeName: "telephone2",
ConditionOperator.Like,
value: searchString) },
{ new (attributeName: "telephone1",
ConditionOperator.Like,
value: searchString) },
{ new (attributeName: "emailaddress1",
ConditionOperator.Like,
value: searchString) },
{ new (attributeName: "accountnumber",
ConditionOperator.Like,
value: searchString) },
{ new (attributeName: "name",
ConditionOperator.Like,
value: searchString) }
}
},
// Condition to be evaluated after Quick find filter
new (LogicalOperator.And)
{
Conditions =
{
{new(attributeName:"statecode",
ConditionOperator.Equal,
value: 0)}
}
}
}
},
Orders = {
{
new(attributeName: "name",
orderType: OrderType.Ascending)
}
}
};
return service.RetrieveMultiple(query);
}
Within the Power Platform admin center, there's a Dataverse setting called Quick Find record limits which is turned on by default. The organization table QuickFindRecordLimitEnabled column stores this setting.
Viktigt
We strongly recommend that you leave the Quick Find record limits setting enabled. This setting protects you from system slowness and potential service disruptions when quick find queries exhaust available resources.
Because quick find queries support specific user experiences in applications, they must return results or fail quickly. The user won't wait a long time for results and these queries can use a lot of system resources because they can have conditions on multiple columns of the table.
When the Quick Find record limits setting is enabled, quick find queries return an error when the number results exceed 10,000 rows. The error returned is:
Name:
QuickFindQueryRecordLimitExceeded
Code:0x8004E024
Number:-2147164124
Message:The number of records for this search exceeds the Quick Search record limit. Please refine your query and try again.
You don't need to display this error in your application, but you should expect that it can occur. You can mitigate this by:
Whether the query succeeds might depend more on the number of records in the table than how the query is defined. To understand this, you need to understand how the search item limit is calculated.
The search item limit is calculated using ONLY the items in the quick find filter. When processing the query, Dataverse detects whether there's a quick find filter and processes it first, even before applying security filters. If the results of the quick find filter exceed 10,000 rows, Dataverse throws the QuickFindQueryRecordLimitExceeded
exception and no other filters are processed. Adding more filters to get a smaller total number of records returned won't decrease the potential of the QuickFindQueryRecordLimitExceeded
exception. Someone querying a table without privileges to view all the matching records can get this error.
When the Quick Find record limits setting is enabled, and you need to test a query that exceeds the quick find limit on a temporary basis, use FetchXml to compose the query and set the filter element overridequickfindrecordlimitdisabled
attribute to '1'
.
When the Quick Find record limits setting is disabled, and you need to test a query with the limits applied on a temporary basis, use FetchXml to compose the query and set the filter element overridequickfindrecordlimitenabled
attribute to '1'
.
Quick find queries might not provide usable experiences for every situation.
Because the search item limit is calculated before applying security filters, the total number of matching records in the system can exceed the 10,000 record limit when the table contains large numbers of records, regardless of how many records the calling user has security privileges to view. Refining the query or using a more specific search criteria might not be enough to provide a usable experience for a user.
In the worst case scenario, users see a QuickFindQueryRecordLimitExceeded
exception unless they enter a specific search string, which doesn't provide the expected 'quick find' experience.
Query data using FetchXml
Build queries with QueryExpression
Dataverse search APIs
Händelser
Power BI DataViz World Championships
14 feb. 16 - 31 mars 16
Med 4 chanser att komma in kan du vinna ett konferenspaket och ta dig till LIVE Grand Finale i Las Vegas
Läs merUtbildning
Utbildningsväg
Use advance techniques in canvas apps to perform custom updates and optimization - Training
Use advance techniques in canvas apps to perform custom updates and optimization