在delphi7中我想实现具有多个相同属性的查询,应该怎么写代码?这是我写的代码,不过选出来的是或的关系
procedureTForm19.Button1Click(Sender:TObject);vari:integer;str1,str2,str3,sqlstr:stri...
procedure TForm19.Button1Click(Sender: TObject);vari:integer;str1,str2,str3,sqlstr:string;beginstr2:='';for i:=0 to GroupBox1.ControlCount-1 do begin if GroupBox1.Controls[i] is TCheckBox then begin if TCheckBox(GroupBox1.Controls[i]).Checked then begin str1:=str1+TCheckBox(GroupBox1.Controls[i]).Caption; end; end; if str1<>'' then begin str2:=str2+'(select '+str1+' from 书籍信息维护 group by '+str1+' having count('+str1+')>1)union'; str1:=''; end; end; str3:=copy(str2,1,length(str2)-5); for i:=0 to GroupBox1.ControlCount-1 do begin if GroupBox1.Controls[i] is TCheckBox then begin if TCheckBox(GroupBox1.Controls[i]).Checked then begin str1:=str1+TCheckBox(GroupBox1.Controls[i]).Caption; end; end; if str1<>'' then begin break; end; end;
close; form10.adoquery1.SQL.Clear; sqlstr:='select * from 书籍信息维护 where '+str1+' in ('+str3+')'; form10.adoquery1.SQL.Add(sqlstr); form10.adoquery1.Open;end;
从这个表中选择属性的。
忘大神给指导指导! 展开
close; form10.adoquery1.SQL.Clear; sqlstr:='select * from 书籍信息维护 where '+str1+' in ('+str3+')'; form10.adoquery1.SQL.Add(sqlstr); form10.adoquery1.Open;end;
从这个表中选择属性的。
忘大神给指导指导! 展开
1个回答
展开全部
对每脊橡明一个选中的项目,分别如轿生成一个条件,然后你可以根据需要,使用and或者or连接起来。
str_where := '';
for i := 0 to GroupBox1.ControlCount - 1 do
begin
if TCheckBox(GroupBox1.Controls[i]).Checked then
begin
if str_where <>樱告 '' then
str_where := ' and ';
str_where := str_where + TCheckBox(GroupBox1.Controls[i]).Caption + ' in ' + QuotedString(str_value);
end;
end;
str_where := '';
for i := 0 to GroupBox1.ControlCount - 1 do
begin
if TCheckBox(GroupBox1.Controls[i]).Checked then
begin
if str_where <>樱告 '' then
str_where := ' and ';
str_where := str_where + TCheckBox(GroupBox1.Controls[i]).Caption + ' in ' + QuotedString(str_value);
end;
end;
追问
str_where := str_where + TCheckBox(GroupBox1.Controls[i]).Caption + ' in ' + QuotedString(str_value);
这句话什么意思啊?麻烦你能给出完整代码吗?给你加分好吧!谢谢了!
追答
if str_where '' then
str_where := ' and ';
改成:
if str_where '' then
str_where := str_where + ' and ';
str_where := str_where + TCheckBox(GroupBox1.Controls[i]).Caption + ' in ' + QuotedString(str_value);
这句代码的意思是:
在where条件中增加一个条件,新增加的条件是xx in yy,其中xx是勾选的某项,yy是前面用户输入的数据,形如“('abc', 'efg', 'qwer')”。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询