如何通过单击按钮在另一个 SQL table 中创建多个新记录
How to create several new records in another SQL table from one button-click
我是新来的。预先感谢您的建议。
我正在开发一个应用程序,它会询问用户他们制作了多少件物品。
用户将输入一个数字。然后我的应用程序应该在名为 'Items_Made'.
的 table 中创建那么多新记录
例如应用程序询问“您制作了多少物品?”,用户输入“19”,然后应用程序在 'Items_Made' table.
中创建 19 条新记录
我已经设法将一些创建一条新记录的代码(如下所示)整合在一起,但我希望它能创建多条记录。我可能需要某种循环或 'while' 函数,但我不确定该怎么做。
var ceateDatasource = app.datasources.Items_Made.modes.create;
var newItem = ceateDatasource.item;
ceateDatasource.createItem();
此代码成功创建了 1 条记录。我希望它能够创建多个。
我建议制作一个下拉列表或文本框,用户可以在其中 select/enter 他们想要创建的项目数量,然后将以下代码附加到您的 'Create' 按钮:
var createDatasource = app.datasources.Items_Made.modes.create;
var userinput = Number(widget.root.descendants.YourTextboxOrDropdown.value);
for (var i = 0; i <= userinput; i++) {
var newItem = createDatasource.item;
createDatasource.createItem();
}
用户输入的简单循环应该可以完成此操作。
不建议通过客户端脚本创建大量记录,尤其是在连接断开或应用程序被错误关闭的情况下。在我看来,处理此问题的最佳方法是通过 server script 来实现两点:首先,它更可靠,其次,它更快。如官方文档中的示例所示,要创建一条记录,您需要执行以下操作:
// Assume a model called "Fruits" with a string field called "Name".
var newRecord = app.models.Fruits.newRecord();
newRecord.Name = "Kiwi"; // properties/fields can be read and written.
app.saveRecords([newRecord]); // save changes to database.
上面的例子清楚地说明了如何只创建一条记录。要一次创建多条记录,您可以使用这样的 for
语句:
function createRecordsInBulk(){
var newRecords = [];
for(var i=0; i<19; i++){
var newRecord = app.models.Fruits.newRecord();
newRecord.Name = "Kiwi " + i;
newRecords.push(newRecord);
}
app.saveRecords(newRecords);
}
在上面的示例中,您启动了 newRecords,这是一个空数组,它将负责保存所有要立即创建的新记录。然后使用 for
语句生成 19 条新记录并将它们推送到 newRecords 中。最后,一旦循环完成,您可以通过使用 app.saveRecords 并传递 newRecords 数组作为参数来一次保存所有记录.
现在,所有这一切都发生在服务器端。显然,您需要一种从客户端调用它的方法。为此,您需要使用 google.script.run 方法。因此,从客户端您需要执行以下操作:
google.script.run.withSuccessHandler(function(result) {
app.datasources.Fruits.load();
}).createRecordsInBulk();
所有这些信息都清楚地记录在 app maker official documentation site 上。我强烈建议您始终先检查那里,因为我相信您可以通过阅读文档更快地解决问题。
我是新来的。预先感谢您的建议。
我正在开发一个应用程序,它会询问用户他们制作了多少件物品。 用户将输入一个数字。然后我的应用程序应该在名为 'Items_Made'.
的 table 中创建那么多新记录例如应用程序询问“您制作了多少物品?”,用户输入“19”,然后应用程序在 'Items_Made' table.
中创建 19 条新记录我已经设法将一些创建一条新记录的代码(如下所示)整合在一起,但我希望它能创建多条记录。我可能需要某种循环或 'while' 函数,但我不确定该怎么做。
var ceateDatasource = app.datasources.Items_Made.modes.create;
var newItem = ceateDatasource.item;
ceateDatasource.createItem();
此代码成功创建了 1 条记录。我希望它能够创建多个。
我建议制作一个下拉列表或文本框,用户可以在其中 select/enter 他们想要创建的项目数量,然后将以下代码附加到您的 'Create' 按钮:
var createDatasource = app.datasources.Items_Made.modes.create;
var userinput = Number(widget.root.descendants.YourTextboxOrDropdown.value);
for (var i = 0; i <= userinput; i++) {
var newItem = createDatasource.item;
createDatasource.createItem();
}
用户输入的简单循环应该可以完成此操作。
不建议通过客户端脚本创建大量记录,尤其是在连接断开或应用程序被错误关闭的情况下。在我看来,处理此问题的最佳方法是通过 server script 来实现两点:首先,它更可靠,其次,它更快。如官方文档中的示例所示,要创建一条记录,您需要执行以下操作:
// Assume a model called "Fruits" with a string field called "Name".
var newRecord = app.models.Fruits.newRecord();
newRecord.Name = "Kiwi"; // properties/fields can be read and written.
app.saveRecords([newRecord]); // save changes to database.
上面的例子清楚地说明了如何只创建一条记录。要一次创建多条记录,您可以使用这样的 for
语句:
function createRecordsInBulk(){
var newRecords = [];
for(var i=0; i<19; i++){
var newRecord = app.models.Fruits.newRecord();
newRecord.Name = "Kiwi " + i;
newRecords.push(newRecord);
}
app.saveRecords(newRecords);
}
在上面的示例中,您启动了 newRecords,这是一个空数组,它将负责保存所有要立即创建的新记录。然后使用 for
语句生成 19 条新记录并将它们推送到 newRecords 中。最后,一旦循环完成,您可以通过使用 app.saveRecords 并传递 newRecords 数组作为参数来一次保存所有记录.
现在,所有这一切都发生在服务器端。显然,您需要一种从客户端调用它的方法。为此,您需要使用 google.script.run 方法。因此,从客户端您需要执行以下操作:
google.script.run.withSuccessHandler(function(result) {
app.datasources.Fruits.load();
}).createRecordsInBulk();
所有这些信息都清楚地记录在 app maker official documentation site 上。我强烈建议您始终先检查那里,因为我相信您可以通过阅读文档更快地解决问题。