|
|
|
|
#1 |
|
Administrator
|
1. ttsbegin
2. у курсора вызывается метод selectForUpdate 3. делается выборка (select) по курсору 4. делается присвоение нового значения 5. курсор.update() 6. ttscommit Это изнутри аксапты. В COM д.б. похожая логика. Но если не получится - можно сделать класс, которому передавать новое значение. Класс уже вызывать через COM Кстати - я не обратил сразу внимание - у вас QueryRun. Тогда там все посложнее. У датасорса, который нужно обновить нужно поставить свойство update(true) и у QueryRun - userupdate(true). Все это нужно делать внутри ttsbegin/ttscommit А дальше - уже внутри QueryRun - делается курсор.update()
__________________
Возможно сделать все. Вопрос времени Последний раз редактировалось sukhanchik; 18.04.2006 в 11:39. |
|
|
|
|
#2 |
|
Участник
|
Спасибо.
Делаю так: Код: ax.TTSBegin();
IAxaptaObject oDataSourceSales= (IAxaptaObject)oQuery.Call("AddDataSource", iSalesTableID , Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing);
oDataSourceSales.Call("Update",true,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing);
IAxaptaObject oQueryRun = ax.CreateObject("QueryRun", oQuery,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing);
oQueryRun.Call("UserUpdate", true,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing);
while ((bool)oQueryRun.Call("Next",Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing))
{
IAxaptaRecord rec = (IAxaptaRecord)oQueryRun.Call("GetNo", 1,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing);
if(i==2)
{
rec.set_field("SalesName","SOME NEW VAL");
rec.DoUpdate();
}
}
ax.TTSCommit();Как же все неудобно то... |
|
|
|
|
#3 |
|
Administrator
|
Цитата:
Сообщение от murad
Как я понимаю, выставление update=true для DataSource и userUpdate=true для QueryRun и означает "SELECTFORUPDATE"?
Как же все неудобно то... для простого select - все немного попроще.
__________________
Возможно сделать все. Вопрос времени |
|
|
|
|
#4 |
|
Участник
|
Цитата:
Сообщение от sukhanchik
У датасорса, который нужно обновить нужно поставить свойство update(true) и у QueryRun - userupdate(true).
Хотя может быть там по дефолту стоит QueryRun - userupdate(true). |
|
|
|
| За это сообщение автора поблагодарили: murad (1). | |
|
|
| Опции темы | Поиск в этой теме |
| Опции просмотра | |
|