因为我在代码里不停的要入库查询而后操作。
这个OPEN和EXECSQL都把我搞晕了。这是我的代码
DATASOURCE1.DataSet:=ADOQUERY1;
adoquery1.Close;
adoquery1.sql.Clear;
adoquery1.SQL.Add('SELECT a.姓名....
adoquery1.SQL.Add('WHERE strcomp( 单号,:A_czr,1)=0 ');
adoquery1.Parameters.ParamByName('A_czr').Value:=edit24.Text;
adoquery1.open;
//adoquery1.execsql;问题1:这里用adoquery1.execsql;就会提示错误。我以前只知道查询一般用OPEN,更新一般用EXECSQL;
但是这里是查询,就一定不能用EXECSQL吗?还是我写的代码有问题。我执行以上的查询后,要再点击一个BUTTON2执行一个UPdate,我的代码这么写
DATASOURCE1.DataSet:=ADOQUERY1;
//先更新C表,除了保单号不能该,其他的都可以修改。
adoquery1.Close;
adoquery1.sql.Clear;
adoquery1.SQL.Add('update 业务信息表 set 卡号=:c1,');
adoquery1.SQL.Add('WHERE strcomp( 人ID,:temp1,1)=0 ');
adoquery1.Parameters.ParamByName('temp1').Value:=edit25.Text;
execsql;
问题2: 相当于我对查询的结果进行修改。但是提示错误Object or class type required 。改来改去,都不晓得问题在那里。
这个OPEN和EXECSQL都把我搞晕了。这是我的代码
DATASOURCE1.DataSet:=ADOQUERY1;
adoquery1.Close;
adoquery1.sql.Clear;
adoquery1.SQL.Add('SELECT a.姓名....
adoquery1.SQL.Add('WHERE strcomp( 单号,:A_czr,1)=0 ');
adoquery1.Parameters.ParamByName('A_czr').Value:=edit24.Text;
adoquery1.open;
//adoquery1.execsql;问题1:这里用adoquery1.execsql;就会提示错误。我以前只知道查询一般用OPEN,更新一般用EXECSQL;
但是这里是查询,就一定不能用EXECSQL吗?还是我写的代码有问题。我执行以上的查询后,要再点击一个BUTTON2执行一个UPdate,我的代码这么写
DATASOURCE1.DataSet:=ADOQUERY1;
//先更新C表,除了保单号不能该,其他的都可以修改。
adoquery1.Close;
adoquery1.sql.Clear;
adoquery1.SQL.Add('update 业务信息表 set 卡号=:c1,');
adoquery1.SQL.Add('WHERE strcomp( 人ID,:temp1,1)=0 ');
adoquery1.Parameters.ParamByName('temp1').Value:=edit25.Text;
execsql;
问题2: 相当于我对查询的结果进行修改。但是提示错误Object or class type required 。改来改去,都不晓得问题在那里。
问题1,你所说的没错,不过只是一部分,一般是有结果集返回的用open,无结果集返回的用execsql,印象中,哪怕是调用存储过程也可以这样用问题2,好像你还少了一个参数c1没设置
adoquery1.Close;
adoquery1.sql.Clear;
adoquery1.SQL.Add('update 业务信息表 set 卡号=:c1,');
adoquery1.SQL.Add('WHERE strcomp( 人ID,:temp1,1)=0 ');
adoquery1.Parameters.ParamByName('temp1').Value:=edit25.Text;
Parameters.ParamByName('c1').Value :=Trim(edit23.Text );
adoquery1.execsql;
问题2:其实我就想问,是不是执行了OPEN后,就不能执行这个adoquery1.execsql了。我的button1是执行查询,button2是对查询的结果进行更新。
对查询结果进行更新,更新完后adoquery.post提交,才能跟新到数据库里去
用insert,delete,update时,用execsql.
Object or class type required 需要对象或类类型。还是这么提示,查询和更新换用两个ADOQUERY也不行。
adoquery1.Close;
adoquery1.sql.Clear;
adoquery1.SQL.Add('update 业务信息表 set 卡号=:c1,');
adoquery1.SQL.Add('WHERE strcomp( 人ID,:temp1,1)=0 ');
adoquery1.Parameters.ParamByName('temp1').Value:=edit25.Text;
Parameters.ParamByName('c1').Value :=Trim(edit23.Text );
adoquery1.execsql;
我觉得代码这么写是没错吧。不加上这段,编译可以通过,加上后就提示错误Object or class type required 。
2、对于存储过程,返回数据集(游标)的使用Open,否则使用ExecProc;
open;有返回值用於select
ExecSQL用於Insert,update,delete