Сервис типа InsertQuery

Как воспользоваться таким сервисом, если мне нужно вставить запись идентичную текущей, но изменив значения одного-двух полей и, естественно, с другим идентификатором?

Пример:

var DatasetMinuteness = Services.GetNewItemByUSI('ds_Minuteness');
ApplyDatasetFilter(DatasetMinuteness, 'ContractID', DataField.Value, true);
DatasetMinuteness.Open();
DatasetMinuteness.GoToFirst();
while (!DatasetMinuteness.IsEOF)
{
..........
DatasetMinuteness.GoToNext();
}

как написать вместо многоточия этот цикл? или может есть возможность обойтись без цикла?
вобщем суть отражает следующий запрос:

INSERT INTO tbl_Minuteness (ID, WorkingID, OfferingID, Count, Cost1, CostM, CurrencyID, ContractID, Text2Add, TextShow, StartDate, EndDate, Cost, TextShowID, NameOffering, Amount)
SELECT newid(), WorkingID, OfferingID, Count, Cost1, CostM, CurrencyID,'E534D2EF-F64B-440E-A836-9F0A33104DB0', Text2Add,TextShow, '10.11.2010', EndDate, Cost, TextShowID, NameOffering, Amount
FROM tbl_Minuteness
WHERE ContractID = '5581790A-40A7-4135-8477-382BD33ADB64'

в данном случае вставляется запись в которую подставляется новый идентификатор, новое значение поля ContractID и новое значение поля StartDate, а остальные поля должны вставиться неизменными.

Нравится

6 комментариев
var InsertQuery = Services.GetNewItemByUSI('iq_InsertQuery');
InsertQuery.ColumnsValues.ItemsByName('ID').Value = Connector.GenGUID();
InsertQuery.ColumnsValues.ItemsByName('WorkingID').Value = DatasetMinuteness('WorkingID');
// прочие поля аналогично
 
//------------
InsertQuery.Execute();

это если в цикле

хм... а как-то одной-двумя строками кода не получится?

ну в принципе можно хранимую процедуру написать и ее вызывать - будет быстрее точно и красиво

это понятно, я думал в CRM можно какими-то возможностями воспользоваться...

сервис InsertSelect можно попробовать... только имхо я бы просто написал через Insert и цикл, если критична производительность - хп

"Александр Кудряшов" написал:если критична производительность - хп

а если прям совсем-совсем критична, то триггер :smile:

Показать все комментарии