菜单

指定查询日期范围(历史数据模式)

下载
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;//采样数据库名称为前缀"SAMPLE_"+采样id
    //注意模拟器与屏的路径不一样
#if __arm__
    //参数1:数据库路径(触摸屏是在/customer/prm/data/里)
    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;
    }
}
3. 如需过滤采样变量的字段内容
采样变量在数据库中的字段名依次为D1,D2...
修改相应SQL查询语句即可
上一个
2.5.3 资料取样
下一个
设置表头标题及数据保留小数位数
最近修改: 2026-07-10Powered by