如下代码
var
cd, s:string;
begin
if query1.Active then query1.Close();
query1.SQL.Clear ;
query1.Params.Clear;
s:= 'select sum(number) as num from ink.db where code like :cvr';
query1.SQL.Add( s );
query1.Params.CreateParam(ftstring,'cvr',ptInput);
query1.Params.ParamByName('cvr').Asstring :=cd;
query1.Open ;
end;
结果一运行就报错
project xx.exe raise exception class EDBEngineError with message '
could not find object. ' 感觉SQL好象很难使用,老出些不知是怎么回事的错误。
var
cd, s:string;
begin
if query1.Active then query1.Close();
query1.SQL.Clear ;
query1.Params.Clear;
s:= 'select sum(number) as num from ink.db where code like :cvr';
query1.SQL.Add( s );
query1.Params.CreateParam(ftstring,'cvr',ptInput);
query1.Params.ParamByName('cvr').Asstring :=cd;
query1.Open ;
end;
结果一运行就报错
project xx.exe raise exception class EDBEngineError with message '
could not find object. ' 感觉SQL好象很难使用,老出些不知是怎么回事的错误。
cd, s:string;
begin
cd:='%value%'
if query1.Active then query1.Close;
query1.SQL.Clear ;
s:= 'select sum(number) as num from ink.db where code like :cvr';
query1.SQL.Add( s );
query1.Params.ParamByName('cvr').Asstring :=''''+cd+'''';
query1.Open ;
end;變量cd怎麼沒有初始值,like 空 肯定會出問題的
like ''''+'%'+cd+'%'+''''先看看你的select sum(number) as num from ink.db where code like :cvr
語句有沒有問題,將:cvr賦一值試一下
如果是 oracle的话,就不需要 as
cd, s:string;
begin
if query1.Active then query1.Close();
query1.SQL.Clear ;
query1.Params.Clear;
s:= 'select sum(number) as num from ink.db where code like :cvr';
query1.SQL.Add( s );
// query1.Params.CreateParam(ftstring,'cvr',ptInput);
query1.Params.ParamByName('cvr').Asstring :=cd;
query1.Open ;
end;把上面那行注释掉就好了
to 秋水: SQL语句没错,我曾经在设计期用过这个语句,只不过将:cvr 变成了实参。to 贱客: 你的答案成功了,不再出错。只是我很不明白为什么。因为我在另一个语句中没用 creatparam 时就报错找不到 param , 但这回用了 creatparam 又错,请问到底什么时候用 creatparam, 什么时候又不该用呢?