为什么我的DBGGrid,取不出来数据,请高手看一下我的代码!谢谢先

billfranck 2006-01-10 12:23:41
try
{
TDataSet *pDS;

queryString =" select * from lendbooktmp ";
queryString += "where read_id =";
queryString += Edit1->Text;
queryString += " and book_id =" ;
queryString += Edit2->Text;

DataModule1->lendbooktmpADOQuery->SQL->Clear();
DataModule1->lendbooktmpADOQuery->SQL->Add(queryString);
DataModule1->lendbooktmpADOQuery->Open();

pDS = DBGrid1->DataSource->DataSet;

pDS->First();

queryString = "insert into history values\( ";
queryString +="\'";
queryString +=Edit1->Text; //read_id
queryString +="\'";
queryString +="\,";
queryString +=" \'";
queryString +=pDS->FieldByName("read_id")->AsString; //read_name
queryString +="\'";
queryString +="\,";
queryString +=" \'";
queryString +=pDS->FieldByName("book_id")->AsString; //book_id
queryString +="\'";
queryString +="\,";
queryString +=" \'";
queryString +=pDS->FieldByName("book_name")->AsString; //book_name
queryString +="\'";
queryString +="\,";
queryString +=" \'";
queryString +=pDS->FieldByName("leadtime")->AsString;//借书时间
queryString +="\'";
queryString +="\,";
queryString +=" \'"; //还书时间
queryString +=DateTimePicker1->DateTime;
queryString +="\'";
queryString +="\,";
queryString +=" \'归还\'";
queryString +="\)";

DataModule1->hisADOQuery->SQL->Clear();
DataModule1->hisADOQuery->SQL->Add(queryString);

Edit3->Text =queryString;

DataModule1->hisADOQuery->ExecSQL();

}
catch( EDBEngineError &E)
{
MessageBox(NULL, "用户名错误或口令错误!", "错误", MB_OK);
}



程序运行后Edit3->Text,显示DBGGrid没有取到任何数据。 

实际上有一条记录,并且DBGGrid也能将这条记录显示出来,但为什么取不出来?

我这样用FieldByName有问题吗?
...全文
156 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
wf2091139 2006-01-11
  • 打赏
  • 举报
回复
queryString =" select * from lendbooktmp ";
queryString += "where read_id =";
queryString += Edit1->Text;
queryString += " and book_id =" ;
queryString += Edit2->Text;

//这种有错 Edit1->Text ---> '"+Edit1->Text+"'

//把你的 SQL语句show出来看看就知道有没有错了!
xibingwuqing 2006-01-11
  • 打赏
  • 举报
回复
//DataModule1->hisADOQuery->ExecSQL();
-------------------------------------------------------------------------------------
是不是要把“//”去掉?
lvjack 2006-01-10
  • 打赏
  • 举报
回复
你有没有使用事务,是不是事务没有提交?
你的Edit3->Text 不是=queryString么
“程序运行后Edit3->Text,显示DBGGrid没有取到任何数据。”
Edit3中显示什么?没见到你取数据的语句阿
CACACACACA 2006-01-10
  • 打赏
  • 举报
回复
是不是缓存更新了.
没有UPDATABATCH(ARALL);
billfranck 2006-01-10
  • 打赏
  • 举报
回复
运行后,queryString的最后是:
insert into history values( '4', '', '', '', '', '2006-1-10', '归还')

何故?
xibingwuqing 2006-01-10
  • 打赏
  • 举报
回复
“程序运行后Edit3->Text,显示DBGGrid没有取到任何数据。 

实际上有一条记录,并且DBGGrid也能将这条记录显示出来,但为什么取不出来?”

没看懂你的问题,是不是把DataSet先Close()再Open()一下?
billfranck 2006-01-10
  • 打赏
  • 举报
回复
caizhen200_82 你的方法我试过了,还是不行,
有没有星星?
caizhen2000_82 2006-01-10
  • 打赏
  • 举报
回复
将pDS->FieldByName("read_id")->AsString;
改为DataModule1->lendbooktmpADOQuery->FieldByName("read_id")->AsString试试
以下类同。
lvjack 2006-01-10
  • 打赏
  • 举报
回复
不明白为什么加那么多/
read_name = DataModule1->lendbooktmpADOQuery->FieldByName("read_name")->AsString;
book_id = DataModule1->lendbooktmpADOQuery->FieldByName("book_id")->AsString;
book_name = DataModule1->lendbooktmpADOQuery->FieldByName("book_name")->AsString;
leadtime = DataModule1->lendbooktmpADOQuery->FieldByName("leadtime")->AsString;

queryString = "insert into history values('"
+Edit1->Text+"','
+read_name+="','"
+book_id="','"
+book_name+"','"
+leadtime+"','"
+DateTimePicker1->DateTime
+"','归还')";
billfranck 2006-01-10
  • 打赏
  • 举报
回复
没人????????
billfranck 2006-01-10
  • 打赏
  • 举报
回复
我现在改成这样了,怎么还是不行?
try
{
DBGrid1->DataSource = DataModule1->lendbooktmpDataSource;

queryString =" select * from lendbooktmp ";
queryString += "where read_id =";
queryString += Edit1->Text;
queryString += " and book_id =" ;
queryString += Edit2->Text;

//DataModule1->lendbooktmpADOQuery->SQL
DataModule1->lendbooktmpADOQuery->SQL->Clear();
DataModule1->lendbooktmpADOQuery->SQL->Add(queryString);
//DataModule1->readADOQuery->ExecSQL();
DataModule1->lendbooktmpADOQuery->Open();

read_name = DBGrid1->DataSource->DataSet->FieldByName("read_name")->AsString;
book_id = DBGrid1->DataSource->DataSet->FieldByName("book_id")->AsString;
book_name = DBGrid1->DataSource->DataSet->FieldByName("book_name")->AsString;
leadtime = DBGrid1->DataSource->DataSet->FieldByName("leadtime")->AsString;

queryString = "insert into history values\( ";
queryString +="\'";
queryString +=Edit1->Text; //read_id
queryString +="\'";
queryString +="\,";
queryString +=" \'";
queryString +=read_name; //read_name
queryString +="\'";
queryString +="\,";
queryString +=" \'";
queryString +=book_id; //book_id
queryString +="\'";
queryString +="\,";
queryString +=" \'";
queryString +=book_name; //book_name
queryString +="\'";
queryString +="\,";
queryString +=" \'";
queryString +=leadtime;//½èÊéʱ¼ä
queryString +="\'";
queryString +="\,";
queryString +=" \'"; //»¹Êéʱ¼ä
queryString +=DateTimePicker1->DateTime;
queryString +="\'";
queryString +="\,";
queryString +=" \'¹é»¹\'";
queryString +="\)";

DataModule1->hisADOQuery->SQL->Clear();
DataModule1->hisADOQuery->SQL->Add(queryString);

Edit3->Text =queryString;

//DataModule1->hisADOQuery->ExecSQL();

}
catch( EDBEngineError &E)
{
MessageBox(NULL, "Óû§Ãû´íÎó»ò¿ÚÁî´íÎó!", "´íÎó", MB_OK);
}
billfranck 2006-01-10
  • 打赏
  • 举报
回复
我把问题写完了,好相发现问题的所在了
pDS = DBGrid1->DataSource->DataSet;

DBGrid1显示完了以后,我又设了一下DataSource->DataSet;不就相当于Close()了一下吗!!!
billfranck 2006-01-10
  • 打赏
  • 举报
回复
我没有表达清楚吗?在来一次
完整的代码如上:
我分段解一下:
try
{
TDataSet *pDS;

queryString =" select * from lendbooktmp ";
queryString += "where read_id =";
queryString += Edit1->Text;
queryString += " and book_id =" ;
queryString += Edit2->Text;

DataModule1->lendbooktmpADOQuery->SQL->Clear();
DataModule1->lendbooktmpADOQuery->SQL->Add(queryString);
DataModule1->lendbooktmpADOQuery->Open();

执行到这里DBGrid 有一个记录显示!我想将将这个显示的记录插到一个新表里!用了下面的语句:

pDS = DBGrid1->DataSource->DataSet;

pDS->First();

queryString = "insert into history values\( ";
queryString +="\'";
queryString +=Edit1->Text; //read_id
queryString +="\'";
queryString +="\,";
queryString +=" \'";
queryString +=pDS->FieldByName("read_id")->AsString; //read_name
queryString +="\'";
queryString +="\,";
queryString +=" \'";
queryString +=pDS->FieldByName("book_id")->AsString; //book_id
queryString +="\'";
queryString +="\,";
queryString +=" \'";
queryString +=pDS->FieldByName("book_name")->AsString; //book_name
queryString +="\'";
queryString +="\,";
queryString +=" \'";
queryString +=pDS->FieldByName("leadtime")->AsString;//借书时间
queryString +="\'";
queryString +="\,";
queryString +=" \'"; //还书时间
queryString +=DateTimePicker1->DateTime;
queryString +="\'";
queryString +="\,";
queryString +=" \'归还\'";
queryString +="\)";

DataModule1->hisADOQuery->SQL->Clear();
DataModule1->hisADOQuery->SQL->Add(queryString);

Edit3->Text =queryString;

DataModule1->hisADOQuery->ExecSQL();

}
catch( EDBEngineError &E)
{
MessageBox(NULL, "用户名错误或口令错误!", "错误", MB_OK);
}



运行后,queryString的最后是:
insert into history values( '4', '', '', '', '', '2006-1-10', '归还')

内容概要:本文详细介绍了一个基于C++语言开发的疫苗接种和儿童体检系统的设计与实现全过程,涵盖项目背景、目标意义、架构设计、核心功能模块、数据库实现、API接口规范、前后端代码实现及部署应用等多个方面。系统采用分层架构与模块化设计,实现了儿童信息管理、疫苗接种记录、体检数据录入、多用户权限控制、数据统计分析、异常预警、安全加密与日志审计等核心功能,并通过MySQL数据库进行数据持久化,结合Qt实现图形化界面,支持高并发、数据脱敏、多平台对接与自动化部署。项目强调数据安全、隐私保护与系统可扩展性,适用于社区医疗、疾控中心、学校及医院等场景。; 适合人群:具备C++编程基础,熟悉数据库操作和基本软件工程流程的开发人员、计算机及相关专业学生、医疗信息化项目开发者,以及希望了解完整医疗管理系统开发流程的技术人员。; 使用场景及目标:①学习如何使用C++构建完整的医疗信息管理系统;②掌握数据库设计、前后端交互、权限控制、多线程处理和GUI开发等关键技术;③应用于社区卫生服务、学校健康管理、疾控数据统计等实际业务场景,提升儿童健康管理水平;④作为课程设计、毕业设计或实际项目的参考模板。; 阅读建议:建议读者结合文档中的代码示例与数据库脚本,搭建本地开发环境进行实践操作,重点关注系统架构设计、模块解耦、安全机制与前后端交互逻辑,深入理解各功能模块的实现原理,并尝试在此基础上进行功能扩展,如接入移动端或增加AI分析模块。

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧