求助:MFC中ListCtrl显示数据错乱的问题?

开到荼靡终是梦 开到荼靡终是梦 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
各位大佬好,本人菜鸟,在做一个数据库课程设计。课程设计要求用vc和sql server写出一个图书管理程序。目前已经实现了odbc连接,mfc上也实现了程序,但是列表控件ListCtrl怎么调都调不好。选择用图表显示的话就像下图一样整个都是乱的:

但是,在数据库里面的数据都是这样子的:

我试过把Listctrl调成报告形式,但是那样的话直接什么都显示不出来,整个是空的,不知道为什么。
我想让listctrl里面显示的跟数据库里面的一样,一行行元组挨个显示这样子。

此外,每次我单击查询之后,输入一个数据库内不存在的数据,然后它会提示我“没有查到你要找的图书信息”,但是接下来程序里面所有按钮(查询,修改等等)都用不了了,还会提示“attempt to scroll past end or before beginning of data”,不知道为何,我把查询按钮的代码贴上来,问题可能在代码里面。大神们如果有空也可以帮我看一下可以嘛?
新人积分不多,尽量都交出来了,拜托了!课程设计就在这两天,挺急的。
以下是查询按钮的代码:
void CTSGLView::OnButton2() 
{// TODO: Add your control notification handler code here
Csearch Dlg ;
UpdateData(true);
if(Dlg.DoModal()==IDOK)
{ m_pSet->Edit();
Dlg.m_1.TrimLeft(); // 将字符串最前面的空格修整掉
Dlg.m_2.TrimLeft(); // 将字符串最前面的空格修整掉
Dlg.m_3.TrimLeft(); // 将字符串最前面的空格修整掉
if (Dlg.m_1.IsEmpty()&&Dlg.m_2.IsEmpty()&&Dlg.m_3.IsEmpty())
{MessageBox(" 要查询的条件不能为空! ");
return;
}
if (m_pSet->IsOpen())
m_pSet->Close(); // 如果记录集打开,则先关闭
if(!(Dlg.m_1.IsEmpty())&&!(Dlg.m_2.IsEmpty())&&(Dlg.m_3.IsEmpty()))
{m_pSet->m_strFilter.Format(" 图书编号 ='%s' AND 书名 ='%s' AND 作者名 ='%s' ",Dlg.m_1,Dlg.m_2,Dlg.m_3);
m_pSet->m_strSort = "图书编号 ASC,书名 ASC,作者名 ASC"; }
else
{m_pSet->m_strFilter.Format(" 图书编号 ='%s' OR 书名 ='%s'OR 作者名 ='%s' ",Dlg.m_1,Dlg.m_2,Dlg.m_3);
// m_strFilter 设置对记录的过滤
m_pSet->m_strSort = "图书编号 ASC,书名 ASC,作者名 ASC";
// m_strSort 设置对记录的排序 .按 number 的降序排列记录 }
m_pSet->Open();
// 打开记录集 .Open 函数在构造 SELECT语句时,
// 会把 m_strFilter 和 m_strSort 的内容放入 SELECT语句的 WHERE 和 ORDER BY 子句 中
if (!m_pSet->IsEOF())
{ m_pSet->Requery(); // 如果打开记录集有记录
UpdateData(false);
OnButton1();
OnInitialUpdate();}
else
MessageBox(" 没有查到你要找的图书信息! ");
} }
}
...全文

相关推荐

Radmin自动登录器v3.0-多国语言绿色版-Release1-20150615

Radmin自动登陆器 v3.0 - By: ybmj@vip.163.com 20150615 By: ybmj@vip.163.com , http://dep.yibinu.cn/wgzxne

shuren8

VC6.0下MFC双线程安全操作ListCtrl:模拟数据插入+定时读删演示

这个资源包提供一个可在VC6.0环境直接编译运行的MFC多线程工程,核心功能是让两个线程协同操作ListCtrl控件:一个线程持续向列表插入模拟数据,另一个线程按固定间隔读取全部条目、弹出对话框显示后立即清空已读内容。所有对ListCtrl的访问都通过CRITICAL_SECTION或Mutex做了线程同步,确保GUI控件在多线程环境下不出现崩溃、闪烁或数据错乱。项目包含自定义列表控件类MyList、独立封装的插入线程InsertThread和删除线程DeleteThread,以及主对话框MultiThre

q3r4s5t

MFC中ComboBox驱动ListCtrl动态刷新实战指南

在Windows桌面开发中,CListCtrl与CComboBox的协同交互是常见UI需求,其核心在于消息驱动而非数据绑定。理解NM_CLICK与CBN_SELCHANGE等Windows消息机制,掌握REPORT样式下列结构的动态重建、SetRedraw防闪烁批量更新、虚拟列表(LVN_GETDISPINFO)大数据加载等关键技术,可显著提升界面稳定性与响应性能。该方案广泛应用于工业监控、设备管理、日志分析等需多视图切换的MFC项目,尤其适合处理设备状态、告警日志等结构可变的数据展示场景,兼顾Unicod

汤一白君

Radmin自动登录器v3.0

Radmin自动登陆器 v3.0 - By: ybmj@vip.163.com 20180106 By: ybmj@vip.163.com , http://dep.yibinu.cn/wgzxne

u010898646

VC++银行账户管理系统源码解析:从MFC实战到现代C++重构

面向对象编程是构建复杂软件系统的核心范式,它通过类与对象对现实业务进行抽象和封装,实现数据与行为的统一管理。其核心原理在于利用继承、多态和封装三大特性,提升代码的复用性、可维护性和可扩展性。在桌面应用开发领域,这一思想结合图形用户界面框架,能够高效构建直观、交互性强的业务系统。以VC++和MFC技术栈为例,开发者可以深入实践文档-视图架构、消息映射机制以及数据持久化方案,从而掌握Windows平台桌面应用开发的全流程。本文通过一个经典的银行账户管理项目,具体剖析了使用MFC框架进行面向对象建模、文件序列化存

自我修炼的小石头
评论 6
收藏 已收藏
分享
返回顶部
开到荼靡终是梦
VC/MFC 16,550 成员 421,606 内容