Показать сообщение отдельно
Старый 13.02.2003, 13:39   #13  
edd is offline
edd
Участник
 
81 / 10 (1) +
Регистрация: 20.01.2003
2 Андре

Пример использования COM Axapta из другого приложения (например Fox, Delphi, C++).

2 KSS

На данный момент у меня два варианта и они мне не нравятся, т.к. сильно не похожи на то, что я себе представлял..
/*
курсор = execQuery("select *")'
while (курсор.Next())
{
курсор.Поле1 = ...;
курсор.Поле2 = ...;
...
курсор.ПолеN = ...;
курсор.Update();
}
курсор.Close();
*/

Вот они...
Вариант 1
void clicked()
{
CCADOConnection cn = new CCADOConnection() ;
CCADOCommand command = new CCADOCommand() ;
CCADORecordset rs = new CCADORecordset() ;
str _str = "" ;
str filename ;
int pos ;
FileNameFilter filter ;
int i ;
int timeStamp ;
;
super();

filter = ['DBF files','*.dbf'];
filename = Winapi::getOpenFileName(element.hWnd(),filter,'','', '','');
pos = StrScan(StrUpr(filename),"OB23",1,255);
_str = SubStr(StrUpr(filename),1,pos-1);

cn = new CCADOConnection();
cn.open("Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq="+_str+";");
command.activeConnection(cn);
if (cn)
{
_str = "delete from "+SubStr(StrUpr(filename),pos,StrLen(StrUpr(filename)));
command.commandText(_str);
command.execute();
i = 0;
timeStamp = timeNow();
while (i < 1000)
{
_str = "insert into "+SubStr(StrUpr(filename),pos,StrLen(StrUpr(filename)))+" (pach) values ("+int2str(i)+")";
command.commandText(_str);
command.execute();
i++;
}
info(strFmt('Время выполнения операции insert: %1', time2str(timeNow() - timeStamp,1,1)));
timeStamp = timeNow();

i = 0;
while (i < 1000)
{
_str = "update "+SubStr(StrUpr(filename),pos,StrLen(StrUpr(filename)))+" set an_kr = "+int2str(i)+"0 where pach = "+int2str(i);
command.commandText(_str);
command.execute();
i++;
}
info(strFmt('Время выполнения операции update: %1', time2str(timeNow() - timeStamp,1,1)));
timeStamp = timeNow();
rs.close();
}
}

Вариант 2
void clicked()
{
OdbcConnection connection ;
LoginProperty LP = new LoginProperty() ;
Statement stm ;
ResultSet res ;
str stmTxt ;
int timeStamp ;
int i ;

;
super();
LP.setDSN("DBF");
connection = new OdbcConnection(LP);
stm = connection.createStatement();
if (connection)
{
stmTxt = "delete from ob23.dbf";
stm.executeUpdate(stmTxt);
i = 0;
timeStamp = timeNow();
while (i < 1000)
{
stmTxt = "insert into ob23.dbf (pach) values ("+int2str(i)+")";
stm.executeUpdate(stmTxt);
i++;
}
info(strFmt('Время выполнения операции insert: %1', time2str(timeNow() - timeStamp,1,1)));
timeStamp = timeNow();

i = 0;
while (i < 1000)
{
stmTxt = "update ob23.dbf set an_kr = "+int2str(i)+"0 where pach = "+int2str(i);
stm.executeUpdate(stmTxt);
i++;
}
info(strFmt('Время выполнения операции update: %1', time2str(timeNow() - timeStamp,1,1)));
timeStamp = timeNow();
}
}