难道是一个BUG?TSQLClientDataSet无法执行SQL语句? (20分)

  • 主题发起人 主题发起人 徐凤华
  • 开始时间 开始时间

徐凤华

Unregistered / Unconfirmed
GUEST, unregistred user!
代码如下:
SQLClientDataSet1.Close;
SQLClientDataSet1.CommandText := 'Select * From T_User where UserName=:Name';
SQLClientDataSet1.Params[0].AsString := 'FRANK';
SQLClientDataSet1.Open;
每次程序都会报错:
List Index out of Bounds(0);
若改为:
SQLClientDataSet1.Close;
SQLClientDataSet1.CommandText := 'Select * From T_User where UserName=:Name';
SQLClientDataSet1.Params.ParamByName('Name').AsString := 'FRANK';
SQLClientDataSet1.Open;
则提示:
Parameter 'Name' not found
但在属性编辑器中,使用参数则一切正常。
真是令人莫名其妙?
 
我的中间层用了DBExpress的控件,前端没用到,
你是在哪里用的SQLClientDataSet,你的程序是2层还是3层
 
把程序重写一遍,然重新编译,看行不行!
 
可能你的SQLCLIENTDATASET的PROVIDE的某个属性没设,ALLOWCOMMANDTEXT之类的
 
谢谢大家,我找到原因了,原来DbExpress控件的参数传递与以前所使用的方法不一样
需要初始化TParam,具体方法可以从TSQLConnection.Execute的帮助文件中的例子中
看出。
但是我又发现了一个新问题:
TSQLClientDataSet中无法直接执行不返回结果的SQL描述(即Execute);
例如:
TSQLClientDataSet1.Close;
TSQLClientDataSet.CommandText := 'Update T_User Set Password=''F''';
TSQLClientDataSet.Execute;
可是这样的代码在编译时居然都会出错!
Error:
No Available SQL Statement
真是!!!!!!!!!!!
 
多人接受答案了。
 
你就这么接受了???我也碰到过你这样的错误信息,但解决方法都不是上面所说的。
真搞不明白。
 

Similar threads

I
回复
0
查看
974
import
I
I
回复
0
查看
618
import
I
I
回复
0
查看
632
import
I
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部