ADOQUERY的问题.我是初学者请详加指点.(50分)

  • 主题发起人 主题发起人
  • 开始时间 开始时间

Unregistered / Unconfirmed
GUEST, unregistred user!
下面是我的SQL语句:
'SELECT * FROM DMK WHERE YM='''+EDIT1.TEXT+''''
当EDIT1.TEXT的值在DMK.YM中能找到时,可正常执行.但找不到时执行第一次的时候
不会出初,再执行一次就出错了.该怎么办?
另外加了PREPARE为什么编译通不过?
源代码如下:
with ADOQuery1 DO
begin
Close;
SQL.Clear;
SQL.Add('select * ');
SQL.Add('from post.DMK ');
SQL.Add('WHERE YM='''+edit1.text+''''); //找不到符合条件的记录时出错.
Prepare; //这一句编译通不过.
try
Open;
Except
ExecSQL;
end;

 
Prepare要有参数类型的。
 
请说详细些啊
 
ADOQuery不用Prepare的,Query才用这句语句
应该找不到也不出错啊
 
对了,你的YM是文本字段吧,你改为
SQL.Add('WHERE YM=''''+edit1.text+''''');
 
太平洋兄,这样更不行啊.我后台是MYSQL.YM是VARCHAR类型.
 
出错提示如下:BOF或EOF中有的一个是真,或者当前记录已删除,所需的操作要求一个当前记录.
....
 
1.ADOQuery不用Prepare
2.你的SQL语句有问题,多了一对引号。
 
1、ADO版本,就是msdac的版本是不是太旧,如果是,建议升一下级
2、如果是delphi5的话,补丁装了吗?

BTW:楼上的,SQL语句好像没有错,是不是眼花了[:)]
 
MSDAC是2.5,应该不太旧吧?是D5,补丁哪有?
 
真是奇怪你的try...except后面不加close
为什么要加ExecSQL;
还有那一句是准备SQL的意思,加不加无所谓。
而且如果只是用到edit1.text的话,SQL语句
也不用那样写,可以这样

SQL.Add('select * from post.DMK WHERE YM=:ym);
Parameters.ParamByName('ym') := Edit1.text;
 
改为CLOSE还是一样啊.
 
with adoquery1 do
begin
Close;
SQL.Clear;
SQL.Add('select * from post.DMK where ym='+''''+edit1.text+'''');
open;
first;
end;
另外如果你用的是delphi5,有bug,在delphi6中没有问题。
 
TADOQuery没有Prepare方法,不过它有Prepared属性,你可将这个属性置为True。
至于出错,请将错误提示信息贴出来
 
出错信息前面已贴
 
>>>MSDAC是2.5,应该不太旧吧?是D5,补丁哪有?
MSDAC很旧了。。。
http://download.microsoft.com/download/dasdk/Install/2.70/W98NT42KMe/CN/mdac_typ.exe
Windows 98 需要 Y2K 更新 2 和 Internet Explorer 4.01 SP2。Windows NT 4.0 需要 Service Pack 5(或更高)和 Internet Explorer 4.01 SP2。
操作系统 - Windows 98, NT4 & 2000, Windows Me
D5的补丁:
ftp://ftpc.inprise.com/pub/delphi/devsupport/updates/adoexpress/d5adoupdate2.exe
这个是d5的ado补丁
ftp://ftpc.borland.com/pub/delphi/devsupport/updates/delphi5/D5EntUpdate.exe
这个是d5的sp1没装的话先装一下,再装上面那个补丁

你的程序在我的机器d5运行很好,不过我不是用的mysql
如果不是环境问题我想就是mysql的问题
建议你先试一下用别的数据库你的程序会不会出问题


 
不用吵了,再讨论也没有用,这是DELPHI5的问题。改装DELPHI6一点问题都没有。

————给点分吧,快饿死啦————
 
多人接受答案了。
 
后退
顶部