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

相关文章

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

C#实现一键批量合并PDF文档

《C#实现一键批量合并PDF文档》这篇文章主要为大家详细介绍了如何使用C#实现一键批量合并PDF文档功能,文中的示例代码简洁易懂,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言效果展示功能实现1、添加文件2、文件分组(书签)3、定义页码范围4、自定义显示5、定义页面尺寸6、PDF批量合并7、其他方法

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo

使用Python实现Word文档的自动化对比方案

《使用Python实现Word文档的自动化对比方案》我们经常需要比较两个Word文档的版本差异,无论是合同修订、论文修改还是代码文档更新,人工比对不仅效率低下,还容易遗漏关键改动,下面通过一个实际案例... 目录引言一、使用python-docx库解析文档结构二、使用difflib进行差异比对三、高级对比方

QT Creator配置Kit的实现示例

《QTCreator配置Kit的实现示例》本文主要介绍了使用Qt5.12.12与VS2022时,因MSVC编译器版本不匹配及WindowsSDK缺失导致配置错误的问题解决,感兴趣的可以了解一下... 目录0、背景:qt5.12.12+vs2022一、症状:二、原因:(可以跳过,直奔后面的解决方法)三、解决方

Python自动化处理PDF文档的操作完整指南

《Python自动化处理PDF文档的操作完整指南》在办公自动化中,PDF文档处理是一项常见需求,本文将介绍如何使用Python实现PDF文档的自动化处理,感兴趣的小伙伴可以跟随小编一起学习一下... 目录使用pymupdf读写PDF文件基本概念安装pymupdf提取文本内容提取图像添加水印使用pdfplum

Python从Word文档中提取图片并生成PPT的操作代码

《Python从Word文档中提取图片并生成PPT的操作代码》在日常办公场景中,我们经常需要从Word文档中提取图片,并将这些图片整理到PowerPoint幻灯片中,手动完成这一任务既耗时又容易出错,... 目录引言背景与需求解决方案概述代码解析代码核心逻辑说明总结引言在日常办公场景中,我们经常需要从 W

Python实战之SEO优化自动化工具开发指南

《Python实战之SEO优化自动化工具开发指南》在数字化营销时代,搜索引擎优化(SEO)已成为网站获取流量的重要手段,本文将带您使用Python开发一套完整的SEO自动化工具,需要的可以了解下... 目录前言项目概述技术栈选择核心模块实现1. 关键词研究模块2. 网站技术seo检测模块3. 内容优化分析模

深入解析C++ 中std::map内存管理

《深入解析C++中std::map内存管理》文章详解C++std::map内存管理,指出clear()仅删除元素可能不释放底层内存,建议用swap()与空map交换以彻底释放,针对指针类型需手动de... 目录1️、基本清空std::map2️、使用 swap 彻底释放内存3️、map 中存储指针类型的对象

C++ STL-string类底层实现过程

《C++STL-string类底层实现过程》本文实现了一个简易的string类,涵盖动态数组存储、深拷贝机制、迭代器支持、容量调整、字符串修改、运算符重载等功能,模拟标准string核心特性,重点强... 目录实现框架一、默认成员函数1.默认构造函数2.构造函数3.拷贝构造函数(重点)4.赋值运算符重载函数