 		mDataTable = CNMappingTable(sourceTable: tbl)
 		if let filter = mNextRecordMappingFunction {
 			mDataTable.setFilter(filterFunction: filter)
-		}
-		if mNextVirtualFields.count > 0 {
-			mDataTable.mergeVirtualFields(callbacks: mNextVirtualFields)
-		}
-
-		/* clear next setting */
-		//mNextRecordMappingFunction = nil
-		//mNextVirtualFields = [:]
+			mNextRecordMappingFunction = nil
+		}
+		if let fields = mNextVirtualFields {
+			mDataTable.mergeVirtualFields(callbacks: fields)
+			mNextVirtualFields = nil
+		}
 
 		mTableView.noteNumberOfRowsChanged()
 		mTableView.reloadData()

		case .ok(_):
			break
		case .error(let err):
			CNLog(logLevel: .error, message: "[Error] \(err.toString())", atFunction: #function, inFile: #file)
		@unknown default:
			CNLog(logLevel: .error, message: "[Error] Unknown type", atFunction: #function, inFile: #file)
		}
		let path      = CNValuePath(identifier: nil, elements: [.member("table")])
		let table     = CNValueTable(path: path, valueStorage: storage)

		mFieldNames		= fields
		mNextDataTable		= nil
		mNextFieldNames		= nil
		mNextVirtualFields	= nil
		mMinimumVisibleRowCount	= 8
		mHasHeader		= false
		mIsEnable		= false
