简介 #
数据填报是 SmartChart 将前端用户输入的数据写入数据库的核心机制,通过 ds_save(数据集序号, dataset) 函数调用,可以将用户填写的表单数据、按钮触发的数据、复杂报表中提取的单元格数据等写入数据库。配置好填报数据集后,写入逻辑完全在前端 JS 中控制,灵活度极高。
应用场景 #
- 收集用户端录入的数据
- 前端处理好的数据回写到任意系统
- 制做问卷系统
- 埋点应用
配置方法 #
新建一个懒加载数据集,填写内容格式如下: #
- 如果需将数据保存到对应的表名
dataset={
"table":"表名"
}
- 如需指定字段, 可如下方式填写, 也可指定写入前sql和写入后sql
dataset={
"table":"表名(字段1, 字段2)",
"preSql":["truncate table abc"],
"postSql":["insert into xxx select ...."]
}
写入数据集格式说明 #
- 写入一行数据
dataset = ['a','b']
或
dataset = {'id': 123, 'name':'john'}
//如果需要自动记录写入者用户名
dataset = ['$username', 'b']
- 多行数据
dataset = [[], ['a1','b1'],['a2', 'b2']]
dataset = [['__A','B'], ['a1','b1'],['a2', 'b2']]
当数据中表头第一个字段用__开头,如上则会自动采用表头A,B插入,否则会忽略表头采用配置中指定的表头顺序
使用场景 #
在"模板"中自定义写入 #
- HTML组件代码
<h1 class="smtdrag" id="id_1648895680659">数据填报</h1>
<div class="smtdrag" id="id_1648895855760">
<label>用户</label><input id="id_visitor">
</div>
<div class="smtdrag" id="id_1648895859160">
<label>动作</label><input id="id_action">
</div>
<div class="smtdrag" id="id_1648895956207">
<button id="idbtn01">提交</button>
</div>

- 在"模板"中js处理代码
$('#idbtn01').click(function(){
//获取填写的数据
let visitor = $('#id_visitor').val();
let action = $('#id_action').val();
//拼接一个填写好的数组
let dataset = [visitor, action];
//上传填写的数据
//0:为上文新建的数据集序号, dataset:要写入的数据
let res = ds_save(0, dataset);
})
复杂表格开发的填报 #
//定义excel表格中需获取数据单元格
let fillCells = ['D4', 'D5'];
//获取数据并清空单元格
let dataset = ds_excel_value(fillCells,clear=true);
//可以加入填报中用户名[可选]
dataset.unshift('$username'); //如果需要加入用户名
//写入数据库中
print(ds_save(0, dataset));
API接写入 #
参考"数据接收API"
ds_save 函数说明 #
ds_save(数据集序号, dataset, update=0)
// update: 0=新增, 1=更新(按主键), 2=删除
| 写入数据格式 | 示例 | 说明 |
|---|---|---|
| 单行数组 | ['a', 'b'] |
按配置字段顺序写入 |
| 单行字典 | {'name': 'john', 'age': 30} |
按字段名写入 |
| 多行(无表头) | [[], ['a1','b1'], ['a2','b2']] |
空表头 + 数据行 |
| 多行(带表头) | [['__A','B'], ['a1','b1']] |
表头以 __ 开头时用表头字段名写入 |
| 含当前用户名 | ['$username', 'b'] |
$username 自动替换为当前登录用户名 |
关键:填报数据集需新建为懒加载数据集,在数据集编辑器中写入
dataset={...}配置,数据连接选择目标数据库。