Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Modellgesteuerte Apps bieten Funktionen zum schnellen Auffinden von Datensätzen mithilfe der Schnellsuche oder der Rastersuche. Mit diesen Oberflächen verfügen Benutzer über eine einzelne Texteingabe, die auf mehrere Spalten in einer einzelnen Tabelle angewendet werden kann.
Modellgesteuerte Apps bieten auch ein Suchfeld, das die Dataverse-Such-APIs verwendet, wenn die Dataverse-Suche aktiviert ist. Bei der Dataverse-Suche können die Ergebnisse Ergebnisse aus mehreren Tabellen für eine relevantere Suchfunktion enthalten. Wenn die Dataverse-Suche nicht aktiviert ist, bieten modellgesteuerte Apps eine Mehrtabellen-Schnellsuche (kategorisierte Suche), die Ergebnisse von bis zu 10 Schnellsucheabfragen kombiniert. Erfahren Sie mehr über suchoptionen, die für modellgesteuerte Apps verfügbar sind.
Hinweis
Schnellsuchabfragen bieten möglicherweise keine nutzbaren Erfahrungen für jede Situation. Siehe Einschränkungen
Erwägen Sie die Verwendung der Dataverse-Such-APIs anstelle von Schnellsuche-Abfragen für die folgenden Szenarien:
Was ist eine Schnellabfrage?
Schnellsuche-Abfragen verwenden das folgende Muster:
Sie enthalten einen einzelnen Filter mit einem "OR"-Filteroperator.
- Mit FetchXml wird das Attribut des Filterelements
typeauf'or'gesetzt. - Bei QueryExpression wird der FilterExpression.FilterOperator auf LogicalOperator.Or festgelegt.
Sie können weitere Filter hinzufügen, aber sie werden erst ausgewertet, nachdem die Ergebnisse des Schnellsuchefilters verarbeitet wurden.
- Mit FetchXml wird das Attribut des Filterelements
Der Filter 'OR' ist als Schnellsuchefilter gekennzeichnet:
- Mit FetchXml wird das Filterelement
isquickfindfieldsAttribut auf'1'gesetzt. - Mit QueryExpression wird der FilterExpression.IsQuickFindFilter auf
truegesetzt.
- Mit FetchXml wird das Filterelement
Der Filter hat mehrere Bedingungen. Wenn nur eine Bedingung ausgewertet wird, hat die Abfrage eine bessere Leistung, wenn sie als normale Abfrage verarbeitet wird.
Alle Bedingungen innerhalb des Filters verwenden den Operator "Gefällt mir":
- Mit FetchXml wird das Element für Bedingungen
operatorauf'like'gesetzt. - Mit QueryExpression verwendet ConditionExpression.OperatorConditionOperator.Like.
Der Operator "Like" erfordert eine Suchzeichenfolge, die mit
%endet.Hinweis
Der Operator "Gefällt mir" ist der einzige unterstützte Operator für Schnellsuche-Abfragen. Es ist der einzige Operator, der für die Anwendungsszenarien erforderlich ist, die Schnellsuche-Abfragen unterstützen sollen. Andere Operatoren wurden nicht getestet.
- Mit FetchXml wird das Element für Bedingungen
Examples
Wie Sie eine Schnellsuche-Abfrage schreiben, hängt davon ab, ob Sie QueryExpression oder FetchXml verwenden.
Alle Beispiele in den folgenden Registerkarten tun dasselbe:
Akzeptieren Sie einen einzelnen Suchzeichenfolgenparameter. Bei diesem Wert kann es sich um einen Teilnamen, eine Telefonnummer, eine E-Mail-Adresse oder eine Kontonummer handeln.
Erstellen Sie eine Schnellsuche-Abfrage, die die Suchzeichenfolge anhand der folgenden Spalten der Kontotabelle testet:
telephone2telephone1emailaddress1accountnumbername
Filtert Konten aus, die nicht aktiv sind.
Sortiert die Ergebnisse nach Kontoname.
Sie können QueryExpression mit dem Dataverse SDK für .NET verwenden.
/// <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);
}
Grenzwerte für schnelle Suche nach Datensätzen
Im Power Platform Admin Center gibt es eine Dataverse-Einstellung namens "Schnellsuche-Datensatzbeschränkungen ", die standardmäßig aktiviert ist. In der Organisationstabelle "QuickFindRecordLimitEnabled" wird diese Einstellung gespeichert.
Von Bedeutung
Es wird nachdrücklich empfohlen, die Schnellsuche-Datensatzgrenzen-Einstellung aktiviert zu lassen. Diese Einstellung schützt Sie vor systembedingter Langsamkeit und potenziellen Dienstunterbrechungen, wenn Abfragen die verfügbaren Ressourcen aufgebraucht haben.
Da schnelle Suchabfragen bestimmte Benutzeroberflächen in Anwendungen unterstützen, müssen sie Ergebnisse zurückgeben oder schnell fehlschlagen. Der Benutzer wartet nicht lange auf Ergebnisse, und diese Abfragen können viele Systemressourcen verwenden, da sie Bedingungen für mehrere Spalten der Tabelle haben können.
Wenn die Einstellung " Grenzwerte für den Schnellsuche-Datensatz" aktiviert ist, geben Schnellsucheabfragen einen Fehler zurück, wenn die Anzahl der Ergebnisse 10.000 Zeilen überschreitet. Der zurückgegebene Fehler lautet:
Name:
QuickFindQueryRecordLimitExceeded
Code:0x8004E024
Zahl:-2147164124
Meldung:The number of records for this search exceeds the Quick Search record limit. Please refine your query and try again.
Sie müssen diesen Fehler in Ihrer Anwendung nicht anzeigen, aber Sie sollten davon ausgehen, dass er auftreten kann. Sie können dies mindern, indem Sie:
- Begrenzen Sie die Anzahl der Felder, die von Ihrer Abfrage durchsucht werden.
- Schließen Sie die Einschränkungsbedingungen in Ihre Abfrage ein.
- Fordern Sie an, dass der Benutzer mehr Zeichen in das Suchfeld eingibt, um weniger Gesamtergebnisse bereitzustellen.
Ob die Abfrage erfolgreich ist, hängt möglicherweise mehr von der Anzahl der Datensätze in der Tabelle ab, als die Definition der Abfrage. Um dies zu verstehen, müssen Sie verstehen, wie der Grenzwert für Suchelemente berechnet wird.
Wie das Limit für Suchobjekte berechnet wird
Der Grenzwert für Suchelemente wird mit NUR den Elementen im Schnellsuchefilter berechnet. Bei der Verarbeitung der Abfrage erkennt Dataverse, ob es einen Schnellsuchefilter gibt, und verarbeitet ihn zuerst, auch bevor Sicherheitsfilter angewendet werden. Wenn die Ergebnisse des Schnellsuchefilters 10.000 Zeilen überschreiten, löst Dataverse die QuickFindQueryRecordLimitExceeded Ausnahme aus, und es werden keine anderen Filter verarbeitet. Wenn Sie weitere Filter hinzufügen, um eine kleinere Gesamtzahl der zurückgegebenen Datensätze zu erhalten, wird das Potenzial der QuickFindQueryRecordLimitExceeded Ausnahme nicht verringert. Jemand, der eine Tabelle ohne Berechtigungen abfragt, um alle übereinstimmenden Datensätze anzuzeigen, kann diesen Fehler erhalten.
Umgehen der Schnellsuche-Datensatzgrenze
Wenn die Einstellung Grenzwerte der Datensätze für die Schnellsucheaktiviert ist und Sie eine Abfrage testen müssen, die den Grenzwert der Schnellsuche vorübergehend überschreitet, verwenden Sie FetchXml, um die Abfrage zu erstellen, und legen Sie das Filterelementoverridequickfindrecordlimitdisabled-Attribut auf '1' fest.
Grenzwerte der Schnellsuche-Datensätze anwenden
Wenn die Einstellung für die Grenzwerte für den Schnellsuche-Datensatzdeaktiviert ist und Sie eine Abfrage mit den Grenzwerten testen müssen, die auf temporärer Basis angewendet werden, verwenden Sie FetchXml, um die Abfrage zu verfassen und setzen Sie das Filterelement-Attributoverridequickfindrecordlimitenabled auf '1' festzulegen.
Einschränkungen
Abfragen für schnelle Suche bieten möglicherweise keine verwendbaren Funktionen für jede Situation.
Da der Grenzwert für Suchelemente vor dem Anwenden von Sicherheitsfiltern berechnet wird, kann die Gesamtzahl der übereinstimmenden Datensätze im System das Limit von 10.000 Datensätzen überschreiten, wenn die Tabelle eine große Anzahl von Datensätzen enthält, unabhängig davon, wie viele Datensätze der aufrufende Benutzer über Sicherheitsberechtigungen zum Anzeigen verfügt. Das Verfeinern der Abfrage oder die Verwendung eines spezifischeren Suchkriteriums reicht möglicherweise nicht aus, um eine verwendbare Benutzeroberfläche für einen Benutzer bereitzustellen.
Im schlimmsten Fall sehen Benutzer eine QuickFindQueryRecordLimitExceeded Ausnahme, es sei denn, sie geben eine bestimmte Suchzeichenfolge ein, die die erwartete "Schnellsuche" nicht bereitstellt.
Siehe auch
Daten mithilfe von FetchXml abfragen
Abfragen mit QueryExpression erstellen
Dataverse-Such-APIs