|
![]() |
#1 |
Участник
|
Снова такая же проблема возникла. Теперь же не могу понять в чем дело... Получается, будто условие в принципе не срабатывает и всегда возвращает TRUE.
X++: Query q = new Query(); QueryRun qr; QueryBuildDataSource qbds; QueryBuildRange qbr; int expDays = 30; int division = Dimensions::code2ArrayIdx(SysDimension::Division); InventTable it; InventSerialProperties isp; date expDate; ; qbds = q.addDataSource(tablenum(InventTable), tablestr(InventTable)); qbds.addRange(fieldid2ext(fieldnum(InventTable, Dimension), division)).value('FSM'); qbds = qbds.addDataSource(tablenum(InventSum)); qbds.addLink(fieldnum(InventTable, ItemId), fieldnum(InventSum, ItemId)); qbds.addRange(fieldnum(InventSum, PhysicalInvent)).value(">0"); qbds.addRange(fieldnum(InventSum, ItemId)).value("C250"); qbds = qbds.addDataSource(tablenum(InventDim)); qbds.addLink(fieldnum(InventSum, InventDimId), fieldnum(InventDim, InventDimId)); qbds = qbds.addDataSource(tablenum(InventSerial)); qbds.addLink(fieldnum(InventDim, InventSerialId), fieldnum(InventSerial, InventSerialId)); qbds = qbds.addDataSource(tablenum(InventSerialProperties), tablestr(InventSerialProperties)); qbds.addLink(fieldnum(InventSerial, InventSerialId), fieldnum(InventSerialProperties, InventSerialId)); qbr = qbds.addRange(fieldnum(InventSerialProperties, DataAreaId)); // Задаем такое условие: InventSerialProperties.StretchDate + InventTable.ShelfLife <= now() + expDays qbr.value(strfmt("(%1.%2 + %3.%4 <= %5)", // здесь условие срабатывает в любом случае tablestr(InventSerialProperties), fieldstr(InventSerialProperties, StretchDate), tablestr(InventTable), fieldstr(InventTable, ShelfLife), date2strxpp(systemdateget() + expDays) )); // Pulling data qr = new QueryRun(q); while (qr.next()) { it = qr.get(tablenum(InventTable)); isp = qr.get(tablenum(InventSerialProperties)); expDate = isp.StretchDate + it.ShelfLife; info(date2strxpp(expDate) + " <= " + date2strxpp(systemdateget() + expDays)); } X++: DECLARE @ExpDays INT SET @ExpDays = 1 SELECT ISum.ItemId , ISum.PhysicalInvent , InvD.ConfigId , InvD.InventColorId , InvD.WMSLocationId , InvD.InventBatchId , InvD.InventLocationId , InvD.WMSPalletId , InvD.AFCInventContainerId , InvD.InventSerialId , ISP.StretchDate , DATEADD(DD, InvT.SHELFLIFE, ISP.StretchDate) AS ExpirationDate FROM InventTable InvT INNER JOIN InventSum ISum ON ISum.DataAreaId = InvT.DataAreaId AND ISum.ItemId = InvT.ItemId INNER JOIN InventDim InvD ON InvD.DataAreaId = ISum.DataAreaId AND InvD.InventDimId = ISum.InventDimId INNER JOIN InventSerial ISer ON ISer.DataAreaId = InvD.DataAreaId AND ISer.InventSerialId = InvD.InventSerialId INNER JOIN InventSerialProperties ISP ON ISP.DataAreaId = ISer.DataAreaId AND ISP.InventSerialId = ISer.InventSerialId WHERE InvT.DataAreaId = 'dat' AND InvT.Dimension3_ = 'FSM' AND ISum.ItemId = 'C250' AND ISum.PhysicalInvent > 0 AND ISP.StretchDate + InvT.ShelfLife <= GETDATE() + @ExpDays
__________________
// no comments Последний раз редактировалось dech; 20.06.2013 в 13:16. |
|
|
|