QT/C++标签文档报表工具

2024-08-28 11:48
文章标签 工具 c++ 文档 qt 标签 报表

本文主要是介绍QT/C++标签文档报表工具,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

QT/C++标签文档报表工具

  • 一、演示预览
  • 二、使用步骤
    • 1.环境配置
  • 二、核心代码
    • 1.报表程序
    • 2. 数据库程序
  • 三、代码链接


一、演示预览

请添加图片描述

二、使用步骤

1.环境配置

1、第一次在电脑上需要注册报表库,要不让软件运行会报错,这里已经写好了批处理直接运行就行。
在这里插入图片描述
2、批处理的文件主要是注册dll和安装sqlite驱动,具体如下
在这里插入图片描述
3、ReportUser模块第一次编译的时候会报错,不用去理他,编译第二次就可以
在这里插入图片描述
在这里插入图片描述

二、核心代码

1.报表程序

void ReportUser::Init()
{// 第一次打开先注册QString strPath = QCoreApplication::applicationDirPath() + "/FirstOpen.rpt";QDir dir;if (!dir.exists(strPath)){QString strBatDir = QCoreApplication::applicationDirPath() + "/Data";QString strBatFile = QCoreApplication::applicationDirPath() + "/Data/install.bat";QProcess p(NULL);p.setWorkingDirectory(strBatDir);p.start(strBatFile);p.waitForFinished();dir.mkpath(strPath);}// 加载数据库SqlUser::GetInstance()->InitDB();LoadSourcesData(g_qlite, g_tableName);// 加载模板QString strPathFr3 = QCoreApplication::applicationDirPath() + "/Data/data.fr3";LoadTemplateFile(strPathFr3);
}bool ReportUser::LoadSourcesData(const char* chDataSource, const char* chTableName)
{CoInitialize(NULL);bool bRet = true;try{m_pData->pReport = IfrxReportPtr(__uuidof(TfrxReport));m_pData->pDB = IfrxADODatabasePtr(__uuidof(TfrxADODatabase));m_pData->pDT = IfrxADOTablePtr(__uuidof(TfrxADOTable));m_pData->pQR = IfrxADOQueryPtr(__uuidof(TfrxADOQuery));// Set the database object propertiesm_pData->pDB->ConnectionString = chDataSource;m_pData->pDB->LoginPrompt = false;m_pData->pDB->Connected = true;// Set the table object propertiesconst char* chTableNameTemp = chTableName;m_pData->pDT->PutDatabase(m_pData->pDB);m_pData->pDT->Name = chTableNameTemp;m_pData->pDT->TableName = chTableNameTemp;// Set the query object propertiesm_pData->pQR->PutDatabase(m_pData->pDB);char buf[256];const char *chTemp = "select * from ";memset(buf, 0, sizeof(buf));strcpy(buf, chTemp);strcat(buf, chTableNameTemp);m_pData->pQR->Query = buf;// Link ADO table and ADO query to the Report objectm_pData->pReport->SelectDataset(true, IfrxDataSetPtr(m_pData->pDT));m_pData->pReport->SelectDataset(true, IfrxDataSetPtr(m_pData->pQR));}catch (_com_error e){bRet = false;CoUninitialize();return bRet;}CoUninitialize();return bRet;
}

2. 数据库程序

代码如下:

// 打开数据库
bool SqlUser::InitDB()
{if (QSqlDatabase::contains("qt_sql_default_connection")){m_dataBase = QSqlDatabase::database("qt_sql_default_connection");return true;}else{// 建立和SQlite数据库的连接m_dataBase = QSqlDatabase::addDatabase("QSQLITE");// 设置数据库文件的名字m_dataBase.setDatabaseName("ReportDatabase.db");}if (!m_dataBase.open()){m_bConnected = false;qDebug() << "Error: Failed to connect database." << m_dataBase.lastError();}elsem_bConnected = true;return m_bConnected;
}// 执行sql语句
bool SqlUser::Excute(QString sql)
{if (!m_bConnected) return false;QSqlQuery query;query.prepare(sql);bool success=query.exec(sql);if(!success){qDebug() << "Error:" << query.lastError();return false;}return true;}// 创建表
bool SqlUser::CreatTable()
{bool bRet = false;if (m_strTableNameList.size() <= 0)return bRet;QString strCreateTable = QString(u8"CREATE TABLE ReportData(SysIndex INTEGER PRIMARY KEY");for (int i = 0; i < m_strTableNameList.size(); i++){if (i < (m_strTableNameList.size() - 1))strCreateTable = strCreateTable + "," + m_strTableNameList[i] + " VARCHAR(256)";elsestrCreateTable = strCreateTable + "," + m_strTableNameList[i] + " VARCHAR(256)" + ")";}bRet = Excute(strCreateTable);return bRet;
}

三、代码链接

代码链接
https://download.csdn.net/download/u013083044/85120988

这篇关于QT/C++标签文档报表工具的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1114680

相关文章

springboot自定义注解RateLimiter限流注解技术文档详解

《springboot自定义注解RateLimiter限流注解技术文档详解》文章介绍了限流技术的概念、作用及实现方式,通过SpringAOP拦截方法、缓存存储计数器,结合注解、枚举、异常类等核心组件,... 目录什么是限流系统架构核心组件详解1. 限流注解 (@RateLimiter)2. 限流类型枚举 (

C#监听txt文档获取新数据方式

《C#监听txt文档获取新数据方式》文章介绍通过监听txt文件获取最新数据,并实现开机自启动、禁用窗口关闭按钮、阻止Ctrl+C中断及防止程序退出等功能,代码整合于主函数中,供参考学习... 目录前言一、监听txt文档增加数据二、其他功能1. 设置开机自启动2. 禁止控制台窗口关闭按钮3. 阻止Ctrl +

C++中detach的作用、使用场景及注意事项

《C++中detach的作用、使用场景及注意事项》关于C++中的detach,它主要涉及多线程编程中的线程管理,理解detach的作用、使用场景以及注意事项,对于写出高效、安全的多线程程序至关重要,下... 目录一、什么是join()?它的作用是什么?类比一下:二、join()的作用总结三、join()怎么

基于Python实现简易视频剪辑工具

《基于Python实现简易视频剪辑工具》这篇文章主要为大家详细介绍了如何用Python打造一个功能完备的简易视频剪辑工具,包括视频文件导入与格式转换,基础剪辑操作,音频处理等功能,感兴趣的小伙伴可以了... 目录一、技术选型与环境搭建二、核心功能模块实现1. 视频基础操作2. 音频处理3. 特效与转场三、高

基于Python开发一个图像水印批量添加工具

《基于Python开发一个图像水印批量添加工具》在当今数字化内容爆炸式增长的时代,图像版权保护已成为创作者和企业的核心需求,本方案将详细介绍一个基于PythonPIL库的工业级图像水印解决方案,有需要... 目录一、系统架构设计1.1 整体处理流程1.2 类结构设计(扩展版本)二、核心算法深入解析2.1 自

Java docx4j高效处理Word文档的实战指南

《Javadocx4j高效处理Word文档的实战指南》对于需要在Java应用程序中生成、修改或处理Word文档的开发者来说,docx4j是一个强大而专业的选择,下面我们就来看看docx4j的具体使用... 目录引言一、环境准备与基础配置1.1 Maven依赖配置1.2 初始化测试类二、增强版文档操作示例2.

C++中全局变量和局部变量的区别

《C++中全局变量和局部变量的区别》本文主要介绍了C++中全局变量和局部变量的区别,全局变量和局部变量在作用域和生命周期上有显著的区别,下面就来介绍一下,感兴趣的可以了解一下... 目录一、全局变量定义生命周期存储位置代码示例输出二、局部变量定义生命周期存储位置代码示例输出三、全局变量和局部变量的区别作用域

C++中assign函数的使用

《C++中assign函数的使用》在C++标准模板库中,std::list等容器都提供了assign成员函数,它比操作符更灵活,支持多种初始化方式,下面就来介绍一下assign的用法,具有一定的参考价... 目录​1.assign的基本功能​​语法​2. 具体用法示例​​​(1) 填充n个相同值​​(2)

Python办公自动化实战之打造智能邮件发送工具

《Python办公自动化实战之打造智能邮件发送工具》在数字化办公场景中,邮件自动化是提升工作效率的关键技能,本文将演示如何使用Python的smtplib和email库构建一个支持图文混排,多附件,多... 目录前言一、基础配置:搭建邮件发送框架1.1 邮箱服务准备1.2 核心库导入1.3 基础发送函数二、

c++ 类成员变量默认初始值的实现

《c++类成员变量默认初始值的实现》本文主要介绍了c++类成员变量默认初始值,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录C++类成员变量初始化c++类的变量的初始化在C++中,如果使用类成员变量时未给定其初始值,那么它将被