我也用可是很快啊不是delphi 的问题吧。
解决方案 »
- 三层存盘的问题
- 关于Richedit的两个问题
- 一个局域网的C/S系统要扩展到跨地区,需要作那些改动!!
- 如何复制某一文件夹内所有的word文档到两一目录中?
- 谁能帮帮我?我实在没有办法了,我想在一张图片上面相应的位置显示相应的内容,内容赋值在Label.Caption上,然后控制Label.Left 和Label.
- 怎样通过一个按钮调用网页?
- 我想学习如何编写自定义事件,大家给个建议和题目把
- 快乐报表好用吗?
- 当午夜过后日期改变,怎样让应用程序得知这一改变?
- 编译已经写好的程序时经常掉事件--请高手帮忙指点
- *******安装程序为什么搞不定********送分
- DLL中OLE的问题(Delphi)
把代码paste上
procedure Tdelchargedata.Button1Click(Sender: TObject);
begin
if maskedit1.text<>'' then
begin
query1.close;
query1.sql.Clear;
query1.sql.Add('delete * from 收费记录 where 截止日期<:datatime');
query1.Params[0].asstring:=maskedit1.Text;
if messagedlg('你确信要删除这些数据,它们将是不可恢复的!',mtconfirmation,
[mbyes,mbno],0)=mryes then
begin
query1.prepare;
query1.open;
query1.Active:=true;
end;
end
else
showmessage('你不能输入空的时间呀!');
end;
一执行就出现sql的光标,然后程序就死了。最可气的是,最后出现了:.....error creating cursor handle....但此时数据库的数据却已经删除了。不知道为什么提示有此错误。还请各位帮我分析分析。
query1.prepare;
query1.open; //这有问题
query1.Active:=true; //使用Execute
end;
原因:
delete 是无结果集语句,可是你使用Open 方法,却
是要一个结果集的,这是就无法定位游标了(服务器游标或者客户端游标都不行)其实,你只要看一看帮助就行了:
DescriptionCall ExecSQL to execute the SQL statement currently assigned to the SQL property. Use ExecSQL to execute queries that do not return a cursor to data (such as INSERT, UPDATE, DELETE, and CREATE TABLE).
begin
if maskedit1.text<>'' then
begin
query1.close;
query1.sql.Clear;
query1.sql.Add('delete * from 收费记录 where 截止日期<:datatime');
query1.Params[0].asstring:=maskedit1.Text;
if messagedlg('你确信要删除这些数据,它们将是不可恢复的!',mtconfirmation,
[mbyes,mbno],0)=mryes then
begin
query1.exesql;
end;
end
else
showmessage('你不能输入空的时间呀!');
end;另外database要建索引
1。不要将数据库OPEN 或ACTIVE:=TRUE;
2。要用QUERY1。EXESQL,不是query1.open
3.如果用PREPARE,执行好以后再使用UNPREPARE