1

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

4

1 回答 1

1

如果您想对 foundset 进行深层复制,您需要执行以下步骤:

  1. 创建一个空的foundsetretrieveOrCreateFoundset()
  2. 遍历foundset的所有记录,应该复制到一个新的
  3. 使用类似的东西获取 dataProvidersrec.dataprovider()
  4. 获取记录上每个数据提供者的值 rec.value()
  5. 确保 uuid 数据提供程序未复制到新记录
  6. 通过数据提供者将值设置为新记录
  7. 坚持更改

完整的代码示例是:

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();
于 2013-04-16T15:20:27.233 回答