Показать сообщение отдельно
Старый 11.07.2002, 12:12   #1  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Реализация запроса в Аксапте
Добрый день.

Необходимо чтобы проверялось, есть ли позиции запасов по складам, для которых остаток по складу меньше чем число, проставленное в поле "минимум" (Номенклатурные единицы -> Покрытие).

На SQL Server данный запрос выглядит следующим образом:

PHP код:
select count(* )
from InventSumInventItemLocation
where InventSum
.ItemId InventItemLocation.ItemId
    
and
    
InventItemLocation.MinInventOnHand >= InventSum.availPhysical
    
and
    
InventItemLocation.MinInventOnHand<>
Пробую повторить то же в Аксапте. Например так:

PHP код:
    InventItemLocation inventitemlocation;
    
int cnt;
    ;

    
super();

    
cnt =  str2int(
            (
select count(ItemIdfrom InventSum where
                
(  (InventSum.ItemId == InventItemLocation.ItemId) &&
                   (
InventItemLocation.MinInventOnHand >= InventSum.availPhysical) &&
                   (
InventItemlocation.MinInventOnHand != 0)
                 )
             ).
ItemId);

       print 
int2str(cnt); 
Или так:

PHP код:
    InventSum InventSum;
    
int cnt;
    ;

    
super();

    
cnt =  str2int(
            (
select count(ItemIdfrom InventItemLocation  where
                
(  (InventSum.ItemId == InventItemLocation.ItemId) &&
                   (
InventItemLocation.MinInventOnHand >= InventSum.availPhysical) &&
                   (
InventItemlocation.MinInventOnHand != 0)
                 )
             ).
ItemId);

       print 
int2str(cnt); 
И в первом и во втором случае Аксапта возвращает ноль, хотя записи, удовлетворяющие данным условиям точно есть.

Следующий код вообще не компилируется:

PHP код:
    InventSum InventSum;
    
int cnt;
    ;

    
super();

    
cnt =  str2int(
            (
select count(ItemIdfrom InventItemLocation  join InventSum where
                
(  (InventSum.ItemId == InventItemLocation.ItemId) &&
                   (
InventItemLocation.MinInventOnHand >= InventSum.availPhysical) &&
                   (
InventItemlocation.MinInventOnHand != 0)
                 )
             ).
ItemId);

       print 
int2str(cnt); 
Как реализовать этот запрос в Аксапте ?