如何复制一个foundset

How do I copy a foundset?

本文关键字:foundset 一个 复制 何复制      更新时间:2023-09-26

所以我有以下问题:我有一个Foundset与一堆记录,我想(深)复制到一个新的位置,包括所有的值,但没有id。最好的方法是什么?

如果要对基础集进行深度复制,需要执行以下步骤:

  1. retrieveOrCreateFoundset()上创建一个空的foundset
  2. 遍历基础集的所有记录,这些记录应该复制到一个新的
  3. 通过rec.dataprovider()
  4. 获取数据提供者
  5. 获取记录上每个数据提供者的值rec.value()
  6. 确保uuid数据提供程序不被复制到新的Record
  7. 将值设置为数据提供程序上的新记录
  8. 保存更改

完整的代码示例是:

var vMobileController = plugins.iBizClientWebService.mobileController();
var vFoundset = vMobileController.currentFoundset();
var vDatabaseManager = vMobileController.dataManager();
var copyFoundSet = vDatabaseManager.retrieveOrCreateFoundset("<datasource>:<label>");
 for (var index = 0; index < vFoundset.size(); index++) {
     var rec = vFoundset.record(index);
     var loc = copyFoundSet.newRecord();
        var newRecord = copyFoundSet.record(loc);            
        var allDataproviders = rec.dataprovider();
        for(var i=0;i<allDataproviders.length;i++)
        {
            var dataProvider = allDataproviders[i];
            var dataValue = rec.value(dataProvider);
            if(dataProvider != "attribute_id")
            {    
                newRecord.setValue(dataProvider, dataValue);
            }
        }
}
 copyFoundSet.saveData();