Показать сообщение отдельно
Старый 08.10.2004, 17:42   #5  
demID is offline
demID
Участник
 
61 / 12 (1) ++
Регистрация: 16.08.2004
Адрес: Москва
Прочитайте мой постинг до конца и попробуйте повторить.

1. Создайте в базе SQL Server буферную (а не временную) таблицу, вот скрипт:
CREATE TABLE Ax_InventSum (Ax_ItemId VARCHAR(20), Ax_PhysicalInvent FLOAT)

2. В Аксапте создайте класс, у которого есть вот такой статический метод:

PHP код:
static void ExportInventSum()
{
    
SAP_DB          sAP_DB = new SAP_DB();
    
InventSum       inventSum;
    
InventTable     inventTable;
    ;

    
sAP_DB.executeUpdate("DELETE FROM Ax_InventSum");

    
ttsbegin;
    
SAP_DB.beginTrans();

    while 
select from inventSum
        join inventTable
        where inventSum
.ItemId == inventTable.ItemId
        
&& (inventTable.ItemGroupId == "Журналы" || inventTable.ItemGroupId == "Реклама")
        {
            
sAP_DB.executeUpdate("INSERT INTO Ax_InventSum (Ax_ItemId, Ax_PhysicalInvent)" +
                
" VALUES ('" inventTable.ItemId "', " strreplace(num2str(inventSum.physicalInvent(),10,2,2,0) + ")"",""."));
        }

    
SAP_DB.commitTrans();
    
ttscommit;

3. Создайте класс, аналогичный моему классу SAP_DB. Этот класс должен:
а) коннектиться к той базе данных, в которой находится таблица Ax_InventSum
б) содержать методы, позволяющие выполнять нормальные (не-аксаптовские) SQL-запросы к базе данных. Для этого можно использовать аксаптовские классы ODBCConnection, либо CCADOConnection.

Описанный мною статический метод далее вызывается из сторонней программы через Axapta Com Connector. Этот метод пишет в буферную таблицу Ax_InventSum результат своей работы.

Считать остатки из буферной таблицы можно затем таким образом:
SELECT Ax_ItemId, SUM(Ax_PhysicalInvent) FROM Ax_InventSum GROUP BY Ax_ItemId
__________________
Когда гестапо перекрыло все выходы, Штирлиц вышел через вход!