Wie zu verwenden UND/ODER Betreiber, wenn der Bau-Abfrage in ax 2012 x++
Konnte ich nicht wirklich finden, etwas über diese, und ich konnte nicht wirklich herausfinden.
Anyways, ich habe erstellt eine Ansicht, die ich brauche, um filter mit Abfrage/QueryRun etc. in x++.
Die select-Anweisung für das, was ich versuche zu tun, sieht wie folgt aus
while select salestable order by PtsWebDeliveryDate, salesId
where
(SalesTable.SalesStatus == SalesStatus::Delivered && !SalesTable.PtsProdNorwood && SalesTable.CustAccount != acc && SalesTable.InvoiceAccount != acc &&
salestable.PtsWebDeliveryDate >= today() && salestable.PtsWebDeliveryDate <= today()+daysahead)
||
(
SalesTable.SalesStatus == SalesStatus::Backorder && SalesTable.SalesType == SalesType::Sales && !SalesTable.PtsProdNorwood &&
SalesTable.CustAccount != acc && SalesTable.InvoiceAccount != acc &&
(
(salesTable.PtsSalesorderPacked && salestable.PtsWebDeliveryDate >= today() && salestable.PtsWebDeliveryDate <= today()+daysAhead)
||
(!salesTable.PtsSalesorderPacked && salestable.PtsWebDeliveryDate >= d && salestable.PtsWebDeliveryDate <= today()+daysahead))
)
{
//Do stuff
}
Wie Sie sehen können, habe ich som ODER-Betreibern, die ich brauche, um zu verwenden. ich habe begonnen mit der Erstellung der Abfrage in der x++ - und dies ist, was ich habe:
q = new Query();
q.addDataSource(TableNum("packlistview"));
q.dataSourceNo(1).addSortField(fn[_OrderBy], _direction);
q.dataSourceNo(1).addRange(fieldNum(PackListView, SalesStatus)).value(queryValue(SalesStatus::Delivered));
q.dataSourceNo(1).addRange(fieldNum(PackListView, PtsProdnorwood)).value(queryValue(NoYes::No));
q.dataSourceNo(1).addRange(fieldNum(PackListView, CustAccount)).value(queryValue(!acc));
q.dataSourceNo(1).addRange(fieldNum(PackListView, PtsWebDeliveryDate)).value(queryrange(today(),today()+daysahead));
//OR
q.dataSourceNo(1).addRange(fieldNum(PackListView, SalesStatus)).value(queryValue(SalesStatus::Backorder));
q.dataSourceNo(1).addRange(fieldNum(PackListView, SalesType)).value(queryValue(SalesType::Sales));
q.dataSourceNo(1).addRange(fieldNum(PackListView, PtsProdnorwood)).value(queryValue(false));
q.dataSourceNo(1).addRange(fieldNum(PackListView, CustAccount)).value(queryValue(!acc));
q.dataSourceNo(1).addRange(fieldNum(PackListView, InvoiceAccount)).value(queryValue(!acc));
q.dataSourceNo(1).addRange(fieldNum(PackListView, PtsSalesorderPacked)).value(queryValue(false));
q.dataSourceNo(1).addRange(fieldNum(PackListView, PtsWebDeliveryDate)).value(queryrange(d, today()+daysahead));
//OR
q.dataSourceNo(1).addRange(fieldNum(PackListView, PtsSalesorderPacked)).value(queryValue(false));
q.dataSourceNo(1).addRange(fieldNum(PackListView, PtsWebDeliveryDate)).value(queryrange(d, today()+daysahead));
qr = new queryRun(q);
while( qr.next())// && counter < 100
{
//Do stuff
}
So, wie mache ich übernehmen ODER Betreiber mit dieser?
Prost Jungs 🙂
InformationsquelleAutor Heygar | 2013-04-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erzeugen können Sie die querystring-mit Ihren Kriterien wie diese:
Kann sein das es nicht sehr klug, aber es ist die Art und Weise der Norm entspricht. Sie können
queryValue
- Funktion mit einigen Variablen wie base enums oder Termine zu bekommen, die richtige Abfrage-string für jeden Wert.InformationsquelleAutor j.a.estevan
Könnten Sie durch Kommas getrennte Werte, und übergeben Sie die csv-in der value-Funktion wie diese
q.dataSourceNo(1).addRange(fieldNum(PackListView, SalesStatus)).Wert(queryValue(SalesStatus: Geliefert:) + ", " + "Open order"));
Es ist ein weiterer Weg, um anzugeben, ODER UND Operatoren in der Abfrage Finden Sie unter diesem link axaptapedia.com/Expressions_in_query_ranges
InformationsquelleAutor ahmed saud
Habe ich beschlossen, eine temporäre Tabelle aus ihm heraus, all die Filterung in einem standard select-Anweisung, und später habe ich eine x++ querybuilding zu Sortieren und die verschiedenen Sachen benötigt. dies funktionierte sehr gut und fühlte mich einfach mehr zu tun als Injektion lange Zeichenfolge Abfragen in der queryobjects.
Aber danke für die Antworten 🙂
InformationsquelleAutor Heygar