为什么我的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有问题吗?
...全文
146 13 打赏 收藏 转发到动态 举报
写回复
用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', '归还')

1,178

社区成员

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

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