在程序运行期设置QUERY控件的PARAMS(50分)

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

zhang

Unregistered / Unconfirmed
GUEST, unregistred user!
我有以下一段程序
query1.close;
query1.sql.Clear;
query1.SQL.Add('insert into student(name,address)');
query1.sql.add('values (:name,:address)');
query1.Params.CreateParam(ftstring,'name',ptinput);
query1.Params.CreateParam(ftstring,'address',ptinput);
query1.ParamByName('name').asstring:='zhang';
query1.ParamByName('address').asstring:='hangzhou';
query1.ExecSQL;
运行后,产生一个EDBEngineError异常'could not find object.',为什么?
 
改程序为:
query1.close;
query1.sql.Clear;
query1.Params.CreateParam(ftstring,'name',ptinput);
query1.Params.CreateParam(ftstring,'address',ptinput);
query1.SQL.Add('insert into student(name,address)');
query1.sql.add('values (:name,:address)');
query1.ParamByName('name').asstring:='zhang';
query1.ParamByName('address').asstring:='hangzhou';
query1.ExecSQL;
 
这样写:不要用名字!
query1.close;
query1.sql.Clear;
query1.SQL.Add('insert into student(name,address)');
query1.sql.add('values (:name,:address)');
query1.Params[0].asstring:='zhang';
query1.Params[1].asstring:='hangzhou';
query1.ExecSQL;
 
是否是这的错:
insert into "student"

先测试sql是否通

----瞎说
 
query1.sql.add('values (:name,:address)');
时已经创建了两个参数,不用再createparam了,
否则出现四个参数.
去掉两个createparam就是了,
用什么引用无所谓.
 
我试过MARY和NICKNAME的例子,的确可以解决问题,
但依NICKNAME所说似乎MARY的例子解释不通.
若我这样理解:
query1.sql.add('values (:name,:address)');
时先清除已有的参数,然后又创建两个参数.
不知这样理解对否,各位有何高见.
稍候将分数奉上.
 
once u modified the SQL,the system regenerated
the params automatically,so u can create the params
through modifing the SQl,btw,u must set the value of
the property 'paramcheck' is true.
 
多人接受答案了。
 
后退
顶部