1.资料取样历史数据模式,默认会显示当天采样数据,如下代码可按时间范围查询数据
/*** @brief 按时间范围查询* @param widget [资料取样控件]* @param sid [资料取样控件绑定的采样id]* @param str1 起始时间,格式 2025-01-02 12:03:04* @param str2 结束时间,格式 2025-01-02 13:03:04*/void refineSample(STTTable* widget, string sid, string str1, string str2) {string tbl = StringUtil::snprintf("(SELECT * FROM SAMPLE_%s_V WHERE STIME>='%s' AND STIME<'%s') TT", sid.c_str(), str1.c_str(), str2.c_str());TTableView* tv = (TTableView*)widget->getData();tv->refine(tbl, "");tv->drawData(true);}
2.如需按指定时间段导出
/**
* @brief 按时间范围查询
* @param sid [资料取样控件绑定的采样id]
* @param str1 起始时间,格式 2025-01-02 12:03:04
* @param str2 结束时间,格式 2025-01-02 13:03:04
*/void exportSample(string sid, string str1, string str2) {
string basename = "SAMPLE_"+sid;
//注意模拟器与屏的路径不一样
#if __arm__
//参数1:数据库路径
string pathdb = "/customer/prm/data/" + basename + ".db";
//参数4:导出目标文件
string pathcsv = "/vendor/udisk_sda1/export.csv";//U盘下的export.csv
#else
//参数1:数据库路径
string pathdb = "./data/"+ basename + ".db";
//参数4:导出目标文件
string pathcsv = "./data/export.csv";
#endif
//参数2:数据库表名
string tbname = basename + "_V";//这是采样表视图名
//参数3: 要导出的内容,用sql语句
string sql = StringUtil::snprintf("SELECT * FROM SAMPLE_%s_V WHERE STIME>='%s' AND STIME<'%s'"
, sid.c_str()
, str1.c_str()
, str2.c_str());
//参数5:返回错误值
string err;
//调用导出
if(FileUtil::exportDB2CSV(pathdb, tbname, sql, pathcsv, err)) {
cout<<"导出成功"<<endl;
} else {
cout<<"导出失败"<<endl;
}
}