google-app-maker - 基于关系的列表小计
问题描述
我是 App Maker 的新手。我正在尝试找到一种基于数据关系来计算字段总数的方法。我已经根据这个YouTube 教程(7 分钟长)构建了一个基本应用程序。在视频中,它向您展示了如何汇总一系列数字。在那里的例子中,他们使用汽车库存来输入“型号”、“批发价值”和“零售价值”。它计算利润或损失,然后为您提供完整库存的“总利润损失”。基本的东西。
我正试图更进一步。我已经为“汽车公司”(一个)到“汽车库存”(很多)建立了一个关系数据库。所以说我的公司是土星和庞蒂亚克。我有与每家公司相关的不同模型,并在选择时显示土星或庞蒂亚克的正确模型。但我的问题是试图只显示每个特定公司的总价值,而不是所有车辆的全部价值
因此,假设我选择了土星,并且从全部汽车库存中只提取土星模型。我只想看看那些土星车的价值
我不想使用有针对性的“IF”语句,因为尽管现在只有 2 家公司,但我希望它根据列表提取总数,无论我将来有多少家公司。
郑重声明,不,我不是一家二手车经销商,我只是想学习这个程序,这似乎是一种解释它的简单方法。
更新 001
我理解以下建议:
为计算的数据源执行此操作,您将设置一个关键参数并将该密钥提供给计算的 DS 并运行一个查询 where your inventory.carcompany.id._equals = key 参数并重新加载此 DS 并为其提供公司中的新密钥项目更改客户端脚本。
不幸的是,我对语言的理解不足以使脚本做到这一点,而不会在数周的反复试验中迷失方向。这是我在计算查询中的代码:
var totals = {wholesale:0, retail:0, profit:0};
var records = app.models.autos.newQuery().run();
records.forEach(function( item ){
totals.wholesale += item.wholesale;
totals.retail += item.retail;
totals.profit += (item.retail - item.wholesale);
});
var record = app.models.totals.newRecord();
record.wholesale = totals.wholesale;
record.retail = totals.retail;
record.profit = totals.profit;
return [record];
我知道我需要为公司名称创建一个新的 var。我知道我需要获取该名称并使用该名称重新加载数据源,以将我的计算限制为仅具有该名称的列表。我只是不知道如何正确地说出来。
解决方案
根据您在此处如何在谷歌应用程序制造商中“添加/求和/总计/计算”动态表的其他答案,您只需要扩展现有脚本并对计算的数据源进行一些非常小的修改。对于一个,您将为您的公司引入一个附加字段(类型字符串),然后执行以下操作:
var query = app.models.company.newQuery(); // Should this not be models.company.newQuery as there is no datasource named "carcompanies" ?
query.prefetch.autos._add();
var results = query.run();
var calculatedRecords = []; //contained a capitalization error here
results.forEach(function(company) {
var totals = {wholesale:0, retail:0, profit:0};
var records = company.autos;
records.forEach(function(item) {
totals.wholesale += item.wholesale;
totals.retail += item.retail;
totals.profit += (item.retail - item.wholesale);
});
var record = app.models.totals.newRecord();
record.Company = company.name;
record.wholesale = totals.wholesale;
record.retail = totals.retail;
record.profit = totals.profit;
calculatedRecords.push(record);
});
return calculatedRecords;
推荐阅读
- python - 在循环中在python中传递多个参数
- php - 如何在symfony中显示数组关系ManyToMany
- java - VS 中的发布模式和调试模式
- reactjs - 通过 react-helmet 添加脚本标签时如何忽略 TypeScript 错误?
- javascript - 正则表达式检查具有最小值和最大值的总位数
- yii2 - 使用 Cloudflare 背后的 Yii2 访问规则来限制 ips 的操作
- laravel - 分组后计数错误
- xml - MS Access xml删除父子关系中的外键
- python - .add_subplot(nrows, ncols, index) 如何工作?
- c# - ExcelReaderFactory 和剃须刀页面使用 excelReader 验证文件是否正确