Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article explique comment utiliser une clause Range Where basée sur plusieurs tables. Vous pouvez utiliser ce type de clause Range Where dans Dexterity dans Microsoft Dynamics GP. La clause Range Where permet à une clause Where d’être transmise à Microsoft SQL Server. Cela vous permet d’utiliser la clause Range Where pour restreindre les enregistrements retournés par SQL Server à Dexterity.
S’applique à : Microsoft Dynamics GP
Numéro de base de connaissances d’origine : 922056
En règle générale, vous utilisez la clause Range Where uniquement pour utiliser des colonnes qui se trouvent dans la même table. Cette limitation existe, car la clause Range Where ne prend pas en charge les jointures dans SQL Server. Par conséquent, vous devez utiliser une sous-requête lorsque vous souhaitez utiliser une clause Range Where sur plusieurs tables.
Lorsque vous utilisez une sous-requête, vous pouvez configurer une clause Range Where basée sur plusieurs tables. Vous ne pouvez le faire que lorsque les tables supplémentaires sont complètes.
L’exemple de clause Range Where suivant limite la table d’en-tête de traitement des commandes afin que Dexterity puisse uniquement afficher les transactions pour une classe de client.
inout table SOP_HDR_WORK;
in 'Class ID' IN_Class_ID;
local text l_where_clause;
pragma(disable warning LiteralStringUsed);
clear l_where_clause;
l_where_clause = l_where_clause + physicalname('Customer Number' of table SOP_HDR_WORK) + CH_SPACE + "in" + CH_SPACE + CH_LEFTPAREN;
{ Create Subquery }
l_where_clause = l_where_clause + "select" + CH_SPACE + physicalname('Customer Number' of table RM_Customer_MSTR) + CH_SPACE;
l_where_clause = l_where_clause + "from" + CH_SPACE + 'Intercompany ID' of globals + CH_PERIOD + SQL_DEFAULT_OWNER + CH_PERIOD;
l_where_clause = l_where_clause + physicalname(table RM_Customer_MSTR) + CH_SPACE;
l_where_clause = l_where_clause + "where" + CH_SPACE + physicalname('Customer Class' of table RM_Customer_MSTR) + CH_SPACE;
l_where_clause = l_where_clause+ CH_EQUAL + CH_SPACE + SQL_FormatStrings(IN_Class_ID) + CH_SPACE;
l_where_clause = l_where_clause + CH_RIGHTPAREN;
pragma(enable warning LiteralStringUsed);
range table SOP_HDR_WORK where l_where_clause;
En outre, l’exemple de ligne suivant ajoute une clause Where à la fin de chaque commande de table envoyée de Dexterity à SQL Server. L’exemple de ligne utilise une classe de la base de DEFAULT
données de démonstration TWO.
WHERE CUSTNMBR in (select CUSTNMBR from TWO.dbo.RM00101 where CUSTCLAS = 'DEFAULT' )