很急用的问题。请各位抓紧帮我解决好吗?! (200分)

  • 主题发起人 主题发起人 免费人
  • 开始时间 开始时间

免费人

Unregistered / Unconfirmed
GUEST, unregistred user!
for i:=0 to CheckListBox1.Items.Count-1 do
begin
if(CheckListBox1.Checked) then
Selectstr:=Selectstr+CheckListBox1.Items.Strings+',';
end;
if Selectstr = '' then
begin
showmessage('请选择已结帐的手牌!');
adoquery1.Close;
exit;
end;
if Selectstr <> '' then
begin
Selectstr :='('+copy(Selectstr,1,length(Selectstr)-1)+')';
end;
adoquery1.Close;
adoquery1.Filtered:=false;
adoquery1.Filter:='就餐房号='+Selectstr+'';
~~~~~~~~~~~~
adoquery1.Filtered:=true;
adoquery1.Open;
end;
划横线的地方,应该怎么写啊。象现在这么写,只能每次读去一个值。
我目前只想用过滤来写。用动态SQL的形式,我可以实现的。
 
我觉得用动态生成SQL的方式比较简单, 如果用Filter反而比较麻烦.
 
for i:=0 to CheckListBox1.Items.Count-1 do
begin
if(CheckListBox1.Checked) then
Selectstr:=Selectstr+'就餐房号='''+CheckListBox1.Items.Strings+''' or';
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
end;
if Selectstr = '' then
begin
showmessage('请选择已结帐的手牌!');
adoquery1.Close;
exit;
end;
if Selectstr <> '' then
begin
Selectstr :=copy(Selectstr,1,length(Selectstr)-2);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
end;
adoquery1.Close;
adoquery1.Filtered:=false;
adoquery1.Filter:=Selectstr;
~~~~~~~~~~~~
adoquery1.Filtered:=true;
adoquery1.Open;
end;
 
如果数据量大的话,用Filter会影响一定性能。还是用动态SQL吧。
 
同意楼上。。
 
:shangcm, 的办法也不行啊。还是出错,但是选择一个的时候可以的。
多个就还是不行了。

大家多帮帮忙了。分可以在加的,无所谓的。
 
用SQL 写
str := '无意义房号,';
for i := 0 to 房号总数 - 1
str := str + ',' + 房号;
找出已经结帐的房号记录后,用SQL查
sql := 'select * from 表 where 房号字段名 in( ' + str + ')';
 
还是shangcm的,再试一下!

for i:=0 to CheckListBox1.Items.Count-1 do
begin
if(CheckListBox1.Checked) then
Selectstr:=Selectstr+'就餐房号='''+CheckListBox1.Items.Strings+''' or ';
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~§~~~~
end;
if Selectstr = '' then
begin
showmessage('请选择已结帐的手牌!');
adoquery1.Close;
exit;
end;
if Selectstr <> '' then
begin
Selectstr :=copy(Selectstr,1,length(Selectstr)-3);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
end;
adoquery1.Close;
adoquery1.Filtered:=false;
adoquery1.Filter:=Selectstr;
~~~~~~~~~~~~
adoquery1.Filtered:=true;
adoquery1.Open;
end;
 
多人接受答案了。
 
后退
顶部