- 18.05.2015
- 4 minute de citit
In acest articol
Se aplica: Microsoft Dynamics AX 2012 R3, Microsoft Dynamics AX 2012 R2, Microsoft Dynamics AX 2012 Feature Pack, Microsoft Dynamics AX 2012
In Microsoft Dynamics AX, clasa QueryFilter va ofera o modalitate de a filtra setul de rezultate al unei imbinari externe pentru a obtine un rezultat diferit decat puteti obtine de la X ++ SQL. Clasa QueryFilter aplica filtrele la clauza WHERE din SQL standard, in loc de cuvantul cheie ON al clauzei JOIN. Filtrele care sunt specificate in clauza WHERE sunt aplicate mai tarziu in proces decat filtrul pentru cuvantul cheie ON. Application Object Server (AOS) trimite SQL standard catre sistemul de gestionare a bazei de date. Aplicarea filtrelor in clauza WHERE poate produce un set de rezultate care nu contine inregistrari care sunt construite din valorile implicite.
Ca o modalitate alternativa de a filtra o interogare de imbinare exterioara, puteti utiliza clasa QueryBuildRange. Produce rezultate care se potrivesc cu ceea ce obtineti de la X ++ SQL cu un OUTER JOIN. Pentru mai multe informatii, consultati Selectati declaratia cu unealta exterioara.
Acest subiect contine urmatoarele sectiuni:
-
Tabelele si datele de testare pentru aceasta demonstratie
-
Exemplu de cod cu clasa QueryFilter
-
Exemplu de cod cu clasa QueryBuildRange
-
Reprezentari SQL ANSI
Tabelele si datele de testare pentru aceasta demonstratie
Aceasta sectiune prezinta doua tabele pe care se bazeaza exemplele de cod din acest subiect. Sunt incluse tipurile de camp si datele esantionului.
Exista o relatie de la 1 la multi intre tabelul parinte SalesOrder si tabelul copil SalesOrderLine. Exista 0 sau mai multe randuri in tabelul SalesOrderLine pentru fiecare rand din tabelul SalesOrder.
Tabel SalesOrder
Exista doua randuri in tabelul SalesOrder.
1
01.01.2010
2
02.02.2010
Tabel SalesOrderLine
Tabelul SalesOrderLine contine un camp cu cheie straina, numit SalesOrderID, care face referire la coloana cheie principala a tabelului SalesOrder. Valoarea 2 SalesOrderID nu apare in datele pentru tabelul SalesOrderLine.
Exemplu de cod cu clasa QueryFilter
Urmatorul exemplu de cod X ++ foloseste clasa QueryFilter pentru a filtra setul de rezultate dintr-o imbinare exterioara.
Interogarea QrySalesAndLines se alatura tabelelor parinte si copil la un test de egalitate intre campul cheie primara al parintelui si campul cheie strain al copilului. Urmatoarea lucrare adauga un alt criteriu de filtrare a imbinarii care testeaza daca campul Cantitate este egal cu 66.
// X ++ static void QueryFilter4fJob (Args _args) {Query query2; QueryBuildDataSource qbDataSource3; QueryRun queryRun4; // Clasa QueryFilter nu era in Microsoft Dynamics AX 2009. QueryFilter qFilter7; SalesOrder recSalesOrder; SalesOrderLine recSalesOrderLine; struct struct5; struct5 = struct nou (“int SalesOrderID;” + “date DateAdded;” + “str SalesOrderLineID;” + “int Quantity”); query2 = new Query (“QrySalesAndLines”); qbDataSource3 = query2.dataSourceName (“SalesOrderLine_1”); // Aceasta restrictie QueryFilter se afla in clauza WHERE din // declaratia ANSI SQL Select care este generata de AOS // pentru sistemul de baza de date. qFilter7 = query2.addQueryFilter (qbDataSource3, “Cantitate”); qFilter7.value (“66”); queryRun4 = new QueryRun (query2); while (queryRun4.
videosgay viejas masturvandose
jovenes zorras viejas con jóvenes
porno gay cerdo me corro en su boca sin avisar
comic porno en español follando en el convento
videos porno morbosos chicas altas follando
trio en la playa scat lesbianas
cerdas com gratis jovenes españolas follando
comicxxx se follan a su mujer
porno argumento xxx incesto real
coños calientes filme porno vechi
hentai castellano paja a desconocido
chica se masturba porno forzado
porno español dinero orgias amateur
tetonas delgadas torbe videos completos
gorditas tetonas asiaticasxxx
incesto real casero tetas espectaculares
pilladas desnudas incesto clasico
videos porno corridas internas pillados follando infraganti
creampie española porno casero en españa
porno español jovencitas videos pornos de españolas
next ()) {recSalesOrder = queryRun4.getNo (1); recSalesOrderLine = queryRun4.getNo (2); struct5.value (“SalesOrderID”, recSalesOrder.SalesOrderID); struct5.value (“DateAdded”, recSalesOrder.DateAdded); struct5.value (“SalesOrderLineID”, recSalesOrderLine.SalesOrderLineID); struct5.value (“Cantitate”, recSalesOrderLine.Quantity); info (struct5.toString ()); }}
Rezultatele de iesire nu contin nicio inregistrare care este construita cu valori implicite.
(SalesOrderID: 1; DateAdded: 2010/1/1; SalesOrderLineID: “CC”; Cantitate: 66)
Exemplu de cod cu clasa QueryBuildRange
Urmatorul exemplu de cod X ++ utilizeaza clasa QueryBuildRange pentru a filtra setul de rezultate dintr-o imbinare exterioara.
Interogarea QrySalesAndLines se alatura tabelelor parinte si copil la un test de egalitate intre campul cheie primara al parintelui si campul cheie strain al copilului. Urmatoarea lucrare adauga un alt criteriu de filtrare a imbinarii care testeaza daca campul Cantitate este egal cu 66.
// X ++ static void QueryBuildRange5rJob (Args _args) {Query query2; QueryBuildDataSource qbDataSource3; QueryRun queryRun4; QueryBuildRange qbRange6; SalesOrder recSalesOrder; SalesOrderLine recSalesOrderLine; struct struct5; ; struct5 = struct nou (“int SalesOrderID;” + “date DateAdded;” + “str SalesOrderLineID;” + “int Quantity”); query2 = new Query (“QrySalesAndLines”); qbDataSource3 = query2.dataSourceName (“SalesOrderLine_1”); // Aceasta restrictie QueryBuildRange se afla in clauza ON a // OUTER JOIN in instructiunea ANSI SQL Select care este // generata de AOS pentru sistemul de baza de date. qbRange6 = qbDataSource3.addRange (fieldNum (SalesOrderLine, Quantity)); qbRange6.value (“66”); queryRun4 = new QueryRun (query2); while (queryRun4. next ()) {recSalesOrder = queryRun4.getNo (1); recSalesOrderLine = queryRun4.getNo (2); struct5.value (“SalesOrderID”, recSalesOrder.SalesOrderID); struct5.value (“DateAdded”, recSalesOrder.DateAdded); struct5.value (“SalesOrderLineID”, recSalesOrderLine.SalesOrderLineID); struct5.value (“Cantitate”, recSalesOrderLine.Quantity); info (struct5.toString ()); }}
Rezultatele de iesire contin o inregistrare care este construita cu valori implicite.
(SalesOrderID: 1; DateAdded: 2010/1/1; SalesOrderLineID: “CC”; Cantitate: 66)
(SalesOrderID: 2; DateAdded: 2010/2/2; SalesOrderLineID: “”; Cantitate: 0)
Reprezentari SQL ANSI
Urmatoarele doua exemple standard de cod SQL ANSI corespund abordarilor de filtrare din clasa QueryFilter si clasa QueryBuildRange.
SQL ANSI de la QueryFilter
Instructiunea SQL SELECT urmatoare returneaza acelasi rand pe care il returneaza exemplul precedent de clasa QueryFilter.
– ANSI SQL SELECT din SalesOrder ca tSO LEFT OUTER JOIN SalesOrderLine ca tSOL ON (tSO.SalesOrderID = tSOL.SalesOrderID) unde tSOL.Quantity = 66;
SQL ANSI de la QueryBuildRange
Instructiunea SQL SELECT urmatoare returneaza aceleasi doua randuri pe care le returneaza exemplul precedent de clasa QueryBuildRange.
– ANSI SQL SELECT din SalesOrder ca tSO LEFT OUTER JOIN SalesOrderLine ca tSOL ON (tSO.SalesOrderID = tSOL.SalesOrderID si tSOL.Quantity = 66);
Vezi si
Interogari in AOT pentru acces la date
Anunturi: Noua carte: „Inside Microsoft Dynamics AX 2012 R3” este acum disponibila. Obtineti copia dvs. in magazinul MS Press.








