我想在一个学生信息表中进行多条件查询,在窗体上有一个字段名组合框(Cbozdm)、一个关系符(Cbogxf)组合框和一个字段值组合框(Cbozdz),一个添加条件按钮(ButtonAdd),一个执行sqltj语句的按钮(ButtonRun)
程序中定义了i:integer; ii:integer;
sqltj:string; tjz:array[1..20] of string;
每点击一次ButtonAdd,就要完成sqltj的添加。
我是这样做的: 已经完成给i赋值为0 procedure TFrmCxtj.ButtonAddClick(Sender: TObject);
begin
i:=i+1;
if i=1 then
sqltj:=cbozdm.Text+cbogxf.Text+':tjz[i]'
else
sqltj:=sqltj+' AND '+cbozdm.Text+cbogxf.Text+':tjz[i]';
tjz[i]:=cbozdz.Text;
end; 完成条件添加后,点击buttonRun
procedure TFrmCxtj.ButtonRunClick(Sender: TObject);
begin
adoquery1.Active :=false;
adoquery1.SQL.clear;
adoquery1.sql.Add(sqltj);
for ii:=1 to i do
adoquery1.Parameters.ParamByName('tjz[ii]').Value:=tjz[ii];
adoquery1.Active :=true;
end;
运行结果出现如下错误提示:
Parameter对象被子不正确的定义,提供了不一致或不完整的信息。
请教高手们,应如何修改程序,或者可不可以采用其它方法达到上述目的?
不甚感激!
程序中定义了i:integer; ii:integer;
sqltj:string; tjz:array[1..20] of string;
每点击一次ButtonAdd,就要完成sqltj的添加。
我是这样做的: 已经完成给i赋值为0 procedure TFrmCxtj.ButtonAddClick(Sender: TObject);
begin
i:=i+1;
if i=1 then
sqltj:=cbozdm.Text+cbogxf.Text+':tjz[i]'
else
sqltj:=sqltj+' AND '+cbozdm.Text+cbogxf.Text+':tjz[i]';
tjz[i]:=cbozdz.Text;
end; 完成条件添加后,点击buttonRun
procedure TFrmCxtj.ButtonRunClick(Sender: TObject);
begin
adoquery1.Active :=false;
adoquery1.SQL.clear;
adoquery1.sql.Add(sqltj);
for ii:=1 to i do
adoquery1.Parameters.ParamByName('tjz[ii]').Value:=tjz[ii];
adoquery1.Active :=true;
end;
运行结果出现如下错误提示:
Parameter对象被子不正确的定义,提供了不一致或不完整的信息。
请教高手们,应如何修改程序,或者可不可以采用其它方法达到上述目的?
不甚感激!
解决方案 »
- SQL语句请教?
- 页面间数据传送和数据库操作问题
- 还有人记得quick report吗?快进来看看,帮顶有分呀!!!!
- ★★200分求解★★ DELPHI中调用SQL生成器
- 如何使stringgird像EXCEL一樣可以用打勾表示選定
- 请问installshield express for delphi 5可以为[用delphi 7作的软件]做安装软件么?
- 请问各位高手
- 调查!!!!调查!!!!调查!!!!请大家是做程序员的朋友写出自己的学历!
- 100分并追加分数问题!如何象fpe游戏修改软件那样直接访问、修改其他程序的指定偏移量领空?
- 进来看看!!!
- 三层应用服务器中如何对更新的数据进行回滚以及向客户端返回指定的信息?急!
- 请各位高手留足!帮我解决一下这个treeview的问题
//这句有问题吧。
procedure Tform1.Button1Click(Sender: TObject);
with adoquery1 do
begin
close;
sql.clear;
sql.add('select * from 表名 where 1=1');
if edit1.text<>''
sql.add('add 字段1 = '+''''+edit1.text+'''');
if edit2.text<>''
sql.add('add 字段2 = '+''''+edit2.text+'''');
open;
end;
adoquery1.Parameters.ParamByName('tjz[i]').Value:=tjz[ii];
begin
for ii:=1 to i do
begin
Active :=false;
SQL.clear;
sql.Add(sqltj);
Parameters.ParamByName('tjz[ii]').Value:=tjz[ii];
Active :=true;
end;
end;
begin
for ii:=1 to i do
begin
close;
SQL.clear;
sql.Add(sqltj);
Parameters.ParamByName('tjz[i]').Value:=tjz[ii];
open;
end;
end;